基于RapidIO的FPGA远程更新系统设计与实现

朱道山

(中国电子科技集团公司第十研究所,四川成都610036)

摘 要:现场可编程逻辑门阵列(FPGA)在航电系统领域广泛应用,但是采用JTAG方式更新FPGA程序,效率低下,易受设备环境限制而缺乏灵活性,已经难以满足工程应用的需求。提出了一种实现FPGA程序远程更新的方案,该方案采用RapidIO总线,以软件异构的方式,构建在线更新实时通信链路。通过以太网下发镜像升级文件,经SRIO交换网络传送至FPGA节点,写入FLASH配置空间,实现FPGA程序的远程更新。经过测试,验证了设计的正确性和可行性,并有效地提高了FPGA程序更新的速度。

关键词:现场可编程门阵列;快速输入输出;远程更新;闪存;虚通道

0 引言

近年来,随着FPGA规模和性能的不断提升,使得FPGA在航电系统综合集成方向有着广泛的使用。通过构建通用的硬件处理平台,注入不同的FPGA软件,实现系统的多种功能,以支持系统长生命周期持续、迭代、滚动发展[1]

通常,FPGA程序更新都是通过JTAG下载电缆连接计算机进行配置,采用边界扫描方式对FPGA外围FLASH芯片进行编程实现[2]。上述方法适合在规模较小的产品研制初期使用;在产品研制后期,对于大型航电系统来说,若依然采用JTAG下载方式进行FPGA程序维护更新,就变得操作繁琐、效率低下[3-4]。尤其对交付的系统设备,一般都不预留JTAG接口;同时,对于已交付的设备经常插拔JTAG仿真器,也会对硬件有所损伤。

采用远程在线更新的方式,可以解决产品研制后期FPGA程序维护更新效率低下的问题。对于FPGA在线更新,国内相关文献主要是基于处理器、接口芯片连接FPGA的方式进行[5-8]。文献[5-8]分别研究了通过PPC处理器本地总线、CPLD芯片、DSP处理器EMIF总线、CPCI总线接口芯片实现FPGA程序更新。以上加载FLASH的方式都是基于单个FPGA或者几个FPGA进行的,对大型航电系统中,几十、上百个FPGA芯片程序更新、移植使用,会使系统硬件架构变得非常复杂。

本文针对大型航电系统中FPGA节点程序更新,提出了一种基于RapidIO总线的FPGA远程在线更新方案,并将该方案成功运用于信号与信息处理机平台中。

1 系统架构

传统设计中,大型航电系统内各子系统因硬件平台不同而采用了不同的通信总线协议,不仅增加系统的复杂性,还降低了系统的可靠性和实时性。为取得好的效费比,大型航电系统中趋向于使用单一类型的通信总线协议实现子系统内、子系统间的互连[9]。作为一种可靠性、开放式互连架构,RapidIO以其高效率、高稳定性、低成本的特点,为系统内各处理器间互连通信提供了高带宽、低延迟数据传输的解决方案[10]

FPGA程序远程更新正是基于航电系统内统一高速互连总线RapidIO进行设计实现的,其结构框图如图1所示。PC机读取待更新FPGA节点镜像升级文件,通过以太网传输配置文件,从PPC节点下发控制命令和数据报文,经SRIO交换网络传输至FPGA中,FLASH芯片专用配置逻辑将程序依次写入指定的FLASH更新区域。更新完成后,FPGA将会触发专用升级电路,重新加载FLASH更新区域的新程序,从而实现FPGA程序远程更新。

图1 FPGA远程更新系统架构框图

整个更新过程由FPGA节点内部在线更新专用程序自动完成,无须外部干预。多个FPGA芯片在线更新流程可以同时进行,不同FPGA芯片通过设备ID进行区分。

2 硬件设计

基于VITA46标准的某综合化信号与信息处理机平台如图2所示,采用上下两层结构,每层10个插槽。机架内部模块间采用1X模式、2.5 Gbit/s速率SRIO(串行RapidIO)高速总线进行互连。

图2 综合化信号与信息处理机平台

FPGA芯片部署在信号处理模块内,每个信号处理模块由4个FPGA芯片组成。本平台包括6个信号处理模块,共24个FPGA芯片。

3 软件设计

