#fpga #xilinx #bitstream #format #parser #byte #set

bin+lib gaffe-xilinx

用于 Xilinx 位流格式的解析和操作工具

1 个不稳定版本

使用旧的 Rust 2015

0.1.0 2018 年 6 月 8 日

#5#xilinx

Apache-2.0

95KB
2.5K SLoC

gaffe-xilinx

Rust 库,用于解析和操作 Xilinx 位流格式。

Build Status

xc7-tool 使用说明

xc7-tool 是一个用于操作 7 系列位流的多功能工具。如果您主要想查看位流的内容,您可能会发现 xc7-tool packetsxc7-tool config_mem_frames 有用。命令及其选项通过 --help 进行文档化。

请注意,将位流解析到配置中的子命令需要设备描述文件。这是一个包含序列化 DeviceDescription 的 YAML 文件。该 repo 中尚未包含此类文件。可以通过 xc7-tool device_description 从调试位流生成一个。位流内的逻辑设计无关紧要。唯一的要求是它必须使用 Vivado 的 BITSTREAM.GENERAL.DEBUGBITSTREAM 属性设置为 YES 构建。

库使用说明

Cargo.toml

[dependencies]
gaffe-xilinx = "0.1"

包含库

extern crate gaffe-xilinx;

解析 7 系列位流到配置内存帧的示例

use gaffe_xilinx::from_bytes::FromBytes;
use ::gaffe-xilinx::xc7 as xc7;

let mut device_file = std::fs::File::open(device_file)?;
let device_description : ::xc7::DeviceDefinition = ::serde_yaml::from_reader(device_file)?;

let mut bitstream = std::io::BufReader::new(std::fs::File::open(bitstream)?);
let bitstream = ::xc7::Bitstream::from_bytes(&mut bitstream)?;

let configuration = ::xc7::Configuration::from_bitstream_for_device(&bitstream, &device_description)?;
println!("{:#?}", configuration)

支持的设备系列

当前开发主要集中在 7 系列上(Spartan7,Artix7,Kintex7)。Virtex2 及以后的系列都使用类似的位流格式和配置协议。如果您对这些其他系列感兴趣,请加入 Freenode IRC 上的 ##openfpga(是的,两个 #),并让我们知道。

依赖关系

~7–16MB
~196K SLoC