一种远程动态可重构的嵌入式系统设计

2014-01-01 03:09张建志
无线电工程 2014年8期
关键词:寄存器编程重构

王 珊,张建志

(1.中国电子科技集团公司第五十四研究所,河北石家庄050081;2.空军驻石家庄地区军事代表室,河北石家庄050081)

0 引言

基于FPGA的动态可重构系统,可在运行时动态改变系统部分逻辑电路的功能,而不影响其他逻辑电路的正常运行,既充分发挥了硬件的高效性,又提供了软件的编程灵活性[1]。随着FPGA的广泛应用,特别是将其应用于较为偏僻区域时,传统的FPGA可重构技术就显现出诸多不便。随着网络技术的不断发展,支持远程动态重构,具有在线更新和维护能力的嵌入式系统越来越多地应用在无人值守或特殊环境中。在系统中运用动态可重构系统设计及互联网可重构逻辑(Internet Reconfigurable Logic,IRL)设计技术,实现对软/硬件任务的远程更新和配置,极大地方便了可重构系统的设计过程和更新维护过程[2,3]。可重构系统通常在两种情况下对FPGA进行重新配置[4]:① FPGA逻辑功能需要改变,例如功能升级;②FPGA配置数据发生错误而导致功能失效,如在空间辐射环境下的单粒子翻转(Single Event Upsets,SEU)效应导致配置数据错误或勘正错误。本文实现了在PowePC+FPGA的异构多核体系结构上的远程动态可重构的嵌入式系统设计,在软硬件无缝集成的基础上提出了基于Vxworks操作系统的硬件透明编程框架,给出了具体的硬件平台设计和软件设计流程,实现了FPGA动态可重构和FPGA配置数据的可回读。

1 动态可重构技术的分类

20世纪70年代末,前苏联计算机专家Suetlana P.Kartashev 和 Steven I.Kartashev 博士就提出了动态可重构的系统结构的概念,但直到2000年以后,FPGA的动态重构研究才在国际上得到了越来越多的关注[5]。就目前来说,可重构系统的划分有很多种,并没有完全定型。FPGA动态重构根据重构面积的不同,可以分为全局重构和局部重构。动态全局重构是指重新配置FPGA的全部逻辑,重构过程中,计算的中间结果必须存放在额外的存储区中,直到新的功能全部下载完为止,重构前后电路相互独立,没有关联[6]。动态局部重构是指重新配置FPGA的部分区域,重构过程中,FPGA没有重构部分的工作状态不受影响,减小重构范围和单元数目,可以大大缩短重构时间。

2 FPGA动态重构的实现

动态重构实现通常有两种方法:Off-Chip重构和Context重构[5]。Off-Chip重构是通过外围接口将配置信息传送到芯片配置存储器的一种重构方式。而对于具有多重Context结构的DR-FPGA是通过更新配置存储器和片上Context存储器的部分或全部配置信息进行Context重构的。Off-Chip重构时,在外部逻辑的控制下,配置信息通过远程以太网传送到配置存储器(Configuration Memory,CM)中,CM再将配置信息加载到FPGA内部的逻辑单元(Logic Cell,LC)中,对芯片逻辑进行全局或局部的功能修改。本设计采用基于模块化设计方法对FPGA局部重构,将部分不需要更改的逻辑功能划分到固定模块中,需要更改的部分逻辑功能划分到可重构模块中。固定模块内部实现了对外接口的控制逻辑功能,PowerPC的Flash扩展功能等不需要更改的逻辑功能。可重构模块内实现数据处理算法,对于不同外设输入的数据采用不同的数据处理算法,即FPGA的重构模块局部重构一次,数据处理算法更换一次。

3 系统实现

3.1 硬件透明编程系统架构