为了使在线更新功能不影响FPGA本身功能软件的使用,本设计采用软件虚通道的思路进行。以软件异构的方式在FPGA节点与PPC处理器节点之间创建实时通信链路,配置多个虚通道,每个虚通道对应一个逻辑通道号。功能软件工作在通用逻辑通道,在线更新功能工作在在线更新专用逻辑通道,二者独立,互不影响。同时,当更新通道中的PPC节点发生故障时,上层系统管理软件可以通过软件重构的方式,选用其他处理器节点替代故障PPC节点,完成FPGA在线更新功能。

FPGA节点作为整个在线更新设计的核心控制部分,采用模块化设计,通过VHDL语言编程的方式实现。按照功能模块划分,主要包括SRIO IP核、RIO接口适配模块、指令控制模块、数据缓存模块、数据回读模块、数据校验模块和FLASH控制模块。FPGA节点内部模块框图如图3所示。

在线更新时,数据传输出错或者数据未能正常写入FLASH中,轻者导致本次在线更新失败,重者导致板卡损坏,其后果无法估量。为了保证在线更新正确无误,FPGA节点在接收、烧写镜像文件时采用了多级校验机制,所有的报文都必须返回ack,当确认节点处理好上一个文件数据之后,再传送下一帧数据。确保烧写到FLASH中的数据与原始镜像文件完全一致。数据帧交互机制如图4所示。

图3 FPGA节点内部模块框图

图4 数据帧交互机制

3.1 SRIO IP核

使用Xilinx FPGA内部SRIO IP核,选择1X模式、2.5 Gbit/s速率,时钟频率为125 MHz,器件ID为8位,通信采用基本HELLO包格式,支持内存映射与消息机制的通信类型。

通常,串行FLASH与并行FLASH都支持page写的方式,即一次写入256 B。采用内存映射写方式,单个数据包最大有效数据载荷也是256 B。因此,约定每次写入FLASH数据最大长度为256 B,使得SRIO传输效率最大化,也方便后续FLASH写处理流程的实现。

3.2 RIO接口适配模块

接口适配模块作为FPGA与SRIO交换网络之间的数据传输通道,一方面,接收来自外部PPC节点的数据报文,并根据收发双方约定的协议进行数据报文的解析,把不符合要求的报文丢弃,符合要求的数据报文送到数据缓存模块,控制指令报文送入指令控制模块;另一方面,对校验返回ack值与nack值通过门铃doorbell的方式通知PPC节点,使PPC节点进入数据持续传输或者数据重传操作流程。

3.3 FLASH控制模块

FLASH控制模块是FPGA节点的核心模块,统管着FLASH的整个操作流程,按照指令控制模块接收到的控制指令的要求,一方面协调数据模块完成数据写入FLASH操作;另一方面还要回读FLASH数据,用于校验工作。

在FPGA中采用状态机实现FLASH远程更新流程,如图5所示,状态转移图如图6所示。在线更新专用通道初始化完成后,系统进入报文接收等待状态。接收到报文信息后,根据解析出来的报文类型,转入到相关的FLASH操作流程。若是更新擦除指令,则进入更新擦除流程,解除FLASH写保护,完成擦除block操作后,自动进入更新写状态,写完一个block后,读出该block中数据,进行CRC校验。CRC校验正确,则返回报文接收等待状态;CRC校验错误,则进入数据重传流程,直至读出的数据CRC校验正确。指定的读、写、擦除状态是为了增加系统的灵活性,可以手动配置FLASH的存储区域。

3.4 数据校验模块

对更新数据校验采用计算CRC32的方式进行,有两种方式可以实现。一方面,在明确更新文件CRC32校验多项式以及CRC存放位置、计算区间的情况下,当文件写入时记录写入FLASH空间的大小,即确定需要参与计算的区间以及确定CRC32所在的位置,根据地址记录。待读出校验时就可以通过读FLASH计算的CRC与文件包含的CRC值作对比,此时写入FLASH的时候无需作CRC32校验。另一方面,如果不能很明确更新文件的结构,想找出CRC32的值就无从下手,此时,可以通过写入FLASH的时候计算一次CRC32,对写入的所有数据都计算在内,待读出校验时,再次计算一次,比较写入计算的CRC与读出计算的CRC是否一致,从而可以断定写入FLASH的更新文件是否正常。但是后者只能确定FPGA在读写FLASH的时候是否出错,不能完全保证更新文件的正确性,若要对更新文件的正确性进行判定,则需要把数据回读模块的数据通过SRIO核上报给上级PPC节点,由上层软件进行确定。

