一种基于PCIe 总线的SPIFlash 内FPGA 程序在线更新方法
2021-06-17王锋吕天志杨明洋
王锋,吕天志,杨明洋
(中电科思仪科技股份有限公司,山东青岛,266555)
0 引言
采用SPIFlash 配置的FPGA 程序通常都是通过FPGA厂家提供的程序下载器进行更新,一般仪器FPGA 程序的更新方式有两种:
(1)打开产品机箱用专用程序下载器通过JETAG 接口更新FPGA 程序,这种方式操作复杂且需要专业人员完成;
(2)把FPGA 程序下载器的功能集成到电路板中,利用厂商提供的程序下载软件更新程序,这种方案需要加入额外电路器件,增加了电路板器件的布局空间、功耗及设计成本。
鉴于一般仪器的CPU 模块与FPGA 之间都有PCIe 总线连接,并且FPGA 和SPIFlash 直接连接,因此在FPGA正常工作时可以让CPU 软件通过PCIe 总线将要更新的FPGA 程序以文件形式先传递给FPGA,然后在FPGA 内设计SPIFlash 芯片的烧写控制逻辑,进而实现SPIFlash 内FPGA 程序的在线更新。
本文以7 系列FPGA 为例,7 系列FPGA的配置过程具备MultiBoot 和FallBack 机制—FPGA 在上电配置时,MultiBoot 机制允许FPGA 选择SPIFlash 中指定区域的比特流来配置,此版本比特流称为update 镜像,如果配置失败,则触发FallBack 机制将另一个性能良好的固定版本配置到FPGA 中,从而保证FPGA 可以正常工作,此版本比特流称为golden 镜 像。golden 和update 这 两 个 镜像会一起作为初始化镜像用专用程序下载器下载到SPIFlash 中,在线更新仅对SPIFlash的update 镜像区域进行更新。本文在7 系列FPGA 的MultiBoot 和FallBack 机制的基础上,阐述了一种在线更新Flash 内FPGA 程序的方法,此方法不需要拆机连接程序下载器,更不需要增加额外硬件,在软件界面上即可控制SPIFlash 内FPGA 程序更新过程。
1 方案设计
■1.1 总体方案
首先将golden 和update 镜像一起作为SPIFlash 初始化镜像下载到SPIFlash 中,然后需要更新FPGA 程序时,使用在线程序更新功能升级SPIFlash 的update 镜像即可。……