在VxWorks嵌入式实时操作系统的基础上,建立硬件透明编程平台,在实现远程动态可重构之前,先对硬件进行预配置,获得硬件运算加速,降低重构带来的开销,从而提高系统性能。在该平台中,可将动态可重构资源,像软件资源一样加载和释放,使其既具有软件的灵活性,又具有专用集成电路的高效性。硬件透明编程操作系统的体系结构,把动态可重构计算系统作为一组由微处理器和硬件加速器组成的共享内存的混合处理单元,其编程模型为程序员提供一个类似于常规软件开发环境的接口[7]。软件任务运行在中央处理器(Central Processing U-nit,CPU)上,硬件任务运行在FPGA上。本系统的架构分为4层[8,9]:① 应用层:为设计者提供软件函数库、硬件的函数库和应用程序接口(Application Program Interface,API)。其中硬件函数是对系统中的硬件加速器进行操作的函数。每个硬件加速器都有一个加速器调用函数,当需要使用某个硬件加速器时,调用相应的硬件函数。硬件函数分为3个部分:对参数进行标准化处理;调用系统函数从用户态进入管理态,对硬件进行管理和配置,并取得设备地址;将设备地址作为参数,通过设备驱动程序,传递给硬件加速器,并对硬件加速器进行发射,最后从结果寄存器中取回相应计算结果。②操作系统层:为进程通信、同步和硬件函数调用提供机制和支持,并跟踪和管理可重构资源,为网络通信提供TCP/IP协议栈。③软硬件结合层:包括硬件任务配置控制器(简称配置控制器)和硬件任务管理数据库(简称任务管理)。其中配置控制器是与FPGA配置方式密切相关的控制器,当收到调度器的配置命令后,从配置数据库中取出对应FPGA的配置数据,完成其配置。任务管理用来存放事先由综合工具综合,并存储在非易失存储器中的FPGA的配置数据。④硬件层:包括硬件线程和硬件线程接口。硬件线程的创建通常是通过对FPGA的配置来实现,创建代价较高,通常在毫秒级,甚至在秒级,对于VxWorks实时操作系统来说必须考虑。但是硬件线程通常创建后就独占相应计算资源,不必进行任务切换。可重构资源的大小决定了硬件线程的数量。硬件透明编程模型如图1所示。

图1 硬件透明编程模型

3.2 远程动态可重构系统的硬件构成

采用PowerPC MPC8349微处理器为主控CPU,主要执行网络控制等各种控制任务,其程序存储在Flash中。复杂可编程逻辑器件(Complex Programmable Logic Device,CPLD)和FPGA均选用Xilinx公司的芯片,其中FPGA为Virtex-5系列芯片(Virtex-5 XC5VSX50T),该系列FPGA基于SRAM工艺,具有配置逻辑可重构,配置数据可回读功能。配置时采用SelectMAP模式,FPGA在配置时钟的上升沿接收8位配置数据,同时也可以通过此接口回读出FPGA的配置数[10,11]。此配置模式具有速度快,重构时间短的优点。CPLD作为控制读写PowerPC、配置FPGA和回读FPGA配置数据的接口电路。远程动态可重构系统硬件平台如图2所示。4个功能寄存器:编程寄存器、配置寄存器、监测寄存器和回读寄存器的逻辑框图如图3所示。

图2 远程动态可重构系统硬件平台

图3 CPLD内部逻辑

CPLD内部寄存器配置表如表1所示。

①编程寄存器的地址偏移为0x00,使用数据线的DB[2∶0]位分别为 CS、WRITE和 PROGRAM 信号输出,用来完成启动FPGA配置时序的功能。

②配置寄存器的地址偏移为0x02,使用DB[15∶8]位作为FPGA的配置数据位,DB[0]位为FPGA的配置时钟CCLK,用来从PowerPC数据线上接收配置数据,传给 FPGA的专用配置数据线DATA[7∶0]。

③监测寄存器的地址偏移为0x04,将数据线的DB[1∶0]位作为DONE和INIT信号的输入。PowerPC开始给FPGA配置数据前,检测INIT信号,当INIT信号出现上升沿时开始传送FPGA的配置数据;配置完成时,PowerPC检查FPGA的配置状态。当DONE信号变为高电平时,表明配置成功,否则说明配置失败,重新配置FPGA。

④回读寄存器的地址偏移为0x06,在回读FPGA时,PowerPC先将编程寄存器中的CS和WRITE置低,然后通过配置寄存器向FPGA发送回读命令,随后经编程寄存器中的CS和WRITE信号置高,进入回读时序:利用配置寄存器的DB[0]产生读时钟CCLK,在上升沿时,FPGA输出配置数据,存储到回读寄存器中。最后PowerPC从回读寄存器中读出FPGA数据。

表1 CPLD内部寄存器配置

对于FPGA动态部分重构而言,其配置比特流相对于完全重构要小很多,在部分重构时,未重构部分仍然能够继续工作,这样会使重构的时间减少。设FPGA的重构时间为t,配置时钟频率为f,配置数据的字节数为n,那么重构时间t=n/f。

本嵌入式平台中,PowerPC MPC8349提供的配置时钟频率为33 MHz,配置文件大小为2.38 MB(2 502 534 bytes),FPGA一次全部配置时间约为76 ms。对可重构模块来说,只需要部分配置比特流数据大小为193 324 bytes,重构时间约为59 ms。可见FPGA部分重构比完全重构所需要的重构时间要少。

3.3 FPGA配置数据的远程传输

