借助NOR Flash实现UltraScale FPGA后配置解决方案
kenshin FPGA开发圈
NOR Flash是一种非易失性存储器件,与其相似的还有NAND Flash,但是NOR Flash具有类似SRAM的并行接口,有足够的地址引脚来寻址,读数据的速度更快,因此多用于微控制器启动配置外部存储器件,即代码存储介质,而NAND Flash则使用复杂的I/O口来串行存取数据,内部结构具有极高的单元密度,数据写入速度更快,多应用于大容量数据存储方面。因此NOR Flash占据了大部分容量为1~16MB闪存市场,而NAND Flash大多常见于8~128MB的产品中。今天这里向大家介绍一种基于NOR Flash实现UltraScale FPGA后配置(post-configuration)的解决方案。
UltraScale FPGA器件内部没有继承存储模块,因此需要借助外部NOR Flash来实现FPGA配置文件的加载。在这个设计中需要在FPGA内实例化一个MicroBlaze处理器内核,并且借助AXI EMC控制器IP、STARTUPE3 primitive模块与外部NOR Flash存储器件建立BPI(Byte Peripheral Interface,高速并行配置方式)通信接口连接,具体系统设计如下图所示:
图1 基于NOR Flash的FPGA后配置(post-configuration)参考设计
具体操作流程如下:
-
采用BPI配置模式从NOR Flash加载初始化镜像文件(golden.bin),这个数据流镜像会在FPGA器件内初始化STARTUPE3 primitive模块、接口逻辑、IP核资源以及管脚约束配置。经过这样的初始化操作我们就能够对NOR Flash的未使用空间进行读写操作。
-
在MicroBlaze处理器端运行program程序,即通过串口Xmodem协议下载后配置镜像文件(update.bin),每个1024字节数据包都经过CRC校验后写入到NOR Flash。
- 执行IPROG操作就可以加载更新后的数据流镜像实现FPGA的重配置,即初始的golden.bin被update.bin所替换。(IPROG指令的作用是对FPGA芯片进行复位操作,该复位操作对FPGA内部的应用程序进行复位,复位过程中除专用配置管脚和JTAG管脚,其他输入/输出管脚均为高阻态)。
图2 串口操作指令
为什么要采用这种方法呢?因为初始化配置操作完成后BPI配置接口会保持为空闲状态,而且NOR Flash也有很多未使用的存储空间,可以用来存储额外的配置镜像或者应用数据,在一定程度上降低了存储器件成本,精简了办卡设计和尺寸。除此之外,该种配置方法还可以使用与Virtex-5和Kintex-7系列FPGA器件。