Xilinx FGPA的多重配置功能(1)

转至 https://mp.weixin.qq.com/s?__biz=MzI4NjQzNTUyOA==&mid=2247484083&idx=1&sn=277b084892660d97dc46567e1c24e5e7&chksm=ebddb314dcaa3a022f96bc50de3119d5d0b6c04e8c5a3e7be3829674a7c79c37d20f610a7367&mpshare=1&scene=1&srcid=1222P0kMWIWcEqgPwaUZK798##

还有一篇也不错:https://baijiahao.baidu.com/s?id=1570797695648564&wfr=spider&for=pc

如今,随着FPGA工艺的进步,性能提升和成本缩减均得到极大的改善,这使得FPGA芯片的使用越来越广泛。因此为了达到降低系统维护和升级的成本,通常我们都会通过网络传送最新的下载文件,让用户在现场直接将文件下载到FPGA中进行远程的升级处理。然而,一旦下载文件是错的,那么系统轻则功能出错,重则直接死机不工作。为了防止这种情况发生给用户带来重大影响或者损失,Xilinx提供了FPGA的多重配置操作功能。

1.何为多重配置

FPGA多重配置允许动态进行多个下载文件之间的切换,当引导配置过程中检测到出错时,FPGA会触发一个回退标志确保一个已知的好的文件可以被加载进来。具体如下图所示:

简而言之,就是你的.mcs文件里包含有两个或更多的下载文件,然后地址0的位置开始存放一个可用的下载文件(多数是升级前那个旧的文件),后面的地址(ADDR_1)存放你将要更新的文件。当下载时,FPGA会先从ADDR_1读取更新的文件,若这个过程发生错误的话就会回到地址0,读取之前的文件,确保设备仍能正常工作。

2.多重配置的使用

Xilinx的多重配置功能除了更新文件外,也可以进行多任务的切换调度处理。基于这个功能,只要Flash够大,是可以存放好多个下载文件的。当遇到FPGA资源较小,且多个功能之间是独立不干扰的话,有时候可以通过外部控制,在需要不同功能时,进行文件切换下载。

比如一个设备需要做到ABCD四个功能,且ABCD各自应用于不同场合,之间没有数据往来,互不干扰。如果这时FPGA的资源只能够实现ABCD中的一种功能或者两种,那么我们就可以做出四个不同的bit文件分别实现ABCD四种功能并合并成一个.mcs文件下载到Flash中。当在需要A功能的场合,我们可以使用按键或者上位机进行配置,让FPGA加载A功能的下载文件,实现A功能。同理,在只需要BCD的场合也是这样,如此可以大大节省FPGA的资源。

3.多重配置的流程

FPGA内部有一个ICAP核,可对程序加载进行预配置,预配置处理可在.v代码中处理并随之生成.bit文件。如果不在代码处理,则为默认配置。Xilinx FPGA的多重配置流程如下图所示,具体可参考官方文档 " xapp1247 " 。

其中可用文件存放在起始地址为0处;更新文件存放在起始地址为A1处。

  • 上电后,FPGA会进入Flash的0地址,检测配置寄存器中的WBSTAR和IPROG指令(.v里进行配置)。

  • 如果WBSTAR地址指向A1,且IPROG的指令正确,FPGA会跳到A1处读取并加载文件。

  • 如果A1处的WBSTAR地址为0,且没有IPROG指令,则加载此处的文件。

  • 如果在加载更新文件过程中发生错误,FPGA便会跳到地址0处,重新加载确保可用的那个文件。

    IPROG的指令表如下所示:

对于IPROG的指令配置,必须按照这个顺序进行,一旦数据不对或者顺序不对,FPGA便不会对更新文件进行加载。

3.结语

在实际使用中FPGA的多重加载是非常有帮助的,灵活的使用能够避免很多现场的尴尬,也节省了很多后期技术支持的成本。下一节将介绍如何进行代码的多重配置处理与使用。

  • 3
    点赞
  • 36
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值