你的位置:EETOP 赛灵思(Xilinx) 社区 >> >> 全部 >> 详细内容

FPGA远程动态重构技术的研究

发布者:jackzhang 时间:2013-12-29 19:50:19

摘要: 提出了一种FPGA 远程动态重构的方法, 结合FPGA 动态重构技术和GSM 通信技术来实现。利用GSM 技术实现配置数据的无线传输,在单片机控制下将数据存储于CF 卡中。在内嵌硬核微处理器PowerPC405 控制下,FPGA 通过内部配置存取端口读取CF 卡中新的配置数据, 对可重构区进行配置以实现新的功能。

随着现场可编程门阵列的广泛应用, 对其进行灵活的重新配置的研究也越来越多。目前绝大多数FPGA 都是基于查找表LUT (Look UP Table ) 的技术, 采用SRAM工艺生产。这种工艺的FPGA 有两层结构, 上层为配置存储器, 下层是硬件逻辑层。通过上层配置信息控制硬件层门电路的通断, 改变芯片内基本逻辑块的布线, 从而形成特定的功能。这种架构为动态重构技术实现提供了可能。一个FPGA 大型数字系统总是由很多功能模块组合而成, 这样各个系统模块的激活状态就可能在时间轴上产生分离, 时间上分离的模块就可以共用一个硬件逻辑区, 根据需要对这个逻辑区动态地改变配置, 实现不同的功能, 这就是局部动态重构[ 1]。FPGA 的动态重构使其应用更加灵活, 减少了硬件的资源消耗, 缩短了开发周期。但是对一些特殊场合, 如深海数据采集或机器人野外勘探, 开发者可以为某个系统模块设计几个功能, 设备在自主运行过程中根据需要选择相应的配置数据进行配置。如果遇到特殊环境, 事先设计的功能有可能不适合工作要求, 需要增加新的功能。在目前硬件进化技术还无法进行实际应用的情况下, 本文设计了一种远程动态重构的系统来解决上述问题。

1 远程动态重构系统的结构
远程动态重构系统有PowerPC 处理器和89C54 微控制器两个核心。VirtexII -Pro FPGA 内部集成有2 个PowerPC405 嵌入式处理器[2], 本文系统使用其中一个, 实现对动态重构进行控制和调配。FPGA 内部用于对局部重构区域PRR 进行重新配置的硬件模块有3 个, 分别是嵌入式内核PowerPC、系统高级配置环境System ACE和内部配置访问通道ICAP。System ACE 是一种在系统编程的高级配置解决方案, 它提供CF (Compact Flash ) 、MPU 和Test JTAG 等多个接口, 本系统采用CF 卡作为配置数据的来源, 可以更方便地改变和存储配置数据。ICAP 的主要作用就是按照特定时序将配置数据重新配置到PRR 中[3]。

远程数据传输通过外接控制器89C54 完成, 一方面控制器要通过UART 接口接收GSM 模块TC35 传来的数据; 另一方面要把接收到的配置数据写入CF 卡中, 以供FPGA 系统读取。

System ACE 和89C54 控制器共用CF 卡的控制接口。为避免互相影响, 本系使用多路复用器将CF 卡端口做分时复用处理, 即配置过程中与System ACE 连接,而数据传输存储过程中与89C54 进行连接。远程动态重构系统结构如图1 所示。

图1:远程动态重构系统结构

2 远程动态重构的本地准备
以机械手臂的控制为例, 采用PID 控制、模糊控制:和备用三种控制方案, 每个控制算法经过验证综合生成独立的bit 流模块。这三个模块共用一个可重构的区域PRregion , 根据具体情况, 选用最适合的算法模块, 动态地配置重构区域来控制机械手臂, 其他静态逻辑区域则仍然正常运行。这样不仅提高了系统的灵活性, 而且节省了配置时间、减少了不必要的消耗。FPGA 的设计流程一般包括设计、仿真、综合、实现过程, 本文根据系统自身结构提出如图2 所示的设计流程。

图2:本文根据系统自身结构提出的设计流程

