题目:一种基于 FPGA 多重启动的配置 Flash刷新方法
作者:李全良,王超,王瑞琳,焦扬,乔川
(北京控制工程研究所)
摘要:对于长寿命产品,NOR Flash 内 存 储 的 FPGA 比 特 流 会 因 Flash 浮 栅 电 荷 泄 漏 而 发 生 数 据 位 翻 转,进 而 导 致FPGA 配置失败。针对该问题,提出了一种基于 FPGA 多重启动的 Flash刷新方法,产品年检时对 Flash进行刷新,以恢复浮栅电荷量。对 Kintex 7系列 FPGA 多重启动机制进行了研究,优化设计了配置数据组成,提高了多重启动的鲁棒性。优化后的配置数据包含1份同步头文件、2份相同的比特流、3份相同辅助文件。启动刷新后,FPGA 按自检、刷新、回读校验流程对 Flash进行刷新。测试结果表明,该刷新方法稳定可靠,具有较高的工程应用价值。

SRAM型FPGA上电后需从外部NOR Flash加载比特流才能正常工作。然而,NOR Flash以浮栅是否存储电荷表示数据,长期存储时浮栅电荷泄漏会导致数据位翻转,进而使FPGA配置失败,设备异常。对于寿命长达20~30年的长寿命产品,这一可靠性问题尤为突出。通过JTAG仿真器或在线升级方式刷新Flash虽可行,但前者需物理连接,现场可维护性差;后者需缓存两份比特流,且依赖串口等接口上传数据,操作复杂。
针对上述挑战,北京控制工程研究所李全良研究团队在《集成电路与嵌入式系统》2026年第9期发表了论文《一种基于FPGA多重启动的配置Flash刷新方法》,提出了一种基于FPGA多重启动的Flash自主刷新方法,FPGA内缓存2份完全相同的比特流及辅助信息,收到启动指令后自主完成自检、刷新与回读校验,无需外部干预。
一、优化配置数据组成,提高多重启动鲁棒性
传统多重启动Flash内缓存Golden Image(G文件)和Multiboot Image(M文件)。上电时先配置G文件,读取热启动地址和IPROG指令后跳转至M文件;若M文件异常则回退至G文件。但若M文件的同步字被破坏,配置控制器无法同步,回退机制失效。
针对此问题,本文对配置数据进行优化重构:
用128字节的同步头文件(H文件) 取代G文件,仅包含同步字、热启动地址和IPROG指令,实现跳转控制功能。
缓存2份完全相同的M文件(M1、M2),取代原有的G+M方案。
增加3份相同的辅助文件(A1、A2、A3),每份128字节,包含M文件的CRC校验码、大小以及看门狗数据(同步字+看门狗指令+看门狗时间)。
上电时配置控制器依次读取H文件→跳转至M2文件;若M2配置失败(同步字被破坏),A文件中的看门狗超时触发回退,重新配置H文件→M1文件。3份A文件通过按位三取二提供冗余,保证M文件信息和看门狗数据的可靠性。
二、自主刷新流程:自检→刷新→校验
Flash内缓存顺序为:H文件(0x00000000)、M1文件、M2文件、A1/A2/A3文件。产品年检时(存储时间≤5年,小于Flash数据保持时间10~20年的50%),FPGA接收到刷新启动指令后,自主控制完成全部刷新流程:
自检:分别从Flash和ROM读取H文件比对;从Flash读取3份A文件,按位三取二获得有效A文件,并从中提取M文件CRC和大小,分别校验M1和M2;A1/A2/A3分别与有效A文件比对。若H、M1、M2自检失败个数≤1且A1/A2/A3自检失败个数≤1,则进入刷新阶段。
刷新:刷新顺序遵循“先刷新自检失败的,后刷新自检成功的”。A文件按PA1→PA2→PA3顺序擦除→编程→回读对比;H文件擦除→从ROM读取并编程→回读对比;M文件按先刷新自检失败的、再刷新自检成功的顺序,逐页读取、编程,最后计算CRC校验与A文件中的值对比。
校验:每一步回读对比或CRC校验不通过即停止刷新,确保刷新过程中最多只有一个文件异常,待重启时重新执行。
三、实现与测试验证
基于国产深圳国微K7系列FPGA(SMQ7K410T)和配置Flash(SM25QH256,32MB,主SPIx2模式)搭建硬件平台。通过翻转M文件的关键位(同步字、ID字段、其他位、全FF)注入数据错误,共10种工况,分别对M1、M2、H文件进行破坏。测试中通过读取FPGA配置历史状态寄存器(BOOTSTS)验证多重启动行为和刷新效果。
所有工况下,刷新前BOOTSTS显示IPROG指令有效或回退/看门狗超时/ID错误/CRC错误等标志位被正确置位,多重启动机制正常响应;刷新后所有BOOTSTS值恢复至0x0005(仅状态0有效且IPROG有效),回读Flash文件与标准烧写文件完全一致。结果表明,该方法在多种数据异常工况下均能稳定刷新,使被破坏的配置数据恢复正常。
四、结论与应用前景
本文通过优化配置数据组成(H文件+2×M文件+3×A文件),提高了多重启动的鲁棒性,并设计了完整的自检→刷新→回读校验流程,实现了无需外部干预的Flash自主在位刷新。该方法已应用于某装备产品中,工作稳定可靠。通过修改配置电路、读/写接口及配置约束,该刷新方法可推广至主BPI配置模式下的Flash刷新,具有较强的工程推广价值。
- -THE END- -
往期精选


FPGA技术江湖广发江湖帖
无广告纯净模式,给技术交流一片净土,从初学小白到行业精英业界大佬等,从军工领域到民用企业等,从通信、图像处理到人工智能等各个方向应有尽有,QQ微信双选,FPGA技术江湖打造最纯净最专业的技术交流学习平台。
FPGA技术江湖微信交流群

加群主微信,备注姓名+学校/公司+专业/岗位进群
FPGA技术江湖QQ交流群

备注姓名+学校/公司+专业/岗位进群
