时间:2020年09月14日 分类:电子论文 次数:
摘要:针对当前在一些特殊的环境中无法通过 USB-JTAG 完成对 FPGA 固件的更新,文中提出了一 种基于 SPI FLASH 的固件更新方案。在硬件设计中,采用以太网作为固件数据的传输接口,采用 FPGA 作为主控制器。在逻辑设计中,采用 SPI协议完成对 flash设备的识别、擦除、写入。同时采用 flash分区存储的方式,通过 ICAP逻辑控制实现了动态全局重构和 fallback重配置。经验证,该方案 实现固件更新更便捷,大大提高了 FPGA 资源的利用率,降低了设计成本,且在更新过程中出现掉 电的问题,不影响设备的使用。
关键词:SPI FLASH;现场可编程门阵列;内部控制访问端口;动态重构
FPGA 可重配置带来了很高的灵活性,所以基于 FPGA 的设计或产品往往也会有后期更新的需求[1-3] 。 一般的程序更新,是通过 USB-JTAG 的方式进行更 新,要依靠 JTAG 专用线缆和仿真器[4] ,存在一定的局 限性。例如对于一些应用于特殊场合的产品,在出 厂前需进行特殊的工艺处理,产品交付后不具备拆 卸重复烧录程序的条件[5] ,无法通过 USB-JTAG 的方式进行更新。
为解决这个难题,文中提出了一种基 于 SPI FLASH 的固件更新方法,该方法能利用现有 的接口完成更新,不需要额外的硬件支持,解决了以往 更新过程中掉电后只能通过 USB-JTAG更新的问题, 几乎适用于一切型号的 SPI FLASH,移植性较高。
1 总体方案设计
由以太网传输模块和 FPGA 控制模块两部分组成。传输模块负责接受 上位机发送的命令和配置数据,并传输到控制模块; 控制模块接收传输模块传来的命令和配置数据,实 现对 flash 的分区擦除、分区写入等操作。同时通过 ICAP 的 方 式 实 现 了 对 FPGA 的 动 态 全 局 重 构 和 fallback 重配置,通过判断以太网下发的版本命令, 读取对应的版本程序,不仅充分发挥了 FPGA 资源 的灵活性,还大大提高了 FPGA 资源的利用率[6- 7] 。 在更新过程中如果出现掉电导致更新失败,在重新 上电后则触发 fallback 读取存储在 flash 初始地址的 程序可再次完成更新。
2 FPGA配置电路设计
以 Xilinx Spartan6 芯片为例,支持主串、主并、从 串、从并以及 SelectMAP 5 种配置模式,可通过设置 M1、M0 两引脚的高低电平选择配置模式[6] 。SPI 配 置属于主串模式,与其他模式相比,占用的 FPGA 资 源较少,且 SPI FLASH 体积小,节省空间。分别将 M1、M0接下拉电阻和上拉电 阻,将配置模式设为主串模式。
3 逻辑设计
3.1 固件更新逻辑设计
计算机和 FPGA 之间通过以太网接口进行通信,由于以太网接口和 flash接口传输时钟、传输位宽 不同,需添加 FIFO 作为数据缓存和位宽转换,FPGA 内部更新模块设计,包括以太网接口控 制模块、FIFO 模块、SPI接口控制模块 3部分。本 设 计 采 用 千 兆 以 太 网 接 口 完 成 计 算 机 和 FPGA 之间的数据传输,通信协议采用 UDP 通信协 议。
由于以太网传输是按包进行传输,一包大小为 1 526 字节[7] ,因此缓存 FIFO 大小应设为 2 kB,既防 止数据溢出,又不过多的浪费 FPGA 资源。以太网 接口传输速率大于 SPI接口传输速率,在一包数据传 输结束后,待缓存 FIFO 数据全部写入 flash,上发一 个指令,再进行下一包数据的传输。 SPI 接口是一种高速的、全双工、同步的通信总 线,该总线通过 4根信号线来完成 FPGA 和 flash之间 的串行通信[8-9] 。
flash_clk 是 SPI 接口工 作的串行时钟,FPGA 通过控制 flash_clk 信号来控制 通信时序。flash_cs 为片选信号,在高电平时,flash 处于被取消选择状态。在输入任何命令时,要把 flash_cs 信号拉低。flash_datain 用于把 FPGA 的执行 命令和数据发送到 flash 上。flash_dataout 用于把从 flash中读取的数据发送到 FPGA 上。
3.2 多重配置逻辑设计
某图像采集系统采用不同的 CMOS 图像传感器 作为采集前端,一套采集系统则需要一块对应的 FPGA主控卡[13] ,需要对主控卡进行分类,不便于实际 的调试;又如在大型系统设计中,单片 FPGA 资源往 往不能满足设计需求,有时可能需要多个芯片[14] 。 但是 FPGA 芯片价格较高,因此大大提高了设计成本,也不便于固件的更新。 FPGA 的多重配置技术实际是对可编程资源的 复用[15-16] ,用户可以根据需求加载不同的配置文件, 从而实现多重配置,即一块主控卡可以分别应用在 几套图像采集系统中。
在大型系统设计中通过时分 复用重复利用 FPGA 的硬件资源,不仅仅节省设计 成本,同时起到减小功耗,增加灵活性和降低系统硬 件复杂程度等目的。多重配置可以通过多种方式进 行触发,本设计采用借助 ICAP,通过状态机的方式 发送 IPROG 指令来实现。
3.3 fallback重配置逻辑设计
在更新固件过程中,如果出现掉电问题,即更新 的配置数据未全部写入,则在重新上电后,触发多重 引导逻辑读取对应配置文件,但此时配置文件未完 全写入且由于原有接口控制逻辑已经被擦除,计算 机无法通过以太网接口传输命令和数据,FPGA 也无 法通过 SPI 接口对 flash 进行操作。在这种情况下, 只有通过专用的下载工具和线缆将固件下载进去, 无疑给产品的更新造成了极大的不便,且在某些场 合下,不具备通过专用的下载工具和线缆更新的条 件,为了解决这个问题,提出了 fallback 重配置逻辑 设计解决方案。
4 测试结果及分析
为了验证本设计的可靠性,将通过以太网写入 的配置数据读出并上传至计算机显示。 软件抓取从 flash中读出的固件数据,经过对比,可以看到数据传输无误。为了验证本设计的多重配置和 fallback 重配置 逻辑设计,在 flash 中存储了 3 个配置程序。分别为一个 golden 文件和两个 main 文件,所实现的功 能都是点亮一个 LED 灯,但闪烁的频率不同,分别 为 1 Hz,2 Hz,4 Hz。本实验在重新加载前后,LED 闪烁的频率分别为 2 Hz 和 4 Hz,说明本设计实现 了多重配置。
电子论文投稿刊物:《现代电子技术》是由陕西省信息产业厅主管,陕西省电子技术研究所、陕西电子学会和陕西电子杂志社主办的科技类期刊。《现代电子技术》坚持“重质量,有特色,守信誉”的办刊方针基础上,大力提高本刊的学术水平和质量,为推进科技进步,为信息产业及电子行业发展做出更多贡献。主要读者包括全国的大专院校、电教中心师生, 重点实验室、工矿企事业单位、科研院所的工程技术人员,各军、兵种的高科技研究人员,以及政府采购人员。
如果在通过固件更新的过程中发生 掉电,包括在擦除期间掉电和写入过程掉电。擦除期间掉电和写入过程掉电 读出存储在 flash 中数据,对比得出,配置数据的同 步字均未写入,可以触发 fallback 重配置逻辑读取 main 文件。同时在掉电后重新上电,LED 闪烁的 频率为 1 Hz,说明本设计实现了 fallback 重配置逻 辑设计,再次发送指令即可完成更新,验证了本设 计的可靠性。
5 结束语
文中设计了一种通过现有的以太网接口和FPGA 对 SPI FLASH 进行识别、擦除、烧写的方法,且通过 ICAP 逻辑控制实现了多重配置,大大降低了设计成 本。同时与以往的固件更新方法比较,通过控制固 件数据的写入顺序,防止掉电导致更新失败,进一步提高了固件更新的可靠性。
参考文献:
[1] 夏飞,李晖宙.基于双FPGA系统的高速全局动态 重构设计与实现[J].现代电子技术,2017,40(16): 151-154.
[2] 徐晓东. 动态可重构系统中任务调度与布局算法 研究[D].合肥:中国科学技术大学,2017.
[3] 杜林,邹孝付.基于FPGA的动态重构技术研究与实 现[J].自动化与仪器仪表,2015(7):103-104,106.
[4] 朱保全. FPGA远程以太网JTAG设计与实现[D]. 成都:电子科技大学,2015.
作者:赵冬青,梁 璠,上官鹏,储成群