关于ISE中的Bitstream Compression
Xilinx ISE生成bit文件的属性页里有Enable BitStream Compression的选项,比如V5SX50T,原本生成的bit文件大约2.38MB,选上这个之后生成的文件是1.32MB,一下压缩了那么多。
疑问:这种压缩方法压缩比率是多少?压缩之后是FPGA自己来解压缩并完成加载,对用户透明呢,还是用户必须自己解压缩?
回答:http://www.xilinx.com/support/answers/16996.htm
原来,这种“压缩”方法并不是真正的压缩了bit文件。它是基于MultiFrame Writes,意思是说如果有配置帧(帧的概念参见上文)有相同的数据,那么它们可以使用同一个命令写入。这样,也就回答了另一个问题,它的压缩比取决于ISE工程设计本身。如果你只使用了FPGA很小的一部分资源,压缩比率很达到很高;反之,使用了FPGA绝大多数资源,那么基本没有压缩空间了。
具体的细节看这个上面那个链接即可。
因此,用户可以不用关心怎么实现的“压缩”,放心用就是了。我把上面生成的1.32MB的bit文件加载V5SX50T,工作正常。
存在一个问题是使用了EDK,在ISE中Update Bitstream,如果选择了Enable BitStream Compression,会报错。
http://www.xilinx.com/support/answers/22364.htm
这个问答页中说,Xilinx Data2Mem is currently unable to update encrypted or compressed bitstreams.(一一b,很典型的Xilinx作风。。。。。)
它给出了解决方法。
简单的说,就是ISE中不去点击Update Bitstream,也不去点击Generate Programming File。
在ISE的Tcl Shell中输入如下命令:
bitgen.exe -w -g compress -bd .\\processor\\src\\executable.elf tag ppc440_0 test.ncd mydownload.bit test.pcf
如果语法没有错误,会弹出一个DOS对话框,光标闪啊闪,然后经过耐心等待(反正时间挺长的),然后会在Tcl Shell中显示:
Creating bit map...
Saving bit stream in "mydownload.bit".
Bitstream compression saved 25277472 bits.
Bitstream generation is complete.
%
现在,解释一下bitgen.exe后面几个参数。可以在Shell中敲入bitgen –help virtex5 查看此命令的帮助内容,virtex5可以换成其它architecture,比如virtex4,spartan3等。-bd表示更新BlockRAM的内容,从executable.elf中,命令中的.\\processor\\src\\表示工程PPC的elf文件放在ISE工程下的processor\src目录里。ppc440_0是使用的CPU类型,可以打开ISE工程目录下的edkBmmFile.bmm文件,ADDRESS_MAP之后的字段就是。test.ncd,test是ISE工程名字,根据用户自己的工程名修改。mydowload.bit是生成的bit文件的名字,因此可以随意选取。test.pcf,test也是ISE工程名字。
自做自受 2016-1-29 21:12
用户136313 2015-1-20 20:35