基于FPGA的多模块动态可重配置系统
扫描二维码
随时随地手机看文章
摘 要: 提出了一种基于现场可编程门阵列FPGA的多模块动态可重配置系统平台,并在该平台上实现了一个多模块动态自重配置发射机系统。与传统的动态可重配置系统相比,多模块动态可重配置系统的各动态模块能够单独地进行重配置,重配置控制比较灵活,部分重配置比特流较小,所需的部分重配置比特流数量较少。
关键词: 现场可编程门阵列;动态部分重配置;多模块动态可重配置系统
使用动态部分重配置技术构建动态可重配置系统是近年来出现的一种新的方法,是当前FPGA的主要发展方向和研究热点之一。基于FPGA的动态可重配置系统,指的是支持不同工作模式的逻辑,是通过对具有专门缓存逻辑资源的FPGA,进行局部的芯片逻辑的重配置而快速实现[1],而且在对局部的芯片逻辑进行重配置的同时,芯片的其他部分保持其实现功能不变且处于不间断的运算状态。动态可重配置系统具有配置速度快和可扩展性好等优点。
传统的基于模块化的动态可重配置系统只有1个动态模块。在构建系统时,首先进行动态模块和静态模块的划分,将需要重配置的子模块划入动态模块,其余子模块划入静态模块,重配置是对动态模块进行的。这种动态可重配置系统的主要缺点是重配置的灵活性不够,不能对各子模块进行单独地重配置,在动态模块中的1个子模块需要更新时,需要对整个动态模块进行重配置。
本文基于Xilinx公司的FPGA芯片XC2VP30,提出了一种多模块动态可重配置系统平台。在该平台上构建的系统具有多个动态模块,每个动态模块可以单独地进行动态重配置,具有较好的灵活性。
1 动态部分重配置技术
1.1 Xilinx FPGA芯片对动态部分重配置技术的支持
Xilinx公司是主要的FPGA芯片生产厂商之一,其生产的FPGA芯片支持基于模块化的动态部分重配置技术,并且为模块之间的通信提供了一种总线宏。它允许信号穿过部分重配置模块的边界,保证穿过可重配置模块边界的布线资源是完全固定而且必须是静态的。每次实现部分重配置时,总线宏用来确定模块间的布线通道没有改变,保证正确的连接[2]。
Xilinx Virtex-II系列以后的FPGA芯片提供了内部配置访问端口ICAP(Internal Configuration Access Port),这使得FPGA中内嵌的处理器能够直接在可编程逻辑器件内部对其配置数据进行操作[3]。使用ICAP使得芯片上的静态模块可以控制该芯片上动态区域的逻辑重配置,但在重配置期间必须保证静态模块的完整性。这种方式扩展了动态部分重配置的概念,被称为自重配置或者自重构,是动态部分重配置的一种特殊形式[4]。
为方便对ICAP的使用,Xilinx公司还提供了对ICAP封装后的可直接挂在片上外设总线OPB(On-Chip Peripheral Bus)上的IP核——OPB_HWICAP。
1.2 在Xilinx FPGA芯片中构建基于模块化的动态可重配置系统的流程
在Xilinx FPGA芯片中构建基于模块化的动态可重配置系统需遵循如下的流程:
(1)进行动态模块和静态模块的划分,需要重配置的子模块为动态模块,其他子模块为静态模块。
(2)对顶层逻辑、动态模块和静态模块分别进行设计与综合。
(3)编写系统约束文件,其主要内容包括:为各I/O口指定管脚约束、为各模块分配位置、指定待重配置的模块为动态模块、指定各总线宏和其他顶层逻辑的位置及指定时钟约束等。
(4)对动态模块和静态模块分别进行激活,即分别进行转换、映射和布局布线等操作。
(5)将各模块激活后的布线结果组装起来,与顶层逻辑一同进行转换、映射和布局布线,生成最终的全局布线图。
(6)由全局布线图生成初始全局比特流,由各不同版本的动态模块的布线图生成部分重配置比特流[5]。
2 动态可重配置系统平台
2.1 传统的动态可重配置系统平台
传统的动态可重配置系统平台如图1所示。该平台将需要重配置的子模块划入动态模块,将不需要重配置的子模块划入静态模块,动态模块和静态模块之间的通信通过跨越模块边界的总线宏实现。
该平台只有1个动态模块,其主要缺点是重配置不够灵活,不能对动态模块中的各子模块进行单独的重配置。
2.2 多模块动态可重配置系统平台
多模块动态可重配置系统平台可以有效地克服传统的动态可重配置系统平台的缺点。为方便对多模块动态可重配置系统平台的说明,以图2所示的系统为例。该系统共有5个子模块,包括2个静态子模块和3个动态子模块。在传统的动态可重配置系统平台上构建的系统框图如图3所示,将3个动态子模块放入FPGA的动态模块中,2个静态子模块放入FPGA的静态模块中。
在多模块动态可重配置系统平台上构建的系统框图如图4所示。在该系统中,FPGA分为5个部分,系统的每个子模块被单独指定为动态模块或者静态模块,各子模块之间通过跨越模块边界的总线宏进行通信。
相对于图3所示的传统的动态可重配置系统,多模块动态可重配置系统的3个动态模块可以单独进行动态重配置,重配置方式比较灵活。同时,由于每个动态模块的规模相对较小,因而相应的部分重配置比特流也较小,具有更高的配置速度,所需的用于存储部分重配置比特流的空间也较小。
在系统内有较多的动态子模块,而且各动态子模块的版本数较多时,传统的动态可重配置系统所需的部分重配置比特流的数量很大,所需的用于存储部分重配置比特流的空间相对比较多,而且为所有工作模式均生成部分重配置比特流所需的工作量很大。这时多模块动态可重配置系统的优点非常明显。
2.3 多模块动态自重配置系统平台
为使系统具有自重配置的功能,使系统重配置的控制更加灵活,以图2所示的系统实例,可构建如图5所示的多模块动态自重配置系统。
在该系统中,重配置控制子系统以软核处理器MicroBlaze为核心,片上外设总线OPB上连接了DDR SDRAM控制器、OPB_HWICAP和UART控制器3个模块。其中,DDR SDRAM控制器为片外存储器DDR SDRAM的控制IP核,用来控制存储部分重配置比特流的DDR SDRAM;OPB_HWICAP用来控制内部配置访问端口ICAP;UART控制器用来控制串口,通过串口可以和主机进行通信。
Xilinx公司提供的OPB_HWICAP核为对ICAP封装后的可直接挂在OPB总线上的IP核,在该IP核的内部将OPB总线的接口逻辑与ICAP原语相连。由于ICAP位于FPGA芯片的右下角,因此在构建可重配置系统平台时,需要对该IP核进行修改,即将ICAP原语从OPB_HWICAP核中分离出来,将修改过的OPB_HWICAP核放在位于FPGA左侧的静态模块1中,将ICAP原语放在位于FPGA右侧的静态模块3中,修改后的OPB_HWICAP核与ICAP原语的通信通过跨越中间各动态和静态模块的特殊的总线宏实现。
在该平台上构建动态可重配置系统之后,按照前述构建动态可重配置系统的流程生成初始全局比特流和各动态模块的各版本的部分重配置比特流,并将部分重配置比特流存储在DDR SDRAM中。首先下载运行初始全局比特流,然后系统等待主机自串口发送的重配置命令。系统接收到重配置命令并对其解析之后,根据需要从DDR SDRAM中选择相应的部分重配置比特流送至ICAP,完成重配置以实现所需选择的工作模式。
2.4 多模块动态自重配置发射机系统
在多模块动态可重配置系统平台上构建一个简化的发射机系统,该发射机系统框图如图6所示,包含卷积编码、交织、扰码和调制4个子模块。该发射机系统可选择1/2和1/4 2种编码效率的卷积编码方式,0.6 s和4.8 s 2种交织长度,2种不同的扰码序列,以及BPSK、QPSK和8PSK 3种调制方式,共有2×2×2×3=24种不同的组合工作模式。
以图5所示的多模块动态自重配置系统平台为基础,构建多模块动态自重配置发射机系统,其框图如图7所示。
由其中1种工作模式生成初始全局比特流,4个动态模块的各不同版本均生成相应的部分重配置比特流并存储于DDR SDRAM中。首先下载运行初始全局比特流,系统收到主机自串口发送的重配置命令并对其解析后,根据要求从DDR SDRAM中读出所需的部分重配置比特流,并将其送至内部配置访问端口ICAP,即可发生相应的动态部分重配置,实现所需的编码方式、交织长度、扰码序列或调制方式。
实验表明,该发射机系统可通过动态部分重配置在各种工作模式间进行切换,且在各种工作模式下均能够正常工作。4个动态模块的一个版本的部分重配置比特流的大小分别为114 KB、188 KB、128 KB和126 KB,为全局配置比特流大小(1 415 KB)的8.06%、13.3%、9.05%和8.90%。
该系统共有2+2+2+3=9个部分重配置比特流,能够实现24种不同的组合工作模式。如果基于传统的动态可重配置系统平台构建该发射机系统,则需要生成24个部分重配置比特流。由此可见,多模块动态可重配置系统在比特流数量上的优势。
本文基于Xilinx FPGA芯片XC2VP30构建了多模块动态可重配置系统平台,并在该系统平台上实现了一个多模块自重配置发射机系统。该系统的各子模块可以进行单独重配置,能够以较少数量的部分重配置比特流实现较多的组合工作模式。
参考文献
[1] 尚丽娜.FPGA动态可重配置研究[D].杭州:浙江大学,2006.
[2] 尚丽娜,徐新民.FPGA动态重构技术在算术逻辑单元中的应用[J].电子器件,2007,30(3).
[3] 赵远宁.基于Xilinx Virtex-II Pro的过程级动态部分可重配置系统设计与实现[D].长沙:湖南大学,2008.
[4] 李涛.动态重配置系统若干关键问题的研究[D].天津:南开大学,2007.
[5] Xilinx. Development system reference guide, chapter 5: partial reconfiguration[EB/OL]. http://toolbox.xilinx.com/docsan/xilinx10/books/docs/dev/dev.pdf,2007.