如今,随着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便不会对更新文件进行加载。
4.结语
在实际使用中fpga的多重加载是非常有帮助的,灵活的使用能够避免很多现场的尴尬,也节省了很多后期技术支持的成本。下一节将介绍如何进行代码的多重配置处理与使用。
苹果、三星升级致功能失调,被开巨额罚单
如何又快又好的梳理和利用验证feature文档
电瓶修复—电池的保养及使用12问(连载5)
让低功耗 MSP430 的功耗更低 — 第1部分
走进全球一流大飞机制造工厂——德国空客汉堡工厂
FPGA的多重加载实际运用详解
电瓶修复技术:锂电池的内阻重要吗
守护企业数据安全,华为云数据库 GaussDB(for MySQL)有绝招
生物电阻抗分析监测疾病的临床状态和诊断
氢能产业链解析——储氢:液态储氢技术
I/O接口保护ESD静电保护二极管
平方律变换器电路
国产无线蓝牙耳机什么牌子质量好?国产蓝牙耳机推荐
自动驾驶中的传感器融合
无源晶体振荡器的电器参数
融资过亿,人形机器人的春天已到?
英语四六级听力发射无线广播系统解决方案
焊锡膏助焊剂中的黏合剂和溶剂的作用是什么?
LG G6 再曝光!圆角接近零边框屏幕成大亮点!
PCIe物理层接口定义了物理层中的,媒介层和物理编码子层之间的统一接口