本系统中FPGA配置数据的传输是在TCP/IP协议的基础上实现的,客户端与服务器端建立连接之前要经过“三次握手”的过程,保证客户与服务器之间的连接是面向连接的,为数据传输提供可靠保证[12]。PowerPC MPC8349自带了2个以太网控制器TSEC(Three-Speed Ethernet Controller),作为以太网接口与外部的PHY芯片相连接。计算机端是在Windows环境下基于Socket编程,编写一个简单的客户端程序,由计算机通过网络向系统发送FPGA配置数据,供系统重构使用。在嵌入式系统端,利用VxWorks操作系统提供的Socket函数库,编写一个服务器端程序,用来接收计算机上的客户端发送来的FPGA配置数据,并把接收的数据存放在数据Flash中供PowerPC配置FPGA用。

为了防止配置数据在传输过程中发生丢失,如突然掉电和网络突然断开等意外情况,需要在Flash中建立一个数据备份区、一个数据使用区和一个数据是否传输完成标志over_flag。数据备份区存放接收过程中的数据,数据使用区存放正常配置使用的数据。当TCP开始传输第一包数据时,将over_flag置为0,表示配置数据还没有传输完毕,此时数据全部存放在FLash的数据备份区中;直到系统将所有配置数据传输完毕后,将备份区中的数据搬移到数据使用区中,然后将over_flag置为1,表示以后可以用新的数据对FPGA进行配置。当异常发生时,只要系统检测over_flag不为1,就不会将数据备份区中不完整的配置数据搬移到数据使用区中,出现FPGA重构错误。

面向连接套接字的配置数据收发简单流程如图4所示。PowerPC从FPGA的回读寄存器中读出配置数据,通过TCP/IP通信协议将数据传送到计算机中,进行保存。通过将FPGA的回读数据和原始配置数据进行比较,判断配置数据是否存在单粒子翻转效应。若有错误发生,则重新配置FPGA,从而提高系统的可靠性。

图4 基于TCP/IP的配置数据收发流程

4 结束语

对远程动态可重构的嵌入式系统展开了研究,提出了一种基于VxWorks的硬件透明编程框架。统一的实时多任务编程模型可以有效缩短可重构系统的设计周期,基于TCP/IP的远程重构功能也为系统提供了更多灵活性。可回读功能可以有效地避免网络噪声、网络传输引起的错误,同时也是一种抗单粒子翻转的有效措施。

可重构处理技术是一种全新的信息处理方法,对提高电子信息系统的自适应能力、可靠性有重要的实际意义。

[1] DEHON A,WAWRZYNET J.Reconfigurable Computing:What,Why,and Implications for Design Automation[C]∥New Orleans USA:Proc.of the 36th ACM/IEEE Design Automation Conference,1999:610 -615.

[2] 侯 方,王 颖,周学功,等.支持远程动态重构的嵌入式系统设计[J].计算机工程,2012,38(7):213 -216.

[3] 王浩波,郭金鹏.星载环境下可重构技术分析[J].无线电工程,2012,42(1):40 -42.

[4] 周盛雨,孙辉先,陈晓敏,等.实现FPGA回读功能的可重构系统设计[J].计算机工程,2007,33(12):270-271.

[5] 谷 銮,徐贵力,王友仁.FPGA动态可重构理论及其研究进展[J].计算机测量与控制,2007,15(11):1 415-1 418.

[6] 周盛雨,孙辉先,陈晓敏,等.基于FPGA的动态可重构系统实现[J].电子器件,2007,30(2):646 -650.

[7] 邹 袆,吴 强,赵远宁.支持动态可重构硬件透明编程的预配置调度[J].计算机工程与应用,2008,44(27):52-55.

[8] 周 博,王石记,邱卫东,等.SHUM_UCOS_基于统一多任务模型可重构系统的实时操作系统[J].计算机学报,2006,29(2):208 -218.

[9] 王 伟,宫玉梅,曹 征.面向自重构系统的软硬件协同透明编程模型[J].科技信息,2011(22):665-667.

[10]张承畅,严单贵,杨力生,等.基于XCF32P的多 FPGA配置方案[J].计算机工程,2010,36(15):260 -261.

[11]屈 杰,朱光喜,谭 力,等.基于网络和PowerPC系统的FPGA远程配置[J].无线电通信技术,2008,34(1):45-47.

[12]刘永恩,王俊芳.FPGA远程升级技术的分析与实现[J].无线电工程,2012,42(9):48-60.

猜你喜欢
寄存器编程重构
视频压缩感知采样率自适应的帧间片匹配重构
STM32和51单片机寄存器映射原理异同分析
长城叙事的重构
编程,是一种态度
元征X-431实测:奔驰发动机编程
编程小能手
Lite寄存器模型的设计与实现
纺织机上诞生的编程
北方大陆 重构未来
移位寄存器及算术运算应用