APP下载

利用UART 对FPGA 进行升级的方法

2020-11-17毕今朝蒋佳奇

吉林大学学报(信息科学版) 2020年3期
关键词:开发板镜像串口

常 亮, 毕今朝, 蒋佳奇

(1.中国电子科技集团公司 第三十二研究所, 上海201808; 2.吉林大学 电子科学与工程学院, 长春130012)

0 引 言

在FPGA(Field Programmable Gate Array)升级维护中, 常需对FPGA 的代码进行升级, 目前国内外很多设备升级工作仍利用传统的JTAG(Joint Test Action Group)配合下载器的升级方式, 需要工作人员携带下载器到现场对FPGA 进行升级。 而且在一些FPGA 被封装在设备中的情况下, 还需将设备中的FPGA拆除进行升级, 这不仅耗费工作人员大量的时间和精力, 而且导致维护成本增加[1-3]。

考虑到维护成本、 时间和可行性, 笔者提出了一种方便快捷的方法对FPGA 进行升级和维护操作,该方法只需在PC 端安装支持Xmodem 协议的串口助手, 用UART ( Universal Asynchronous Receiver/Transmitter)串口线连接电脑与FPGA 串口, 再使用上位机中安装的串口助手输入升级命令, 载入升级文件, 等待传输即可完成FPGA 在线升级。 对一些被封装进设备的FPGA, 只需在设备外部预留一个UART 接口便可以利用此接口进行升级工作。 并且该方法利用了MultiBoot 技术, 在突然断电等意外导致更新失败的情况下, 系统也可以加载备份镜像保证系统的正常启动。 该方法不仅使FPGA 的更新和维护更为便捷和省时, 而且提高了系统更新的容错性, 减轻了工作人员的负担, 使FPGA 维护更加便利。

1 可编程片上系统设计

1.1 系统总体设计

对于该设计中诸多硬件模块, 需用到可编程片上系统进行统一控制[4]。

可编程片上系统包括MicroBlaze 软核、 Clocking Wizard、 AXI Quad SPI(Serial Peripheral Interface)、 IP(Intellectual Property)核、 AXI Uartlite IP 核以及HWICAP(Hardware Internal Configuration Access Port)等IP核。 其中MicroBlaze 软核的作用为统一控制所有IP 核; Clocking Wizard 为倍频输入时钟, 为MicroBlaze、HWICAP IP 等软核提供稳定的参考时钟; AXI Quad SPI 用于配置读、 写和擦除模式, 驱动SPI 型Flash,实现Flash 擦除、 读和写等操作; AXI Uartlite IP 核用于控制UART 接口; HWICAP IP 核使嵌入式微处理器(如MicroBlaze 处理器)能通过内部配置访问端口读写FPGA 配置内存, 其可通过编写软件程序, 在电路运作期间修改电路结构和功能, 是动态可重配置系统的核心组件, 本系统中用其对Flash 进行配置[5]。 可编程片上系统的Block Design 如图1 所示。

1.2 MultiBoot 镜像的划分

图1 可编程片上系统的Block DesignFig.1 PSOC's Block Design

MultiBoot 分为G 镜像( Golden Image) 和M 镜像( MultiBoot Image) 两部分[6-7], 其中G 镜像为升级FPGA 的引导程序, 通常不更新; M 镜像为FPGA 正常工作程序, 通常随功能改变需要做部分修改, 需要更新。 因此在对Flash 进行更新时, 只需更新M 镜像。 若更新过程中出现了意外情况导致更新失败,MultiBoot 双镜像技术也可加载位于G 镜像中的程序对M 镜像再更新。 Flash 的划分如图2 所示,MultiBoot 镜像加载流程图如图3 所示。

图2 Flash 的划分Fig.2 Flash division

2 硬件系统设计

2.1 UART 接口的设计

图3 MultiBoot 镜像加载流程图Fig.3 Loading MultiBoot image flow diagram

UART 接口具有结构简单, 易于开发等突出优势, 而且UART 控制模块占用系统资源更少, 适合于低成本、 低功耗系统的设计, 是目前应用较为广泛的调试接口, 其传输方式为异步串行方式, 每次发送1位起始位、 8 位数据和1 位停止位[8-9]。

笔者采用Silicon Labs CP2102GM 生产的USB-UAR ( Universal Serial Bus to Universal Asynchronous Receiver/ Transmitter)芯片对UART 接口进行控制, UART 接口采用MINI USB 接口, 可利用USB 线将其连接到主机的USB 接口, 进行串口数据通信。 FPGA 与CP2102 的连接关系示意图如图4 所示。

图4 FPGA 与CP2102 的连接关系示意图Fig.4 Schematic diagram of connection relation between FPGA and CP2102

2.2 Flash 芯片

由于Flash 的非易失特性, 在使用中, QSPI Flash 可用于存储FPGA 系统的镜像文件, 以及其他的用户数据文件[10]。