图5 FLASH远程更新流程

图6 FLASH远程更新状态转移图

4 试验结果

某综合化信号与信息处理机平台如图7所示。

图7 综合化信号与信息处理机实物图

对该处理机信号处理模块中的24个FPGA芯片进行软件在线更新功能测试。其中PPC芯片采用PPC-8548,FPGA芯片采用FPGA-V7-485T,FLASH芯片采用FLASH-JS28F00AP30,测试结果如表1所示。

表1 FPGA程序更新测试结果

经测试,PPC-8548通过RapidIO网络向FPGA-V7-485T发送数据,在1X模式、2.5 Gbit/s速率下,可达到10 MB/s。充分利用FLASH在擦除block块开销时间长以及PPC-8548传输速率高、远程更新虚通道可扩展等特点,可通过PPC-8548芯片同时对6个信号处理模块内的6个FPGA芯片进行程序更新。从表1可以看出,随着软件版本及FPGA节点数目增多,相比JTAG方式,在线更新方式优势更加明显。

5 结束语

针对航电系统中FPGA芯片程序远程更新,给出了一种基于RapidIO的FPGA远程在线更新方案。采用软件无线电设计思想、硬件通用化设计、软件可复用可重构思路进行。经测试,设计稳定可靠,相比传统的JTAG加载方式,本设计更新FPGA程序的速度得到了很大的提升。该设计目前已用于某工程项目中。

参考文献:

[1]陈颖,苑仁亮,曾利.航空电子模块化综合系统集成技术[M].北京:国防工业出版社,2013:1-2.

[2]李强,罗超,夏威,等.FPGA远程更新系统[J].仪表技术与传感器,2014(7):72-74.

[3]刘剑,李赛辉,周邦华,等.一种基于Nand Flash多版本程序的FPGA智能加载方法[J].雷达与对抗,2015,35(3):68-70.

[4]于乐,王嘉良.易于移植的FPGA在线更新控制器设计[J].航空电子技术,2015,46(4):47-50.

[5]黄勇.一种新型的FPGA快速动态配置和远程加载技术[J].通信技术,2013,46(12):93-96.

[6]汪灏,张学森.一种基于串行方式的FPGA远程加载电路[J].电子科学技术,2016,3(2):171-173.

[7]赵秋明,王龙飞,肖丹,等.一种新型软件无线电重构加载方法研究[J].电视技术,2013,37(19):87-90.

[8]熊璐.基于CPCI的动态可重构系统设计与实现[J].现代电子技术,2016,39(8):104-107.

[9]黄振中,倪明,柴小丽.基于VxWorks的RapidIO-IP设计与实现[J].计算机工程,2010,36(18):243-245.

[10]王怡然,常文革,田海山.Rapid IO技术在高速信号处理系统中的应用[J].雷达科学与技术,2013,11(4):390-394.

Design and Implementation of FPGA Remote Update System Based on RapidIO

ZHU Daoshan

(The10th Research Institute of China Electronics Technology Group Corporation,Chengdu610036,China)

Abstract:FPGA is widely used in avionics system,the method using JTAG to download the program is limited by the environment and equipment,it is inefficient,lack of flexibility and difficult to meet the needs of engineering demands.In this paper,a scheme to realize remote update of FPGA program is proposed.The scheme uses the Rapid IO bus to build an online update real-time communication link in a heterogeneous way.The image file is transmitted from SRIO switch network to the FPGA node through the Ethernet,and then is written into the FLASH configuration space to achieve the remote update of FPGA program.After the test,the correctness and feasibility of the design is verified.The speed of FPGA program update is improved effectively.

Key words:field programmable gate array(FPGA);Rapid IO;online update;flash;virtual channel

中图分类号:TN919;TN957

文献标志码:A

文章编号:1672-2337(2017)05-0543-05

DOI:10.3969/j.issn.1672-2337.2017.05.015

收稿日期:2017-02-23;

修回日期:2017-03-28

基金项目:所发展基金科研项目

作者简介:

朱道山男,1985年出生于安徽六安,工程师,主要研究方向为数字信号处理、通信中间件设计。E-mail:287063854@qq.com