FPGA 重构系统综合使用EDK(Embedded Development Kit) 、ISE和PlanAhead 多种工具平台, 采用分层化设计,以简化设计过程。其过程如下:
(1) 利用嵌入式开发工具EDK 设计一个基于PowerPC405的嵌入式控制系统[4], 添加SystemACE_Compact-Flash 外设以支持从CF 卡配置FPGA; 添加IP 核opb_hwicap 以支持嵌入式内核通过ICAP 读取配置数据动态地配置FPGA。

(2)EDK 包含有软件开发工具SDK, 因此利用SDK对PowerPC405 进行软件编程和调试, 最终生成应用程序二进制executable.elf 文件; 利用EDK 外设创建向导, 创建多个控制算法IP 模块, 在各自的VHDL 文件中编写相应的算法; 使用ISE 工具对多个算法模块进行综合、创建顶层模块、实例化嵌入式系统和算法模块。综合产生top 网表文件。

(3) 创建PlanAhead 工程, 使用以上产生的网表文件和约束文件进行布局布线。其中最重要的是将算法模块设置为可重构模块, 对其进行严格的区域约束[ 5], 其约束代码如下:
AREA_GROUP "AL_PRregion" RANGE = SLICE_ (minX)
(minY):SLICE_(maxX)(maxY)
AREA_GROUP "AL_PRregion" RANGE = RAMB16_
(minX)(minY):RAMB16(maxX)(maxY)

在PlanAhead 工具中可以通过可视化方法进行区域约束, 既直观又简单。可重构模块在运行过程中如果需要实现不同的控制算法, 则需要在重构区中添加所有算法模块综合生成的网表文件、使用PR Assemble 命令生成多个不同的算法bit 流文件。除了动态bit 流文件外,PlanAhead 还会产生一个静态完整的bit 流文件static_full.bit 。可执行以下两个命令生成ace 配置文件:
(1)data2mem -bm implementation/system_stub_bd -bt implementation/static_full.bit -bd TestApp/executable.elf tag
ppc310_0 – o b implementation/static.bit 。

(2)xmd -tcl genace.tcl -jprog -target ppc_hw -hw
implementation/static.bit -elf TestApp/executable.elf -board
ml310 -ace system.ace 。

3 远程动态重构的实现
经过动态重构本地准备之后, 得到如表1 所示的CF卡配置文件列表。设置保留模块,是为了给新的控制算法保留一个接口(以一个空文件存储在CF 卡中)。

表1 :CF卡配置文件列表

传统的本地重构设计完成后, 针对重构区域会得到几个不同的配置文件, 如针对机械臂控制算法重构区得到两个初期设计的控制算法配置文件。在实际运行过程中, 有些环境只需PID 控制就可满足要求, 而有些环境采用模糊控制更合适。如果采用这两种控制方法都不能满足工作要求时, 必然要对初期设计进行升级, 对复杂危险的工作现场进行远程动态重构。

本文提出的设计方法是:GSM 模块作为远程数据传输工具, 与89C54 单片机通过UART 端口连接, 单片机接收到一个扇区512 B 的数据写入CF 卡reserved.bit 文件中。GSM 模块采用西门子公司的TC35 模块,它支持AT指令,由89C54 发送AT 指令ASCI 码对TC35 进行控制[5]。本设计主要涉及到的AT 指令如表2 所示,TC35 以串行模式与89C54 进行通信。

表2 主要的AT 指令表

CF 卡必须格式化成FAT16 格式才能用于FPGA 的配置文件存储。FAT 格式磁盘必须一次性对一个扇区进行操作, 所以单片机必须从TC35 接收满512 B 的数据才可以对CF 卡进行写操作。FPGA 配置完成之后CF 卡处于闲置状态, 通过多路复用器将CF 卡与外接控制器连接以完成对.bit 文件的读写操作。单片机对CF 卡进行操作本质就是对FAT 文件系统的读写。

FAT 格式磁盘的逻辑分区依次为: 引导扇区、文件分配表(FAT1 和FAT2) 、文件目录区(FDT) 和数据区[6]。引导扇区用于存储引导程序和磁盘信息, 外界访问CF卡都要经过引导区的识别验证;FAT 是给每个文件分配磁盘物理空间的表格, 数据区的划分单元为簇, 一个簇包括64 个扇区,FAT 表正是为每个文件构造一个簇链表; 文件目录区是寻找文件的入口, 其内容是每个文件的目录信息; 在文件目录之后的扇区都是以簇为单位进行数据存储, 这就是数据区。