实验采用了Numonyx 公司型号为N25Q128, 容量为128 Mbit 的QSPI Flash 芯片。 Flash 被分为256 个片区(每个片区大小为64 kByte)。 C 语言将低地址的32 个sector 存储空间(每个sector 大小为64 kByte)分配给G 镜像, 该工程G 镜像实际大小为0.97 MByte(理论最大允许2 MByte), 将高地址的224 个sector(大小为14 MByte)存储空间分配给M 镜像(理论最大允许14 MByte, 若M 镜像文件大于该值, 则需要更换Flash 或重新分配Flash 存储空间)。 QSPI Flash 连接到FPGA 芯片的BANK0 和BANK14 的专用管脚上,其中时钟管脚连接到BANK0 的CCLK_0 上, 其他数据和片选信号分别连接到BANK14 的D00 ~D03 和FCS 管脚上。 QSPI Flash 连接示意图如图5 所示。

图5 QSPI Flash 连接示意图Fig.5 QSPI Flash connection schematic

3 Xmodem 协议

对FPGA 开发板进行更新时, 上位机向开发板传输需要烧写进Flash 的*.bin 文件。 为保证文件传输的可靠, 笔者选择Xmodem 协议向开发板传输文件。 Xmodem 协议是目前在串口通信中使用较为广泛的一种文件传输协议, 此协议传输方式为异步传输。

Xmodem 协议分为标准Xmodem 协议和1k-Xmodem 协议两种。 其中标准Xmodem 协议每次传输的数据块大小为128 Byte, 1k-Xmodem 协议每次传输的数据块大小为1 024 Byte。 此协议会对每个数据块的序号进行校验, 检查此数据块在传输过程中有无出错情况, 因此能保证传输准确性。 开发板对接收数据包的序号及其补码进行校验, 当校验结果无误时便发送ACK(Acknowledge Character)报文, 主机在接收到ACK 报文后便开始下一次传输。 如果校验结果有误则向主机发送NAK(Negative Acknowledgment) 报文请求重传。 当开发板收到的数据包序号不是所期望序号时, 说明传输过程中出现了错误, 此时开发板向主机发送CAN(Cancel)报文取消传输。 如果开发板收到了带有重复序号的数据包, 便向主机发送ACK请求发送下一个数据包。 当开发板准确无误地收到所有数据包后, 便向主机发送EOT ( End Of Transmission)报文终止传输。 为提高升级速度, 笔者选择了1k-Xmodem 协议进行传输。 1k-Xmodem 协议数据包的帧格式如表1 所示。

表1 1k-Xmodem 协议数据包的帧格式Tab.1 Frame format of 1k-Xmodem protocol packet

4 实验结果与分析

笔者使用上位机中安装的串口助手软件对程序进行功能测试。 该实验中, 串口助手用于监测主机端与FPGA 开发板UART 接口相连的COM3 接口的数据, 并获取开发板通过UART 接口传输至主机的信息。敲击任意键, 即可让程序暂停, 再输入 “update” 指令进入升级步骤。

如果用户不能在指定时间内发出 “update” 指令, 则被视为放弃更新, 此时的端口监测情况如图6所示。

图6 放弃更新时的端口监测情况Fig.6 Port monitoring when updates are aborted

如果用户选择更新, 需向开发板发出 “update” 指令, 等待Flash 擦除完成后, 将新的*.bin 文件烧录至FPGA。 在烧写完成后将开发板重新上电, 即可观察到程序已被烧写进Flash。 端口监测情况如图7 所示。 笔者选择了一个实现流水灯的*.bin 文件对更新功能进行测试, 在波特率为115 200 bit/ s 的速率下, 以Xmodem 协议进行传输, 可测得传输速率约为9 kByte / s。 实验结果如图8 所示, 可见流水灯程序已经烧录至FPGA 开发板, 且运行情况正常。

图7 通过SecureCRT 传输*.bin 文件时 的端口监测情况Fig.7 Port monitoring when transferring *.bin files through SecureCRT

图8 通过UART 接口烧录至FPGA 开发板的流水灯程序Fig.8 Waterfall light program is burned through the UART interface to FPGA development board

5 结 语

笔者所实现的更新系统已经在实验室中完成了调试, 且各功能模块测试正常, 实验效果符合预期。系统利用了UART 接口、 FPGA 芯片和Flash 芯片, 结合可编程片上系统进行设计, 在控制了系统成本的同时也获得了一定的稳定性。 同时利用MultiBoot 双镜像技术, 允许系统在更新失败时加载备用镜像以使其正常运行, 保证了设计的稳定性。 该设计具有更新效率高, 维护成本低, 稳定性高等优点, 适合于对不便于现场升级的FPGA, 以及被封装的FPGA 进行高效、 稳定的更新升级操作。 实验结果表明, 该设计实现了利用UART 接口替代传统的JTAG 配合下载器的升级方式, 并且采用MultiBoot 双镜像技术也为系统提供了更高的容错率。 下一步将进一步提高数据传输效率, 使FPGA 的更新更为高效。

猜你喜欢

开发板镜像串口
浅谈AB PLC串口跟RFID传感器的通讯应用
镜像
基于STM32H7的FDCAN通信系统设计与实现∗
镜像
浅析单片机开发板的设计与制作
数字电源内部数据传输的串口通信方法实现
USB接口的多串口数据并行接收方法探索
串口技术的实物调试和虚拟仿真联合教学模式
ARM宣布mbed Enabled Freescale FRDM—K64F开发板通过微软认证
镜像