FPGA远程升级技术的分析与实现
2012-01-14刘永恩王俊芳
刘永恩,王俊芳
(中国电子科技集团公司第五十四研究所,河北石家庄050081)
0 引言
FPGA是作为专用集成电路(ASIC)领域中的一种半定制电路而出现的,既解决了定制电路的不足,又克服了原有可编程器件门电路数有限的缺点。独特的技术优势使得FPGA自1985年第一片诞生,在短短20多年内广泛用于各个领域,尤其是通信、信息处理等领域[1]。随着 FPGA的广泛应用,FPGA设计工程师们也越来越感到,当电路板置入设备中尤其是当这些设备分布各地且位于较偏僻地域时,用传统FPGA升级方法升级带来的诸多不便。
1 远程升级技术
绝大多数FPGA均为基于SRAM的工艺,最大特点是掉电数据会丢失,无法保存,所以它们的系统除了一个FPGA器件以外,外部还需要增加一个配置芯片用于保存编程数据,每次上电的时候都需要从这个配置芯片将配置数据流加载到FPGA,然后才能正常运行。FPGA的配置和开发环境一般由FPGA器件生产厂商提供或推荐。Altera公司推荐的当前FPGA开发环境为QuartusII,用于 Altera公司各类FPGA的设计、配置等。其中QuartusII中集成的Programmer工具用于FPGA的在线配置或外置掉电不易失器件的烧写。
Altera公司FPGA器件的配置主要有3种:主动模式、被动模式和联合测试行动组(JTAG)模式[2],其具体说明如表1所示。
表1 Altera FPGA配置简表
尽管Altera的FPGA器件可以支持表1所示多种配置方法,但受限于芯片支持范围、成本和设计复杂度等因素,真正在工程中被推荐使用的常用方法有:主动串行(AS)方式、被动串行(PS)方式和JTAG下载方式。
FPGA的配置一般是通过计算机的并口、网口或通用串行总线(USB)接口经专用下载电缆完成。FPGA的远程升级就是实现能从远端包括在不用打开设备机箱的情况下脱离专用下载电缆就可以完成FPGA的更新。
2 关键技术
FPGA的远程升级需要解决的关键技术包括配置方式、配置文件、文件传输和文件更新等。
2.1 配置方式
2.1.1 JTAG配置方式
JTAG配置方式一般是由调试主机通过专用下载缆在线配置,每次掉电,配置数据丢失,再次加电时必须重新配置。为了使FPGA在每次加电时可以不必采用调试主机下载方式而能自动完成配置加载,Altera公司推荐了如下配置方式:采用外接微处理器(或微处理器+复杂可编程逻辑(EPLD))+通用存储器实现,利用微处理器(或微处理器 +EPLD)设计实现JTAG接口,将通用存储器中的FPGA配置代码通过该JTAG接口完成更新[3]。
基于JTAG下载的远程升级方案的优点是可以采用通用存储器来存储FPGA配置代码。
不足:① 需要增加分离器件微处理器(或EPLD),增大了电路面积、成本和功耗等;② JTAG接口的技术实现比较复杂;③与通过JTAG接口的编程下载缆方式容易冲突,很难共存,对于单板调试非常不便。
2.1.2 PS配置方式
PS是并行配置模式,配置速率较高。典型的PS下载电路为:微处理器+通用存储器+EPLD。EPLD用来设计实现PS接口,微处理器+通用存储器实现配置代码的存储与控制[4]。
基于PS的远程升级方法的优点是可以采用通用存储器来存储FPGA配置代码。
不足是需要增加分离器件微处理器(或EPLD)而增大了电路面积、成本和功耗等。
相比较于JTAG方法,PS接口的实现相对简单、对于单板调试影响较小。
2.1.3 AS配置方式
AS下载方式是Altera公司针对其专用的配置代码存储Flash芯片EPCS系列推出的下载方法,EPCS系列的存储容量为4 ~128 Mbit,价格相对低廉,内置配置时序电路,用户使用方便,是工程应用最为广泛的配置方法。
基于AS的配置方式不需要增加分离器件,无需设计配置接口,有效避免了前2种配置方法的不足,其专用存储Flash芯片EPCS成本低廉,设计简单,不影响单板调试,不增加额外的芯片或电路模块,可以利用FPGA实现上电复位,增加远程升级功能对于单板调试没有任何影响[5]。
从Cyclone系列FPGA开始,为了配合软核Nios处理器的灵活应用,Altera公司开始在本公司的FPGA器件中集成了一个叫altasmi_parallel的知识产权(IP)核。altasmi_parallel可以像双端口RAM等IP一样通过内置Megawizard工具在设计中调用,提供了一种通过并行数据端口对配置芯片EPCS的擦除、写入和读取等功能。这样FPGA设计中编写一个控制逻辑电路,就可以方便地通过地址数据总线这样一种通用处理器控制模式(GPCM)对其进行操作,完成对EPCS的读写操作,如采用擦除—写入—读出校验的流程,其数字逻辑电路设计框图如图1所示。
实现的逻辑流程图如图2所示。
图1 数字逻辑电路设计
图2 可靠远程升级配置方法流程
对于Cyclone III及以后的FPGA器件,还可以采用更为可靠的远程配置方案。需要利用Altera公司提供的一个专用远程控制模块(ALTREMOTE_UPDATE),将专用串行存储器件(EPCS)根据容量和功能需要划分为若干个页,目前最大支持7个页,其中页0存储成为厂级配置的代码,可以保证FPGA的基本功能的实现。其他页中可以存储不同的应用配置代码,每次上电时,根据远程控制寄存器设定需要选择的应用代码进行配置,当应用代码异常时,看门狗定时器将会超时,此时自动进入页0的厂级配置区,完成厂级代码的配置,保证电路的基本功能。可靠远程升级配置方法的数字逻辑电路设计框图如图3所示。
图3 可靠远程升级设计
2.2 配置文件
Altera公司FPGA的配置文件格式有:①SRAM目标配置文件(.sof),一般用于JTAG方式在线下载;②编程目标文件 (.pof),一般用于专用配置器件如 EPCS等器件的下载;③ 原始二进制文件(.rbf),用于并行配置方案;④ 原始编程数据文件(.rpd),多用于AS模式对专用配置器件下载;⑤十六进制文件(.hex或.hexout),符合 Intel方式的ASCII编码文件,多用于采用第三方存储器件时;⑥ 列表文本文件(.ttf),用于 FPP、PPS、PPA或 PS配置方案;⑦ 串行位流文件(.sbf),仅限于用专用BitBlaster下载配置某些 FLEX系列器件时使用;⑧JAM文件(.jam),ASCII编码格式文件,因包含配置器件信息而多用于多器件链式配置时;⑨JAM字节文件(.jbf),是字节格式的JAM文件。
根据对于配置方式的分析,在FPGA远程升级时需要用到扩展名为sof、pof或rpd的配置文件,其中sof和pof文件用于本地配置,rpd文件专门用于远程升级。
2.3 文件传输
在FPGA的配置代码向目标配置器件的传输上,传统升级方法一般通过主机的USB接口或计算机并口采用对应的专用下载电缆传输。但RS-232串口和以太网接口应用更为普遍。目前基于RS-232串口的常用文件传输协议有协议和基于以太网接口的FTP协议。这2种协议均较成熟,参考设计较多,实现相对容易。
2.3.1 X.Modem协议
X.Modem协议最早是用于2台计算机之间通过RS-232异步串口通信进行文件传输的通信协议。使用X.Modem协议的数据帧格式如表2所示。其中,循环冗余校验(Cyclic Redundancy Check,CRC)码是数据通信领域中最常用的一种差错校验码,其特征是信息字段和校验字段的长度可以任意选;段起始(Section Overhead,SOH)指帧的开头字节,代表数据帧的第1个字节;信息包序号,对256取模所得到当前包号,第1个信息包的序号为1,以后依次加1,而信息包序号范围0~255;信息包序号的补码,当前信息包号的补码(255减去信息包序号);数据区段,数据区段的长度固定为128 Byte,其内容没有任何限制,可以是文本数据或二进制数据,不足128 byte的用16进制的0x1A填充。
表2 X.Modem协议的数据帧格式 (单位:Byte)
远程升级的单元板一般用于X.Modem协议的接收处理,其核心是CRC校验,根据CRC校验结果启动重传要求或接受处理。X.Modem协议中使用的是CRC-ITU-T校验方式,其生成多项式为:x16+x12+x5+1,用十六进制的表示为:0x1021,目前已经有很多此种CRC的推荐实现方式[6]。
2.3.2 文件传输协议(FTP)
FTP是文件传输协议/互连协议(TCP/IP)协议簇的一种具体应用,是网络中极为实用的服务之一。它工作在开放系统互连(OSI)模型的第7层,TCP模型的第4层,即应用层,使用TCP传输而不是用户自定义协议(UDP),客户在和服务器建立连接前要经过一个“三次握手”的过程,保证客户与服务器之间的连接是可靠的,而且是面向连接,为数据传输提供可靠保证。它允许用户以文件操作的方式(如文件的增、删、改、查、传送等)与另一主机相互通信[7]。
FTP的内部协议命令采用四字符的美国信息交换标准码(ASCII)序列,以一个换行符作为结束,有些代码后还会有相应的参数。FTP的连接一般是有2个连接,一个是客户和服务器传输命令的连接,另一个是数据传送的连接。FTP服务程序一般会支持2种不同的模式:Port模式和Passive模式[8]。
X.Modem协议和FTP协议在主机侧已经集成在多种应用软件如超级终端等,各种参考实现方式一般也是开源的,非常便于进行开发利用。在实际应用中还可以考虑利用其他方式如基于TCP/IP的UDP方式等。
2.4 文件更新
传统升级方法的文件更新依赖于专用开发环境的进程控制,而且对于可靠性要求不高,可以随时进行重新下载,而远程升级则需要有较高的可靠性设计作为保障,否则一旦出现升级故障,则必须采用传统升级方法完成。因此必须采取可靠的校验机制,在校验发现错误时启动重写操作或恢复操作。
2.5 工程应用及验证
在大型专用综合业务互联网络中,核心交换机功能复杂,整个设备超过13块单元板和20个FPGA器件,需要经常性的进行FPGA升级。设备对外提供RS-232串口和以太网接口,设备内部各单元板之间有专用通信通道。
采用FPGA远程升级技术,可以方便地对设备内各个FPGA芯片进行升级。利用该互联网络的综合业务支持能力,可以将待升级代码通过综合业务支持能力传递至目标设备,然后利用远程升级技术便可进行所有目标设备的FPGA升级。不再需要工程师们奔波在目标设备间,打开设备机箱进行繁琐的本地FPGA升级方式。
3 结束语
FPGA的远程升级是一项复杂的系统工程,可以实现的方法很多,但核心原则就是通过对配置方式的深入研究,以依托一种可靠的便于实现的文件传输协议,在尽可能不增加电路成本的基础上完成配置文件的可靠传输,然后实现配置代码的更新,从而实现FPGA的升级。远程升级技术一般不需要增加分离器件和专用电路,不增加功耗和成本,不影响基于传统方法本地升级的单板调试,为FPGA的升级带来了很大的便利,已经在很多工程中得到成功应用。
[1]王灵芝,林培杰,黄春晖.FPGA的配置及其接口电路的设计.电子测量与仪器学报,2007,21(2):109-112.
[2]吴冬冬,杨晓君,张佩珩.一种FPGA的远程系统升级方法.计算机工程与应用,2006,18(1):86-89.
[3]陈兴文,刘 燕,高彦龙.基于单片机实现FPGA的加载配置[J]. 现代电子技术,2005,13(3):45-47.
[4]屈 杰,朱光喜,谭 力,等.基于网络和PowerPC系统的FPGA远程配置.无线电通信技术,2008,12(1):101-102.
[5]石雪梅,计贤春.FPGA配置芯片测试方法的研究与实现[J]. 计算机与数字工程,2010,20(9):77-79.
[6]李 帅,聂慧饶,马 浩,等.基于嵌入式系统的 XMODEM协议下的文件传送[J].计算机应用,2010,10(S1):188-189.
[7]黄世权.FTP协议分析和安全研究[J].微计算机信息,2008,11(6):93-94.
[8]赵宝钢,李齐斌,高 伟.用Winsock实现FTP文件的上传与下载.信息技术,2005,3(2):89-91.