基于FPGA动态自重构的嵌入式系统设计

时间:2022-09-06 11:30:32

基于FPGA动态自重构的嵌入式系统设计

摘要:本文提出了一种设计动态自重构系统的设计方法。这种方法可以有效地利用现有的IP核,将其经过处理就可以作为动态重构系统的可重构IP核使用。该方法可降低开发成本,缩短设计周期,同时应用动态重构技术的系统层设计是目前的研究热点。本设计使用Xilinx 公司新推出的ISE8.2i、EDK8.2i和PlanAhead9.2.7 FPGA开发工具,依托XUP Virtex-|| Pro xc2vp30 FF896-7 FPGA 开发板为平台,以其内嵌微处理器为核心搭建了一个可重构系统。该设计有3个重构区域,每个区域有至少两个配置文件,可根据需要在软件程序的调配下实现动态配置。由此系统功能的灵活性和硬件资源的利用率将得到改善。

关键字:动态自重构;FPGA;微处理器;嵌入式系统;IP核

FPGA-based Dynamic Self-reconfiguration Embedded System Design

LI Peng-fei, TANG Zhen-an ,WANG Kaiyu , CHAO Ming , QU He

(Dalian University of Technology, Province Liaoning, City Dalian. Post code: 116024)

Abstract: This paper presents a new approach for the design of dynamic self-reconfiguration system. This methodology can take full advantage of the existing IP cores existed and put them into the dynamic reconfiguration system through port optimization, reducing development cost and design period. Adapting dynamic reconfiguration into system level design is a research hotspot. This design uses the new version development tools, ISE8.2i, EDK8.2i, PlanAhead9.2.7, of Xilinx Co., and it is based on the XUP Virtex-|| Pro xc2vp30 FF896-7 FPGA development board embedded with the embedded microprocessor. The design has three reconfiguration regions and each one can be reconfigured with at least two functions under the control of software running on the microprocessor. So,the function flexibility of the system and hardware resources utilization ratio can be improved.

Keywords: dynamic self-reconfiguration;FPGA;microprocessor, embedded system;IP core

1引言

对于一个大规模数字逻辑系统而言,系统规模是由各种逻辑功能模块组合而成,无论对于一个时序逻辑系统,还是组合逻辑系统或是组合时序混合系统,系统各个功能模块在时间轴上并不是完全重叠的[1],那些不经常被激活但又必需的功能模块就成为提高资源利用率和降低能耗的制约因素。动态重构技术的引入可有效地解决这一问题。动态重构(Dynamic Reconfiguration)是FPGA重构特性的高级版,又叫运行时重构(Run-time Reconfiguration),是指FPGA能够在运行中动态地改变其特定区域内的电路结构,而不影响非重构区域以外的功能模块的正常运行。对于片上系统而言,系统规模的扩大往往是通过扩大芯片规模实现,而现在动态自重构技术的应用便可以利用较少的硬件资源实现较大的系统功能,同时达到降低系统的能耗和提高系统灵活性的目的。

笔者是在XUP Virtex-|| Pro xc2vp30 FF896-7 开发板的基础上对动态自重构系统设计方法进行研究。使用Xilinx公司推出的ISE8.2i 、EDK8.2i、PlanAhead 9.2.7 三种FPGA开发软件,同时使用Xilinx公司的BFM8.2(Bus Function Model)工具包和Mentor Graphics公司的仿真工具Modelsim 6.2b对生成的IP核进行总线功能仿真,验证IP核的功能。

2FPGA动态自重构系统结构

图1是FPGA的典型结构图。它有两层结构,上层为配置存储器(Configuration Memory, CM),用作存储配置信息,下层为硬件逻辑层,通过上层的配置信息控制硬件层的门电路的通断,从而形成特定的功能。支持动态重构的FPGA芯片的独特之处在于可以动态改写配置存储器定区域内的数据,从而改变FPGA部分区域的逻辑功能,对外显示出动态重构的特性。

图1

早期的关于动态重构的设计实现处在逻辑层次,没有涉及到片上系统的动态重构,所以虽然动态重构理论很早就被提出来,但是将其应用到实践中却迟迟没有实现。随着FPGA架构及其制造工艺的发展,Xilinx 公司领先推出的Virtex 系列FPGA很好地支持了这项技术,同时其不断更新FPGA开发软件使动态重构的设计日趋方便简洁。图(2)是我们设计的动态重构嵌入式系统的结构图。

图2

该系统主要实现两个功能,一个是对音频滤波的功能,在PRR1、PRR2两个区域内实现,每个区域有四种不同的重构功能,分别是全通滤波、带通滤波、高通滤波、低通滤波,PRR1是左声道滤波,PRR2是右声道滤波。另一个是算术功能模块,在PRR3区域内实现,具有两种重构功能,分别是整数加法和整数乘法。可以根据用户的需要在软件的控制下动态地改变三个重构区域内的功能,其他功能模块仍然正常运作,这样就提高了系统的灵活性,节省配置时间同时可消除不必要的能耗,用时配置之,不用时擦除之。

3FPGA动态自重构系统的设计实现

FPGA的一般设计流程是设计、仿真、综合、实现,而我们提出基于FPGA的动态自重构系统的设计方法的流程图如图(3)所示。

图3

图3中通用IP核的生成与普通的基于FPGA的数字电路设计流程相同,根据用户需要定制特定功能的IP核,Xilinx公司提供了ISE、System Generator开发工具进行设计,简单功能的逻辑电路可直接通过EDK中的Core Generator工具包进行设计。BFM(Bus Function Model)是针对系统总线挂载的IP核进行仿真[3],避免了对整个系统进行仿真的复杂,针对性强,能够模拟系统总线的功能及时序对所设计的IP核进行功能验证。在设计基于动态重构技术的系统时,这种IP核只能作为一个静态模块来使用,不具备动态重构的特性,要成为重构IP核还需要进一步的端口处理,目前还只能采用文本编辑的方式进行。

