FPGA实现串口升级及MultiBoot(二)FPGA启动流程

这个系列开篇肯定要先了解FPGA的启动流程,试想一下:我想实现MultiBoot,那么我应该在什么时候开始升级,升级失败后FPGA进行了哪些操作,以及怎么回到Golden区?

还有一个问题,就是我硬件打板回来,烧写进FLASH后起不来,这应该怎么排查?

缩略词索引:

以上所有这些的前提就是理解FPGA启动流程。

关于Vertex7系列详见《UG470》表2-7和表2-8。

7系列FPGA其实对于上电时序要求不是那么高,但是对于电源域的要求比较高,下图就是FPGA的上电时序要求。

图4中Tpor的值和具体器件有关,大概的范围是10~50ms,若是从模式配置,建议按照60ms设计,主模式配置,建议按照5ms来考虑。

按照图0中步骤,经历过上面两个步骤后,接下来就是进行配置模式采集。配置模式采集也很好理解,就是当INIT_B信号拉高后读取M2,M1,M0管脚的电平状态,这几个管脚的上下拉是决定FPGA的启动模式,详细设计如图6所示。

因为INIT_B拉高后,才进行模式采样,所以可以通过外部强制把INIT_B拉低后,进行延时再配置。如果加载模式为Master模式,FPGA很快就会输出有效的CCLK。此时,FPGA开始在配置时钟的上升沿对配置数据进行采样,当然也可以通过设置,使用下降沿来采集配置数据。

当和外设进行通信的时候,我们一般都会在协议里增加头校验、尾校验以及数据校验。对于FPGA读取FLASH中配置数据一样(还没到读取用户数据流),这个头校验就叫“同步头”,它是一段特殊的同步字。“同步头”的作用和协议头校验一样帮助FPGA确定正确的数据位置,同步字之前的配置数据都会被FPGA忽略,也就是FPGA仅仅在同步化之后才正式开始接收配置数据。同步字说明详见图7。

为了确保位流和FPGA芯片匹配,在读取到同步字后还会检测配置位流中的器件ID和目标ID是否一致。ID是一个固定的32位的数据,基于IEEEStd1149.1标准。7系列FPGA的ID已经在UG470的Table1-1中列出,下图是截取的一部分,其他详见UG470。

32位的ID中包含了28位的特征值和4位掩码。特征值包括厂商信息,器件族,器件规模等。如果器件ID和位流配置中不匹配,FPGA会将内部寄存器的第一位ID_Err置高,软件也会显示错误信息,同时停止后续位流加载。

在第四步和第五步顺利通过后,FPGA开始加载配置数据。

7系列FPGA配置文件以帧的形式排列。帧是7系列FPGA配置内存空间中最小的可寻址段,因此所有操作都必须作用于整个配置帧。每帧由101个32位组成。

因为后续我们操作基本都是通过脚本或者GUI进行配置的,这部分内容实际我们目前也用不上,所以有兴趣的可以去看看UG470中第五章关于这部分详细介绍。

配置文件载入完成后,为了验证数据的正确性,FPGA还自动设置了CRC校验(CRC是同步进行),导入完成后会将计算的CRC值与期望CRC值进行比较。如果CRC校验不正确,FPGA会自动把INIT-B拉低,放弃这次配置。用户必须把PROG-B引脚拉低,才能进行重新配置。默认情况下,生成的配置位流会自动添加CRC校验,但这个不是必须的,可以通过位流设置功能取消CRC检验,但是取消CRC校验会存在因导入的错误位流而引起功能异常甚至损坏器件。

前面几步顺利完成后就到最后一步了,FPGA进入启动序列流程。启动序列包含8个顺序启动状态(0-7)操作,其中启动状态0对用户是不透明的,Phase1-Phase7如图10所示。

启动序列事件的默认顺序为先释放DONE引脚,然后激活I/O,最后启动写使能(详见UG470中Table5-11默认启动顺序,下面图12中)。实际使用中,可以通过BitGen参数对启动顺序进行设置来满足不同的需求。也就是上图中除了步骤7以外,其余几个步骤启动顺序是用户可编程的,并且启动顺序中的内容也是可编辑的,如是否等待MMCM锁定或者是否等待DCI阻抗匹配这些都是可配置的,以上两个可选配置。

但是,对于1-全局使能GWE(使能RAM和Flip-Flops所有同步单元工作)置位、2-取消全局三态GTS,激活输出管脚这两步时强制执行的,否则对于1不执行的话,FPGA无法正常工作;对于2不执行则FPGA所有引脚将功能失效。

