Xilinx远程更新之Flash加载时间/Flash区域划分技巧

一  Flash加载时间

        由于项目中需要一次性对多片不同的FPGA进行在线升级,在最初搭建底层时为了方便(偷懒)统一将FLASH SPI时钟约束成50MHz的时钟,这也为后期调试埋了一颗定时炸弹。

        这里需要总结的一点就是,Xilinx FPGA并不支持任何大小的FLASH SPI时钟约束,在Vivado中可以查询当前FPGA型号支持的时钟大小。以Ultrascale+为例,仅支持以下SPI时钟频率:

         当我对FLASH SPI速率约束设置为50MHz时,FPGA并不能识别该值,导致的结果是使用默认的2.7MHz这个最小的加载速率,最后反应在板卡上,会发现程序启动的特别慢,慢到令人发指。如果系统中使用PCIe这样的PC端时钟,很有可能导致PC端启动后,板卡未启动,导致PCIe无法建链成功,最终导致整个系统无法正常工作。

        这里我们可以对加载时间进行一个简单计算:

(1)例如我们的Update区域划分了35MB的地址空间,即存储35MB的bin文件,如果加载速率为2.7MHz,Quad模式:

        35*1024*1024*8 / (4*2.7*1000*1000) = 27s

(2)如果加载速率为36.4MHz,Quad模式:

        35*1024*1024*8 / (4*36.4*1000*1000) = 2s

        从理论计算结果就可以发现,如果加载速率约束不成功,加载时间的差距还是非常之大。

二  Flash区域划分技巧

        在对FPGA进行约束时,通常会针对bit文件的大小进行压缩,这里就是为了控制烧写文件的大小。通过查阅官方手册可以发现,任何型号的Xilinx FPGA编译生成的bit文件的大小都有上限:

        从手册上,我们可以按照bit文件的最大值进行区域划分,例如VU065,bit文件最大200713824bits,约等于24MB。那么我们在制作Golden和UPdate区域时,可以直接将两片区域划分成24MB,总共48MB左右的FLASH空间即可完成在线升级功能,后期无论程序如何变动,都不会超过这个空间大小。当然这样划分充足的空间的前提是,FLASH片子够大!制作multiboot去反复验证的过程实在太痛苦了,一次性将空间划分到位,减轻痛苦!!!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

扣脑壳的FPGAer

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值