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就进入用户模式,图中绿色标记。

dfx设计

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信号才会抬高。

dfx设计

Blankingbitstream

Blankingbitstream是一种特定的partial bitstream,它是在初始Configuration(静态区+完整动态区)的基础上,将静态区替换为黑盒子,同时将相应I/O插入LUT,这被称为会盒子(Greybox,注意和Blackbox是不同的)如下图所示。尽管这时动态区的逻辑功能已经被移除,但需要注意如果静态区要从动态区穿过也就是静态区使用了动态区的一些布线资源,那么这些布线资源仍然会被保留。

dfx设计

在Vivado图形界面方式下,可以很容易将动态区配置为Greybox,如下图所示。如果采用Tcl脚本则需要注意使用两次update_design命令,前者将动态区替换为Blackbox,后者对动态区相应I/O插入LUT。

dfx设计

dfx设计

当对输出端口插入LUT时,默认情况下LUT输出为低电平,但可通过如下Tcl脚本修改其输出值,这里用到了属性HD.PARTPIN_TIEOFF。

dfx设计

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技术驿站 转载事宜请私信 | 获得授权后方可转载        

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分