基于STM32的Lattice FPGA脱机编程系统设计

俸皓 凌小壮
摘 要: 为了解決运用Lattice FPGA的深度嵌入式应用环境不便于升级维护的问题,提出一种基于STM32的新型脱机编程方案。该方案由上位机软件和基于STM32的脱机编程器两部分组成,实现了PC端的熔丝图VME文件格式转换、优化、管理及传输至脱机编程器和编程器上VME文件的存储、选择及下载功能。设计的脱机系统摆脱了传统的FPGA器件编程方式对PC机的依赖,提高了编程效率。通过测试及实际应用结果表明,该脱机编程系统具有便携、灵活、稳定的特点,能够有效地满足目标应用的生产、维护、升级需求。
关键词: Lattice FPGA; 脱机编程器; STM32; JTAG
中图分类号: TN79+1?34; TP399 文献标识码: A 文章编号: 1004?373X(2017)03?0143?04
Design of Lattice FPGA off?line programming system based on STM32
FENG Hao1, LING Xiaozhuang2, CHEN Junyan1
(1. Guangxi Colleges and Universities Key Laboratory of Cloud Computing and Complex Systems, Guilin University of Electronic Technology, Guilin 541004, China; 2. Shenzhen Wnhoo Electronics Co., Ltd., Shenzhen 518057, China)
Abstract: It is inconvenient to update and maintain the deeply?embedded application environment with Lattice FPGA, a novel off?line programming scheme based on STM32 is proposed. The scheme is composed of the off?line programmer based on STM32 and upper computer software, which can realize the VME file format conversion, optimization and management of the fuse figure in PC terminal, and VME file storage, selection and download function in off?line programmer and programmer. The off?lime system is rid of the dependency of PC on traditional FPGA programming method, and improves the programming efficiency. The test and practical application results show that the off?line programming system has the characteristics of portable use, flexibility and stability, and can meet the requirements of production, update and maintenance of the target applications.
Keywords: Lattice FPGA; off?line programmer; STM32; JTAG
0 引 言
ISP技术对嵌入式系统的现场升级和功能重构提供了强有力的支持,且具有灵活便捷的特点[1],一经提出便得到了广泛的使用。
目前业界常用的编程方案有几种,其中“计算机+下载线”是各个器件厂商官方提供的编程方式,也是最传统且经典的方式[2?4]。然而当前市场上还没有一种成熟的编程方案能够提供脱离PC机的现场编程环境。针对这种状况,本文提出一种新颖的脱离PC机的现场编程方案,即脱机编程系统。该编程系统由脱机编程器和上位机管理软件两部分组成,为Lattice FPGA的现场编程提供支持,使生产、维护人员摆脱了传统PC机的束缚,只需携带脱机编程器至现场即可工作,从而大大提高了工作效率。
1 脱机编程的系统结构
脱机编程系统的设计分为两部分。首先设计了一款上位机软件用于给编程器装载FPGA的熔丝文件。如图1所示,上位机软件首先读取VME.c格式的熔丝文件,然后进行数据的萃取优化,获得有用数据并转化为Hex格式文件保存,等待编程器的装载请求,把数据发送装载至编程器中。同时以STM32作为控制核心,设计了一款提供脱机编程功能的便携式编程器。编程器在管理模式下通过上位机软件获得Hex格式的熔丝文件,并采用FLASH芯片存储;最后在编程模式下通过JTAG口把熔丝文件数据移入FPGA器件,实现对设备中FPGA器件进行编程的目的。
2 脱机编程器设计原理
Lattice为FPGA产品提供了JTAG接口的编程方案,为脱机编程的实现提供了有力支持。JTAG( Joint Test Action Group,联合测试行动小组)制定了边界扫描技术,随后成为 IEEE 的一个标准即IEEE1149.1?1990[5],此标准亦简称为JTAG。JTAG对边界扫描系统的定义包括四个部分: 引脚的测试接口TAP、数据寄存器、指令寄存器和TAP控制器[2]。TAP控制器作为一个状态机,共有16种状态;测试接口、指令寄存器和数据寄存器都由控制器控制[2]。
TAP控制器状态机的运行逻辑如图2所示,通过运行这个状态机,即可将配置信息编程至芯片内。JTAG测试接口有规范的时序,如图3所示。
由图2和图3可见,可通过TCK,TMS对控制器进行操作:当TAP在 Shift?IR状态时,TDI接口收到的命令被送往指令寄存器;当控制器状态在Update?IR时,指令寄存器的命令生效[2]。其中 TMS,TDI在TCK上升沿有效,TDO在TCK下降沿有效。Lattice FPGA的熔丝图文件由AVF(Algorithm VME File)和DVF(Data VME File)两部分组成。其中AVF称为算法文件,存储了FPGA器件编程时的器件与链之间的编程算法步骤,根据上下文和编程的当前状态,每一个字节代表下一步该如何执行;而DVF中存放的是实际的器件熔丝图数据,也就是待写入FPGA器件的逻辑构建数据。编程器在编程模式下,首先进入TAP状态机,从AVF中读取算法数据Algo之后,根据算法数据进行状态切换。其中算法数据保存在Algorithm VME File中,在SDR与SIR状态下,根据两个状态进一步读取配置数据Data写入FPGA器件,其他状态进行相关逻辑与时序处理。
3 脱机编程器硬件设计
编程器硬件主要由STM32F103核心控制器系统电路[6?7]、PL2303 USB转RS 232串口、JTAG编程接口、FLASH存储电路、OLED显示及功能选择输入等部分组成,系统硬件结构如图4所示。STM32作为主控MCU,负责整个系统的运行控制,是编程器的核心,包括时钟电路、复位电路、boot启动选择电路、SWD编程调试接口;为了同时存储多个FPGA配置文件,采用外接FLASH 45DB321D芯片存储,采用SPI接口读写;系统通过串口与上位机通信获取FPGA配置文件,本设计采用PL2303 USB转RS 232芯片;最后也是最为重要的部分,编程器通过JTAG接口实现系统可编程,为简化设计、降低成本,本文采用JTAG中的4线接口设计方案,分别为TCK,TMS,TDI,TDO。
4 脱机编程器软件设计
编程器工作于两种模式:管理模式和编程模式。编程器首先在下载模式中通过与上位机管理软件配合,存储和管理自身的VME数据文件,之后切换到编程模式,即可在现场编程中独立使用。编程器开机启动后,将根据执行流程与用户的输入选择对应的运行模式,其运行流程如图5所示。在管理模式下当串口连接计算机与上位机握手就绪后,可以打开VME文件执行相关操作进行装载,可连续装载多个VME文件,使用时选择对应的文件号即可。在编程模式下,通过面板上的按键即可进行VME文件的選择。用JTAG接口连接目标FPGA设备后,即可进行编程配置任务。
根据图2的描述实现了编程器的状态机之后根据状态机请求,通过查询用户的选择获取配置数据。当请求数据为算法数据时,状态机得到数据后根据算法数据推算下一个状态,继续下一步;当请求熔丝图数据时,状态机获得数据后移入FPGA器件,执行编程操作实现数据的写入。
5 上位机管理软件设计
上位机的管理软件使用VC++设计与实现。软件的主要运行流程如图6所示。为了实现上位机与编程器的可靠通信,特别制定了专用的通信协议。脱机编程系统的上位机管理软件的界面如图7所示,可以直观地看到编程器的端口及其状态、所选FPGA熔丝文件路径和大小类型、下载进度及状态以及软件的相关使用帮助信息等。
6 测试及分析
为了满足不同用户的需求,本设计提供了适合个人用户及开发爱好者使用的盒子版和适合企业用户使用的工业版两个版本。盒子版编程器如图8所示,工业版编程器如图9所示。
为了测试编程器的兼容性,本文对Lattice FPGA绝大部分型号的器件如:LatticeXP,MachXO,ispCLOCK,ispGDX2,ispXPGA,ispGAL22V10A,Power Manager,Power Manager Ⅱ等进行了测试。测试结果表明,编程器可以完全兼容以上系列的器件。经过优化的熔丝文件所占存储空间极少,编程速度约为PC直接编程速度的95%左右。在测试过程中,对每个器件进行上万次的编程,结果显示全部编程通过并得到可靠运行,成功率达到了100%。表1给出了脱机编程器与传统的依赖于PC的编程方式的编程速度对比,数据是每种情形下测试100次后所取的平均值,可以看出本文的设计可以达到传统方式的80%,可以满足现场编程的应用需求。测试表明,该编程系统能够对Lattice FPGA的绝大部分芯片进行编程,同时具有携带方便、交互友好、易学易用的特点。
7 结 语
本文提出一种基于STM32的Lattice FPGA脱机编程系统,该系统首先把FPGA的熔丝文件转换成VME HEX文件,然后通过上位机软件装载至编程器的FLASH中存储,现场编程时可以彻底摆脱对PC机的依赖,选定所需要的VME文件后,即可通过JTAG接口对Lattice FPGA器件进行编程。本设计支持Lattice FPGA的绝大部分型号,且可以灵活地扩展至支持JTAG接口编程的FPGA器件之中,为使用FPGA的应用提供了灵活、便携且低成本的编程方式,有较好的工程应用价值和较为广泛的应用前景。
参考文献
[1] 曾晓洋,郝志航.在系统可编程(ISP)技术及其器件[J].光学精密工程,1998,6(3):110?115.
[2] 周维,何健鹰,聂菊根.CPLD和FPGA编程与配置的实现[J].计算机与数字工程,2006,34(1):101?102.
[3] DONTHI S, HAGGARD R L. A survey of dynamically reconfi?gurable FPGA devices [C]// Proceedings of 2003 the 35th Southeastern Symposium on System Theory. Morgantown: IEEE, 2003: 422?426.
[4] ZHOU Shengyu, SUN Huixian, CHEN Xiaomin, et al. Dyna?mically reconfigurable system based on FPGA [J]. Chinese journal of electron devices, 2007, 30(2): 646?650.
[5] Institute of Electrical and Electronic Engineers. Test access port and boundary?scan architecture: IEEE1149.1?1990 [S]. New York: Institute of Electrical and Electronic Engineers, 1990.
[6] 陈启军,余有灵,张伟,等.嵌入式系统及其应用:基于Cortex?M3内核和STM32F103系列微控制器的系统设计与开发[M].上海:同济大学出版社,2011.
[7] 吕中虎,张徽,张晓飞.基于STM32的便携式二氧化碳监测仪设计[J].电子设计工程,2014,21(26):91?93.