DFX设计中Bitstream文件详解

dfx设计中有4类bitstream文件,包括:
full configuration bitstreams
partialbitstreams
blanking bitstreams
clearingbitstreams
full configuration bitstreams
fullconfiguration bitstreams对应的是静态区加动态区的完整设计,因此,该文件与传统的非dfx工程生成的bitstream从文件格式到文件结构均是一致的。同时使用方法也是一致的。另外,一些特征如对bitstream文件进行加密和压缩也是支持的。另一方面,这里的rp可以是黑盒子,即rp没有任何功能,这样可以最大程度缩减bitstream大小,如果再结合bitstream的压缩特性,那么就可以进一步提升fpga初始配置时间。fullconfiguration bitstreams的加载过程如下图所示。加载完成且验证通过,done信号就会抬高,fpga就进入用户模式,图中绿色标记。
partial bitstreams
当full configuration bitstreams加载完成之后,就可以根据需要加载partialbitstreams已切换动态区的功能,这正是dfx的本质。partialbitstream有着和full configuration bitstreams相同的文件结构,不同之处在于partial bitstream仅针对fpga指定区域也就是动态区。此外,针对dfx,partial bitstreams还具有帧crc检测和自动初始化(加载partial bitstream后动态区可以进入已知状态)功能,同样也支持加密和压缩功能。partial bitstream文件的大小和动态区的大小是成正比的,例如:rp大小是整个fpga大小的20%,那么基本上partial bitstream的大小也是full configuration bitstream大小的20%。partial bitstream是独立的,包含了地址、头、尾等具体信息,需要采用从模式加载如jtag,slave serial或者slave selectmap,icap,pcap(针对zynq7000 soc)和mcap(针对ultrascale和ultrascale+)。partial bitstream可通过命令write_bitstream自动生成,也就是在生成fullconfiguration bitstream的时候会自动生成partial bitstream文件,而无需额外操作。partial bitstream的文件名也是有特定的规律的,假如
fullconfiguration bitstream文件为
top_first.bit,
rp对应的pblock名字为pblock_red,
那么partial bitstream文件名就为
top_first_pblock_red_partial.bit。
当fpga进入用户模式时就可以加载partial bitstream文件,如下图所示。对于ultrascale,在加载partialbitstream之前先要加载clearing bitstream,这时done信号为低,加载完clearing bitstream之后,done信号依然保持低电平,之后加载partial bitstream,完成之后done信号才会抬高。
blankingbitstream
blankingbitstream是一种特定的partial bitstream,它是在初始configuration(静态区+完整动态区)的基础上,将静态区替换为黑盒子,同时将相应i/o插入lut,这被称为会盒子(greybox,注意和blackbox是不同的)如下图所示。尽管这时动态区的逻辑功能已经被移除,但需要注意如果静态区要从动态区穿过也就是静态区使用了动态区的一些布线资源,那么这些布线资源仍然会被保留。
在vivado图形界面方式下,可以很容易将动态区配置为greybox,如下图所示。如果采用tcl脚本则需要注意使用两次update_design命令,前者将动态区替换为blackbox,后者对动态区相应i/o插入lut。
当对输出端口插入lut时,默认情况下lut输出为低电平,但可通过如下tcl脚本修改其输出值,这里用到了属性hd.partpin_tieoff。
clearing bitstreams
clearingbitstreams只是针对ultrascale芯片(不包括ultrascale+芯片),这是器件结构本身需求所决定的。clearing bitstreams本身并不是partialbitstreams,它只包含了动态区小于10%的frame,因此其大小也就小于对应动态partial bitstreams的10%。它需要和相应的partial bitstream一起使用。例如设计中有一个rp,该rp下有两个rm,分别为rm1和rm2,那么就会生成两个clearing bitstream文件:
rm1_rp1_partial_clear.bit 
rm2_rp1_partial_clear.bit
也会生成两个partial bitstream文件:
rm1_rp1_partial.bit
rm2_rp1_partial.bit
当由rm1切换到rm2时,先加载rm1_rp1_partial_clear.bit,紧随其后加载rm2_rp1_partial.bit。反之,由rm2切换到rm1时,需要先加载rm2_rp1_partial_clear.bit,再加载rm1_rp1_partial.bit。工具会自动生成clearingbitstream文件,它和partial bitstream文件的名字不同之处是在结尾多了“_clear”。
copyright @ fpga技术驿站 转载事宜请私信 | 获得授权后方可转载        


“碳中和”元年来了,南京精利锋激光为何能自信满满?
如何实现西门子S7-300PLC的远程上下载
小米平板4Plus体验 更像是一款放大版的缺少通话功能的智能手机
AI图像识别技术的原理解析
地物光谱仪有什么功能作用?
DFX设计中Bitstream文件详解
如何收敛高速ADC时序
高效输入/输出双路运算放大器—LTC6 247
阿里和上汽即将推出的这款互联网汽车有戏吗
Apollo智慧出行集团公布2022年中期业绩
弄懂3G的真实速度
PLC远程控制网关:实现智能化生产的关键
无功补偿方案的分析
你真的理解自发产生的电荷浓度吗?
人工智能将为粤港澳大湾区做些什么
精密测量,海伯森高端智能传感器引领“机器视觉”
软件功能全面升级,2.0蓝牙网关的升级功能介绍
应用前沿 | 浩亭Han®匠心传承 连接你的无限可能
贴片电阻的阻值识别方法是怎样的
智能家居入口开战 平台化成关键点