请问FPGA的multiboot (多重启动/多重配置) 的速度有多快?
时间:10-02
整理:3721RD
点击:
最近在研究Xilinx FPGA 的 Multiboot 功能 和 partial reconfiguration (局部重配置) 流程,一头雾水。
假如我的design的操作流程有两个不能同时执行的task A 和 task B, 分别对应硬件上的 Block A 和 Block B。
由于Block A和BlockB 加在一起资源占用已经超出FPGA芯片的范围,所以想到用Multiboot技术:先导入Block A的bitstream,等到task A结束时,再导入Block B 的bitstream。我打算把这些bitstream都保存在开发板的platform flash中。
具体算法如下:
for iteration=1:1000
task_A; 花费300次Bram读
reconfigure1; (?) 我希望越短越好
task_B; 花费600次Bram读写
reconfigure2; (?) 我希望越短越好
end
我的整个design工作在一个比较低的时钟频率1MHz, 所以task_A和task_B分别消耗300us和600us (感觉是挺长的时间吧)。
于是总的时间是1000x(300+reconfigure_time+600)。这里reconfigure_time是这些bitstream从flash烧到FPGA的时间。
请问有经验的高手,platform flash中的bistream配置FPGA的速度一般有多快?(估计数量级即可,比如我用Virtex-6的片子)
如果reconfigure_time 比 1ms 要小,我觉得这个时间上的代价还是值得的。请问高手们怎么看?
假如我的design的操作流程有两个不能同时执行的task A 和 task B, 分别对应硬件上的 Block A 和 Block B。
由于Block A和BlockB 加在一起资源占用已经超出FPGA芯片的范围,所以想到用Multiboot技术:先导入Block A的bitstream,等到task A结束时,再导入Block B 的bitstream。我打算把这些bitstream都保存在开发板的platform flash中。
具体算法如下:
for iteration=1:1000
task_A; 花费300次Bram读
reconfigure1; (?) 我希望越短越好
task_B; 花费600次Bram读写
reconfigure2; (?) 我希望越短越好
end
我的整个design工作在一个比较低的时钟频率1MHz, 所以task_A和task_B分别消耗300us和600us (感觉是挺长的时间吧)。
于是总的时间是1000x(300+reconfigure_time+600)。这里reconfigure_time是这些bitstream从flash烧到FPGA的时间。
请问有经验的高手,platform flash中的bistream配置FPGA的速度一般有多快?(估计数量级即可,比如我用Virtex-6的片子)
如果reconfigure_time 比 1ms 要小,我觉得这个时间上的代价还是值得的。请问高手们怎么看?
又沉底了。
我问得啰嗦了,不用管什么multiboot了。
其实问题就是:平常大家把bitstream存到flash里,然后每次打开电源,你的bitstream就会自动烧到FPGA上,对于一些小design,肉眼感觉是瞬间完成的。请问这个过程的速度到底有多快呢?
1.同样的型号的FPGA芯片,配置文件的大小是一样的
2.可以使用压缩选项,将配置文件减小,但是不同的程序,压缩的幅度是不一样的。如果芯片资源利用较多,压缩几乎不起作用
3.FPGA的boot时间取决于从外部flash读取配置文件的时间。想要减小配置时间,可以增大时钟频率(在flash可承受的范围之内),bpi的方式等
多谢大侠指点。
请问改用什么办法来测量这个时间呢?
请问改用什么办法来测量这个时间呢?
简单一点,可以在外部用示波器量一下。从开始读外部flash的时刻,到done拉高的时刻,即是整个的配置时间.