程序段中的总线宏带有使能端,通过使能端就可以控制总线宏的通断,这就保证了重构模块可以在重构过程中与“外界”保持隔离,不影响系统的正常运行。将总线宏封装为一个IP核,进行系统设计,可有效减少设计复杂度。因为每个重构区域内有至少两个功能模块,所以每个重构模块需要单独处理并生成网表。在PlanAhead中放置总线宏,同时对系统中各模块进行区域面积约束、DRC验证、布局布线以及PR Assemble后生成配置文件[4]。最后将全配置文件download.bit转化为.ace格式的文件,就完成了整个系统的设计。

首先根据系统框图我们需要设计高通、低通、带通、全通的音频滤波的IP核,以及整数加法、乘法的IP核。滤波功能模块在System Generator 开发工具内设计实现,并借助EDK开发软件中的Core Generator工具包使滤波功能模块转化为适用于XPS(EDK的工具包)系统平台的IP核,加法和乘法功能的IP核直接通过Core Generator工具生成。生成IP核后对其进行总线功能仿真,检查IP核是否满足功能要求,这是由BFM(Bus Function Model)工具包完成的。图4为整数加法IP核的BFM仿真截图。

图4

根据系统框图,在XPS中进行,系统中既有静态部分即非重构部分,也有动态部分。并且每个重构区域内必须预设一个功能,搭建完毕后综合生成网表,生成的网表文件.ngc及约束文件.ucf将在后续步骤中作为PlanAhead 工具创建工程时的导入文件。

软件程序的调试在SDK工具包中进行。重构前通过程序读写DCR总线控制寄存器内的值,使能总线宏,然后读取CF卡中配置信息,ICAP对配置存储器CM内配置帧进行读改写,配置完成后再使能总线宏,使重构功能模块与系统保持正常通信。

PlanAhead 进行区域约束,布局布线及生成配置文件.bit,按照设计需要我们将首先为三个动态区域进行区域约束如图5,新推出的PlanAhead的工具为GUI操作界面,简化了设计流程,避免以文本或命令形式进行约束的繁琐,便于反复修改完善设计。

图5

图6

约束后要进行DRC验证,确保符合设计规则,因为使用的Virtex-|| Pro xc2vp30 型号的FPGA芯片,该芯片的配置单元是以帧为单位,一列即是一帧,在进行约束时务必保证静态区域不能与重构区域处于同一列,各重构区域之间当然也不能处于同一列。这也是该芯片的不足之处,易造成不必要的资源浪费。执行Place & Route操作,按照约束进行布局布线。

图7

图8

整个系统完成布线后如图6所示,图7为重构区域内的功能擦除后的布线图,图8为区域2内带通滤波的布线,严格按照区域约束的要求进行布线。在空闲状态可以将重构区域内的配置擦除,以达到降低功耗的目的。经过布局布线后得系统的资源利用情况,见表1。

表1

最后通过PR Assemble 生成全配置文件static_full.bit和部分功能的***_partial.bit配置文件,如表2所示。

此时的static_full.bit 只是系统硬件的配置文件,并不包含软件信息。通过命令将static_full.bit、system_stub.bmm、executable.elf文件合并为download.bit 文件,完整的系统配置文件,既包含硬件配置信息,又包含软件数据。但要实现动态自重构还需要将download.bit 文件转化为.ace 格式的文件。

表2

此时将system.ace 文件及部分配置文件拷贝到CF 卡中,通过超级终端输入信息,由微处理器上运行的软件程序实现动态重构。因为重构区域的配置文件相较整个系统的配置文件要小,所以在动态配置时间很短,这也是动态重构技术较静态重构的一大优势。

3结论

本文中提出了一种设计动态自重构嵌入式系统的设计方法,这种方法有效地缩减了设计时间而且方便反复修改以提高系统性能。动态重构技术代表了一种新的设计思想,使得数字逻辑系统的设计从原来一味的追求芯片的逻辑规模转向注重对芯片逻辑资源的分时复用,从功能固定的数字系统转向具有自适应和自修复能力的数字系统。随着计算机技术的不断发展,对CPU性能、功耗等的要求也越来越高,多核技术正是基于这些需求发展起来,随FPGA制造技术及EDA工具的不断推陈出新,将FPGA应用到计算机架构中已成为业界为寻找突破CPU架构瓶颈的一个突破口,动态重构技术的迅速发展将使可重构计算机不再是梦想。

参考文献

[1]黄俊,朱明程. 局部动态重构在SOPC中的应用. 深圳大学学报理工版,第23卷第4期2006年10月.

[2]Jürgen Becker, Adam Donlin, Michael Hübner: New tool support and architectures in adaptive reconfigurable computing. VLSI-SoC 2007: 134-139

[3]Xilinx, Inc.”UG254: EDK BFM Simulation”.v1.0, July 18th, 2006.

[4]Xilinx, Inc.”PlanAhead Software as a Platform for Partial Reconfiguration”. Cell Journal, Fourth Quarter 2005.

作者简介

飞,硕士研究生,主要研究方向为FPGA的动态重构技术及其数据通信;

唐祯安,现任大连理工大学电信学院微电子研究所所所长、教授、博士生导师,曾长期在香港科技大学、日本东京大学和法国斯特拉斯堡大学合作研究。

上一篇:嵌入式系统的选用方法初探 下一篇:一种变送器电路的噪声分析与优化设计