CF 卡与89C54 接口配置关系如图3 所示, 单片机使用TrueIDE 模式对CF 卡进行读写, 采用逻辑块LAB(Logical Block Addressing ) 方式进行寻址。

图3:CF 卡与89C54 接口配置关系

CF 卡写一个扇区( 读扇区基本相似, 限于篇幅不列出) 的代码如下:
Write_Sectors: mov R2,#1 ; 一次写一个扇区
mov R3,#0Ah; 假设LBA 为000000Ah
mov R4,#0
mov R5,#0
mov R6, #0
mov R7, #WriteSctr
acall Function; 将参数写入CF 控制寄存器
acall WaitDRQ ; 等待数据请求
acall Write512
ret
Write512 :mov R0,#high(data); 取数据高地址
mov R1,#low(data); 取数据低地址
mov R7,#2 ;512 B= 2 * 256
mov R6,#0 ;256 B
write: mov dph,R0; 获取地址
mov dpl, R1
clr a
movc a, @a+dptr ; 获取一个数据
inc dptr ; 指向下一个数据
mov R0, dph ; 保存地址
mov R1, dpl
mov DPTR,#Data_Reg; 到CF 数据寄存器
movx @dptr, a ; 向CF 卡写一个数据
djnz R6, write
djnz R7, write ; 将512 B 的数据全部写入CF 卡
ret

远程动态重构的流程如图4 所示。现场TC35 接收到新短信数据时会有触发信号发送给89C54 单片机, 单片机开始读取TC35Flash 数据。在对CF 卡进行写操作之前, 首先要读取reserved.bit 文件的首簇号; 读取CF 卡文件目录表FDT, 得到reserved.bit 的信息, 其中偏移地址为1Ah~1Bh , 所存储的2 B 为文件首簇号, 而接下来4 B代表文件大小。由文件首簇号在FAT 表中找到文件入口, 然后跟踪簇链至簇尾(0XFFFF) , 按照LAB 寻址方式将数据按扇区写入CF 卡数据区, 逻辑扇区号LBA 可由簇号按公式“LBA=( 簇号-2)×64+513 ” 计算得到。如果文件数据量比旧文件多, 则在FAT 中增加链表, 直至把数据存储完毕; 如果文件较小, 则将原文件剩余FAT 簇链都写入0x0000, 以释放空间。对CF 卡的写操作则不对其他区域进行更改。

图4:远程动态重构的流程

CF 卡数据更新完毕后,接通CF 卡与SystemACE 控制器之间的多路复用器, 对控制算法重构区进行局部动态配置, 配置过程中不对其他逻辑区域的运行造成影响。

远程动态重构结合了FPGA 局部动态重构和GSM无线数据传输的优势, 对用在野外勘测的机器人和数据采集处理系统有很高的应用价值, 允许设计人员根据系统运作情况实时地改变机器人的控制算法或数据处理算法, 使其更加适合工作环境, 既方便了设计人员对远程设备的配置升级, 又节省了大量人力物力。今后该方案将计算机与FPGA 硬件平台连接, 可以为硬件的外部进化远程下载染色体到硬件平台提供有效途径。

作者:孙道让,刘蕴红 来源:《电子技术应用》2012年第38卷第3期

最新课程

  • 深入浅出玩儿转FPGA

    本视频基于Xilinx公司的Artix-7FPGA器件以及各种丰富的入门和进阶外设,提供了一些典型的工程实例,帮助读者从FPGA基础知识、逻辑设计概念

  • 从零开始大战FPGA基础篇

    本课程为“从零开始大战FPGA”系列课程的基础篇。课程通俗易懂、逻辑性强、示例丰富,课程中尤其强调在设计过程中对“时序”和“逻辑”的把控,以及硬件描述语言与硬件电路相对应的“

  • Verilog基础及典型数字

    课程中首先会给大家讲解在企业中一般数字电路从算法到流片这整个过程中会涉及到哪些流程,都分别使用什么工具,以及其中每个流程都分别做了