摘 要: 提出了一種基于現場可編程門陣列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.