释放DONE管脚,FPGA将取消之前按照PUDC_B引脚设置的引脚默认状态。DONE引脚是开漏输出信号,因此芯片外部需要使用一个330Ω上拉,当器件释放DONE管脚,DONE管脚的电平变为高电平。上面的详细说明如图11所示:

THE END
1.多平台FPGA工程快速移植与构建腾讯云开发者社区作为一名FPGA工程师,经常需要在多个FPGA设备之间移植项目,核心的问题是IP的管理和移植,今天通过安装和使用 FuseSoC 在多个 AMD FPGA 之间移植一个简单的项目。从 AMD Spartan? 7 更改为 AMD Artix? 7 设备,然后是 AMD Kintex? UltraSacle?。 https://cloud.tencent.com/developer/article/2476014
2.芯作者例如,针对Cisco Unified Industrial Wireless Software的命令注入漏洞和Google Chrome的资源管理错误漏洞,厂商已发布升级补丁以修复漏洞。0day漏洞利用增加根据FBI、NSA等网络安全机构的报告,2023年恶意网络人员利用更多的0day漏洞攻陷企业网络。漏洞修复和防护措施针对已披露的漏洞,相关厂商和网络安全机构积极发布修复补丁和防护https://me.csdn.net/follow/QQ_778132974
3.CPLDFPGA在线升级程序.docCPLDFPGA在线升级程序 用CPU配置Altera公司的FPGA 一. 概述 目前很多产品都广泛用了FPGA,虽然品种不同,但编程方式几乎都一样:利用专用的EPROM对FPGA进行配置。专用的EPROM价格不便宜,且大不跟上都是一次性OPT方式编程。一旦更改FPGA设计,代价不小。 为了进一步降低产品的成本和升级成本,可以考虑利用板上现有CPU子系统https://max.book118.com/html/2016/0920/55247186.shtm
4.一种基于FPGA的在线升级方案2020 文章编号: 2096鄄1618(2020)05鄄0493鄄06 一种基于 FPGA 的在线升级方案 万摇 垚,摇 李摇 蠡 ( 成都信息工程大学通信工程学院,四川 成都 610225) 摇摇 摘要:一般对 FPGA 程序升级,需要使用下载器通过 JTAG 接口与 FPGA 连接,在一些不方便开盖的环境下,此 种升级方案非常困难. 基于 XILINX 公司的 XChttp://xb.cuit.edu.cn/OA/pdfdow.aspx?Sid=202005002
5.通过MCU实现AlteraFPGA在线升级.docx通过MCU实现Altera-FPGA在线升级 通过MCU实现Altera FPGA在线升级一.问题背景 在实际工程应用中,我们时常会遇到为解决某个老产品的BUG,须要在工程现场更新设备的FPGA代码,或者参与电信测试时须要现场升了容量不一样,其他方面几乎完全相同,在引脚上也完全兼容https://www.taodocs.com/p-725939679.html
6.如何实现FPGA通过串口在线升级FPGACPLDASIC论坛能不能通过串口给FPGA发送mcs文件的数据比特,FPGA把数据比特缓存起来,然后再将缓存的数据比特写入到FLASH里?这样断电在重启后,FPGA从Flash里读取程序就得到更新?有人试过吗? 0 已退回5积分 2016-4-2 18:08:30 评论 淘帖 邀请回答 jameswu2013 相关推荐 ? FPGA在线升级 6040 ? 请问有人在安卓https://bbs.elecfans.com/jishu_576452_1_1.html
7.埃科光电取得FPGA在线升级方法专利,实现方便稳定的FPGA在线升级功能金融界2023年11月21日消息,据国家知识产权局公告,合肥埃科光电科技股份有限公司取得一项名为“一种基于NiosII软核的FPGA在线升级方法”,授权公告号CN112148341B,申请日期为2020年10月。 专利摘要显示,本发明公开了一种基于NiosII软核的FPGA在线升级方法,其步骤是,1、FPGA上运行NiosII软核,用于响应在线升级指令,并读写https://finance.jrj.com.cn/2023/11/21202038513326.shtml
8.一种基于FPGA的在线程序升级方案AET摘要: 介绍了一种基于XILINX FPGA的在线程序升级方案,该方案不需要额外增加器件,在不改变硬件状态的前提下,实现产品的软件功能升级。由于对配置芯片(PROM)的所有操作均由FPGA的内部逻辑实现,故此方案具有良好的移植性和扩展性。 关键词: FPGA 在线升级 JTAG http://www.chinaaet.com/article/3000062220
9.基于DSP28335的FPGA软件在线升级方法在理论分析的基础上,给出了所提方法的硬件原理图和软件实现流程。大量实验结果表明,该方法具有较好的可行性、稳定性和可靠性,可以实现DSP+FPGA架构下不拆产品就可升级FPGA软件的目的。 引用:2次下载:278次 下载PDF版下载EPUB版 关键词 DSPFPGA在线升级配置PROMhttps://read.cnki.net/web/Journal/Article/GWDZ202403004.html
10.ARM在线升级FPGA程序方法(逆向工程)公司有款产品采用FPGA做处理器,需要远程升级—— 不使用烧写器,通过网络对其升级。领导提议既然程序是存储在外部存储器上的,那么能否通过EPCS4与ARMSPI总线通信连接刷新FPGA程序呢?于是就有了下文的实践。 要实现该功能有几种方式: 1. 解析编译出的FPGA下载文件jic、pof,将解析后的内容烧录到EPCS4中。但是否这两种https://news.eda365.com/tech/qrskaifa/120010017061479.html
11.各位大神fpga远程在线升级怎么做呀求指导谢谢您需要登录才可以下载或查看,没有账号?注册 x 各位大神 fpga远程在线升级怎么做呀 求指导谢谢 https://bbs.eetop.cn/thread-763842-1-1.html
12.Re:FPGA的在线升级方案求证FPGA的在线升级方案求证 Abonnieren Mehr Aktionen H1123 Einsteiger ?04-11-2021 02:41 AM 3.337Aufrufe 已知通过解析SVF文件可以利用MCU模拟JTAG时序烧写sof文件到FPGA中。 然而大多数的CPLD因为内部自带EEPROM等模块 ,所以可以通过JTAG直接完成程序的固化。但是FPGA如果需要通过JTAG固化程序,则需要https://community.intel.com/t5/Intel-Quartus-Prime-Software/FPGA%E7%9A%84%E5%9C%A8%E7%BA%BF%E5%8D%87%E7%BA%A7%E6%96%B9%E6%A1%88%E6%B1%82%E8%AF%81/m-p/1273451/highlight/true?profile.language=de
13.非常好的FPGA量产烧程序及在线更新程序方法(amobbs.com阿莫电子结合图6的实例,对FPGA在线升级作一具体描述。图6 FPGA在线升级 1. 使用编译和连接工具,将FPGA的第https://www.amobbs.com/thread-5491178-1-1.html
14.LATTICEFPGA通过SlaveSPI在线升级,怎样可以将JEDEC文件转换成关于Slave SPI升级方式的问题,怎样可以将JEDEC文件转换成二进制烧录文件?https://chipdebug.com/forum-post/43.html
15.FPGA板卡固件更新方法装置设备及介质本发明实现了对FPGA板卡进行在线升级,减少了板卡的拆卸,提高了固件更新的可靠性,利于产品的保密性并降低了开发的难度。 主权项:1.一种FPGA板卡固件更新方法,应用于计算机设备,所述计算机设备包括至少一FPGA板卡,其特征在于,所述方法包括:获取目标升级固件版本的BIN文件;将所述BIN文件转换为双字节模式文件,并将转换后https://pbs.lotut.com/zhuanli/detail.html?id=669e1a745dbd827390ca56d5
16.何绪金:FPGA双镜像备份升级方法摘要:基于FPGA的硬件系统的现场升级是通过FPGA更新其外挂的EEPROM中存储的配置文件来实现的。但是如果在更新EEPROM的配置文件过程中,突发系统掉电,会导致EEPROM中的配置文件不完整,再次上电后FPGA无法工作,从而导致系统失效。本文讲述了一种基于Xilinx的Multiboot的备份升级方法,该方法可以有效的解决产品在线升级FPGA过程中http://m.yuncaijing.com/news/8749086.html
17.Xilinx系列FPGA远程网络升级实现简介FPGA开发圈在实际应用中有很多FPGA板卡离工程师是有一定的距离,导致升级FPGA的mcs文件需要到现场,这样不方便也浪费时间。为此我们实现了基于通用网络传输方式来做远程升级的方案。此方案框图如下所示,本方案硬件平台基于米联客KU040FA板卡来做实现,当然此方案适用Xilinx的其他型号FPGA芯片。在Vivado工程上面例化了一个MircoBlaze核作http://xilinx.eetrend.com/content/2021/100556371.html