文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2013)12-0031-03
局部動態(tài)自重構(gòu)系統(tǒng)是一種新型的可重構(gòu)計算系統(tǒng)。實現(xiàn)自重構(gòu)系統(tǒng)的可編程器件必須具有局部動態(tài)可重構(gòu)能力。局部動態(tài)可重構(gòu)是指系統(tǒng)在運行過程中可以對部分資源進行重新配置,而其余資源仍保持正常運行,分時復(fù)用可重構(gòu)硬件上的資源實現(xiàn)不同的邏輯功能。目前,Xilinx公司Virtex系列和Spartan系列的FPGA芯片支持局部動態(tài)可重構(gòu)技術(shù)[1]。自重構(gòu)系統(tǒng)以可重構(gòu)邏輯器件內(nèi)嵌的微處理器實現(xiàn)對動態(tài)重構(gòu)的控制和調(diào)配[2]。自重構(gòu)系統(tǒng)具有從器件內(nèi)部訪問配置數(shù)據(jù)的接口。Xilinx Virtex-Ⅱ以后的FPGA提供了ICAP,其主要作用就是按照特定時序?qū)⑴渲脭?shù)據(jù)重新配置到重構(gòu)區(qū)域中[3]。
Xilinx公司于2006年提出EAPR動態(tài)可重構(gòu)設(shè)計方法[4]。這種方法的本質(zhì)是對基于模塊的動態(tài)可重構(gòu)設(shè)計方法的改進,支持高端Virtex-4以上的Virtex系列芯片,任意矩形的局部重構(gòu)區(qū)域使有限的資源得到充分利用;靜態(tài)模塊的全局信號直接穿過可重構(gòu)區(qū)域,靜態(tài)模塊與重構(gòu)模塊使用基于Slice的總線宏進行通信,使得系統(tǒng)時序性能好,總線密度大。本文結(jié)合現(xiàn)有的基于FPGA的嵌入式系統(tǒng)開發(fā)流程和基于EAPR的動態(tài)可重構(gòu)設(shè)計方法研究自重構(gòu)系統(tǒng)的架構(gòu)及開發(fā)流程,設(shè)計一個局部動態(tài)自重構(gòu)系統(tǒng),該系統(tǒng)有2個可重構(gòu)區(qū)域,每個可重構(gòu)區(qū)域有2個可重構(gòu)模塊。
1 局部動態(tài)自重構(gòu)系統(tǒng)架構(gòu)
本文提出的局部動態(tài)自重構(gòu)系統(tǒng)架構(gòu)如圖1所示。PowerPC405處理器控制重構(gòu)過程,兩個重構(gòu)區(qū)域分別通過通用I/O設(shè)備(GPIO)和OPB_DCR_Socket模塊使能總線宏。System ACE 和ICAP配合完成系統(tǒng)重構(gòu),并將重構(gòu)過程中的一些提示信息通過UART串口在超級終端上顯示。系統(tǒng)的各個主要組成部分說明如下。
(1)可編程邏輯門陣列FPGA
ML403的主芯片XC4VFX12-FF668-10C屬于Virtex-4 FX系列。Virtex-4 FX系列器件針對嵌入式處理和高速串行連接,采用90 nm工藝,密度高達(dá)20萬邏輯單元[5];將8位ICAP擴展到32位,時鐘頻率可達(dá)100 MHz,而且支持二維區(qū)域的局部動態(tài)可重構(gòu)。在重構(gòu)設(shè)計過程中,將FPGA劃分為可重構(gòu)區(qū)域和固定區(qū)域,固定區(qū)域在系統(tǒng)運行過程中保持不變,通過處理器控制重構(gòu)區(qū)域的重新配置實現(xiàn)新的邏輯功能。本文劃分為固定區(qū)域和2個可重構(gòu)區(qū)域(PRR_Math和PRR_LED),每個區(qū)域有2個重構(gòu)模塊,分別實現(xiàn)加法和乘法、LED燈向左和向右流水點亮的重構(gòu)。
(2)基于Slice的總線宏
FPGA劃分的多個區(qū)域之間通過基于Slice的總線宏進行通信??偩€宏是事先布好線的用來精確布線軌道的宏,其位置固定,重構(gòu)時保持不變,包括基于三態(tài)緩沖器TBUF(Tri- state Buffer)的總線宏和基于Slice的總線宏?;赥BUF的總線宏結(jié)構(gòu)簡單,可控制信號的傳輸方向,但不能控制信號的通斷。而在重構(gòu)過程中,來自重構(gòu)區(qū)域的不穩(wěn)定信號可能會影響其他模塊的正常運行,所以需要在重構(gòu)過程關(guān)閉總線宏,這就要求總線宏有個使能控制端口。Virtex-4以后的芯片使用基于Slice的總線宏解決了這個問題,它利用FPGA內(nèi)部用作靜態(tài)路由的預(yù)留連線作為模塊之間的通信通路,在設(shè)計時,重構(gòu)模塊不能使用這些資源。
(3)PowerPC硬核處理器
Virtex-4集成了一個32位的PowerPC405硬核處理器。PowerPC405經(jīng)過綜合、布局布線后集成到FPGA內(nèi)部的固定位置,不占用FPGA內(nèi)部的任何邏輯資源和存儲單元,運行速度可達(dá)到芯片標(biāo)稱值,且不影響其周邊邏輯的布局布線[3]。PowerPC采用精簡指令哈佛結(jié)構(gòu),支持5級標(biāo)量流水線,具有獨立的指令和數(shù)據(jù)緩存、32個32位通用寄存器、內(nèi)存管理單元和片內(nèi)存儲器接口,是本文系統(tǒng)的核心部件之一,用于對重構(gòu)過程進行控制。
(4)總線技術(shù)
PowerPC處理器支持IBM CoreConnect總線技術(shù)。本文使用的3種總線,包括處理器本地總線PLB(Process Local Bus)、片上外設(shè)總線OPB(On-chip Peripheral Bus)和設(shè)備控制寄存器DCR(Device Control Register)總線。PLB總線連接高速外設(shè),本文中用于連接PowerPC處理器與Block RAM控制器;OPB總線用于處理器與其他低速外設(shè)之間的互連;DCR總線連接控制總線宏的寄存器。
(5)SystemACE CF
System ACE是Xilinx公司為解決多片大規(guī)模FPGA的應(yīng)用而提出的一套解決方案。外部存儲器CF卡用來保存FPGA的配置文件,可直接插拔,具有非易失性。采用SystemACE CF配置方案實現(xiàn)動態(tài)重構(gòu)具有升級速度快、配置數(shù)據(jù)安全性好等優(yōu)點。重構(gòu)時,首先將生成的全局初始.bit配置文件轉(zhuǎn)換成.ace文件,然后將.ace文件和部分配置文件存儲在CF卡中;開發(fā)板上電后,System ACE控制器通過JTAG端口讀取CF卡的.ace全局配置文件,對FPGA進行初始配置,PowerPC微處理器通過內(nèi)部訪問配置端口 ICAP讀取重構(gòu)模塊的比特流文件實現(xiàn)重構(gòu)。
(6)ICAP
ICAP是Xilinx公司在Virtex-Ⅱ之后的FPGA中提供的一個內(nèi)部配置訪問端口,HWICAP IP核將ICAP、BRAM及相關(guān)的控制器封裝在內(nèi)部,掛載到OPB總線上。ICAP可以讀寫FPGA的配置數(shù)據(jù)幀。ICAP控制器負(fù)責(zé)ICAP的讀寫狀態(tài)及ICAP與BRAM之間的數(shù)據(jù)傳輸。BRAM用來保存從CF中讀取的重構(gòu)模塊的比特流配置文件或者從配置存儲器中讀回的配置數(shù)據(jù)。采用ICAP方案實現(xiàn)自重構(gòu)過程是基于“讀-修改-寫”機制的[6]。重構(gòu)時,首先通過ICAP端口將需要修改的數(shù)據(jù)幀從配置存儲器讀到BRAM中;然后處理器修改這些數(shù)據(jù)幀;最后再通過ICAP將其寫回到配置存儲器中。處理器利用ICAP直接控制FPGA的重構(gòu)過程,重構(gòu)速度快,系統(tǒng)效率高。
2 系統(tǒng)開發(fā)流程
本文設(shè)計的自重構(gòu)系統(tǒng)有2個可重構(gòu)區(qū)域??芍貥?gòu)區(qū)域PRR_Math以IP核的形式實現(xiàn)加法和乘法的重構(gòu),重構(gòu)過程通過OPB-DCR Socket模塊使能總線宏;可重構(gòu)區(qū)域PRR_LED實現(xiàn)開發(fā)板上的4個LED燈向左和向右流水點亮的重構(gòu)。這2個模塊通過ISE生成網(wǎng)表,完成布局布線,以GPIO作為總線宏的使能端口。靜態(tài)模塊實現(xiàn)對LED燈的控制,當(dāng)按下暫定鍵時,LED暫停流水點亮;當(dāng)按下開始鍵時,LED開始流水點亮。系統(tǒng)上電后,首先System ACE控制器通過JTAG端口讀取存儲在CF卡中的.ace文件對FPGA進行初始全局配置,初始的全局配置實現(xiàn)乘法和向右流水點亮LED。開發(fā)板通過串口UART與PC通信,并通過超級終端進行顯示和調(diào)試。重構(gòu)時,在超級終端鍵入命令,處理器接受命令后,通過ICAP讀取相應(yīng)的重構(gòu)模塊對FPGA重新配置,通過在超級終端上測試和觀察開發(fā)板LED的變化驗證重構(gòu)是否實現(xiàn)。本文采用基于EAPR的局部動態(tài)重構(gòu)設(shè)計方法進行系統(tǒng)設(shè)計,開發(fā)流程如圖2所示。
(1)設(shè)計輸入和綜合
系統(tǒng)包括靜態(tài)模塊、可重構(gòu)模塊和頂層模塊。靜態(tài)模塊是除了重構(gòu)模塊以外的所有模塊,包括處理器模塊。靜態(tài)模塊實現(xiàn)對LED燈的控制,處理器模塊控制重構(gòu)過程。2個重構(gòu)區(qū)域分別有2個重構(gòu)模塊,同一重構(gòu)區(qū)域的可重構(gòu)模塊具有相同的端口定義和實體名,要放在不同目錄下分別進行綜合。靜態(tài)模塊和所有的重構(gòu)模塊在綜合時都不添加I/O端口。頂層模塊只進行各個模塊的例化,即只定義模塊的端口信號,而不進行具體的行為描述,包括處理器模塊、靜態(tài)模塊、重構(gòu)模塊、總線宏、時鐘及一些信號聲明等。頂層模塊在綜合時要添加I/O端口。完成這一步驟將產(chǎn)生所有模塊的.ngc網(wǎng)表文件。
(2)軟硬件設(shè)計
在XPS中搭建系統(tǒng)硬件平臺,添加所需IP核,硬件平臺如圖3所示。在SDK上進行軟件編程和調(diào)試,生成executable.elf可執(zhí)行文件。
(3)添加約束
利用PlanAhead添加約束,如區(qū)域約束、時序約束和引腳、時鐘、總線宏的位置約束等。添加各約束之后運行DCR檢查是否滿足設(shè)計要求。
(4)實現(xiàn)模塊
靜態(tài)模塊和重構(gòu)模塊的實現(xiàn)包括轉(zhuǎn)換、映射和布局布線3個步驟。重構(gòu)模塊必須在靜態(tài)模塊成功實現(xiàn)之后才可進行。
(5)合并
運行PR Assemble將各個模塊合并,產(chǎn)生各重構(gòu)模塊的.bit文件、各區(qū)域的空位流文件和一個包含靜態(tài)模塊及動態(tài)模塊的全配置文件static_full.bit。生成的static_full.bit文件只含有硬件信息,需要將此文件和system_stub.bmm、executable.elf文件合并成包含軟硬件完整信息的download.bit文件。
(6)轉(zhuǎn)換文件
系統(tǒng)上電后,通過讀取CF卡中的.ace文件對FPGA芯片進行初始配置,將上一步生成的download.bit轉(zhuǎn)換為CF可執(zhí)行的.ace文件。
(7)設(shè)計驗證
將生成的system.ace、重構(gòu)配置文件和空位流文件下載到CF卡的根目錄下,連接開發(fā)板與PC進行設(shè)計驗證和調(diào)試。
3 實驗結(jié)果
在Xilinx XC4VFX12FF668-10 ML403開發(fā)板上進行驗證,開發(fā)板的配置模式設(shè)計為JTAG方式,配置資源選擇開關(guān)打向System ACE端,串口線連接開發(fā)板與PC,打開超級終端,超級終端設(shè)置波特率為115 200 b/s,8 bit數(shù)據(jù)位,無奇偶校驗,這里的設(shè)置和創(chuàng)建硬件平臺系統(tǒng)的設(shè)置要保持一致。系統(tǒng)上電后,讀取system.ace文件完成初始配置后,開發(fā)板上的DONE指示燈變?yōu)榫G色,說明配置成功完成,這時激活的乘法模塊和右移模塊開始工作。觀察到4個LED燈向右流水點亮,當(dāng)按下暫停鍵時,LED停止流水點亮;當(dāng)按下開始鍵時,LED開始向右流水點亮。超級終端顯示提示信息,輸入O后系統(tǒng)提示要輸入兩個操作數(shù),完成乘法運算。結(jié)果顯示如圖4所示。
根據(jù)提示命令,輸入a或A命令實現(xiàn)加法運算,輸入l或L命令實現(xiàn)向左流水點亮LED燈;輸入o或O命令,系統(tǒng)接收兩個操作數(shù)后執(zhí)行加法運算,并將運算結(jié)果顯示在超級終端上。觀察開發(fā)板的4個LED燈變成向左流水點亮,按下暫停鍵,LED停止流水點亮;按下開始鍵,LED開始向左流水點亮。超級終端顯示如圖5所示。
當(dāng)系統(tǒng)不需要執(zhí)行重構(gòu)模塊的功能時,可根據(jù)提示輸入空白配置文件的相應(yīng)命令使系統(tǒng)處于待機模式。當(dāng)需要時再輸入相應(yīng)命令進行配置。這樣可減少系統(tǒng)的功耗。
重構(gòu)時間是重構(gòu)系統(tǒng)的一個關(guān)鍵指標(biāo)。理論上,重構(gòu)時間等于配置文件大小與配置速率的比值。實際上,還需要考慮總線的傳輸速率和HWICAP的配置速率。本文只從理論上分析重構(gòu)時間,而重構(gòu)時間和配置文件大小成正比,生成的配置文件大小如表1所示。從表中可以看出,重構(gòu)模塊的配置文件比全局配置文件大幅度減小,采用局部動態(tài)配置時,只需下載重構(gòu)模塊的配置模塊,重構(gòu)時間也將大幅度縮短。另外,本文系統(tǒng)通過ICAP配置,ICAP數(shù)據(jù)位寬為32 bit,時鐘頻率為100 MHz,配置速率很高,所以在重構(gòu)時間上具有一定的優(yōu)勢。
本文采用EAPR方法,利用ML403開發(fā)板集成的PowerPC405微處理器設(shè)計驗證系統(tǒng)的自重構(gòu)功能。在系統(tǒng)運行過程中,可以替換或停止某一不需要或出錯的功能模塊來保證系統(tǒng)不間斷地運行。系統(tǒng)采用軟硬件協(xié)同設(shè)計,使設(shè)計流程并行化,開發(fā)周期短,硬件分時復(fù)用,資源利用率高。基于EAPR的局部動態(tài)自重構(gòu)技術(shù)已經(jīng)成為業(yè)界的研究熱點,隨著技術(shù)不斷成熟,將逐步應(yīng)用到實際產(chǎn)品中。
參考文獻(xiàn)
[1] SEDCOLE P,BLODGET B,BECKER T,et al.Modular dynamic reconfiguration in Virtex FPGAs[C].Computers and Digital Techniques,IEE Proceedings,2006,153(3):157-164.
[2] 孫道讓,劉蘊紅.FPGA遠(yuǎn)程動態(tài)重構(gòu)技術(shù)的研究[J].電子技術(shù)應(yīng)用,2012,38(3):37-40.
[3] 徐問波,田耕.Xilinx FPGA開發(fā)實用教程(第2版)[M]. 北京:清華大學(xué)出版社,2012.
[4] Xilinx Inc.UG208:Early access partial reconfiguration user guide[EB/OL].(2006-03-16)[2013-08-03].http://www.xilinx.com.
[5] Xilinx Inc.DS112:Virtex-4 family overview(V3.1)[EB/OL].(2010-8-30)[2013-08-03].http://www.xilinx.com/support/documentation/data_sheets/ds112.pdf.
[6] Xilinx Inc.Virtex-4 configuration guide,UG071(V1.1) [EB/OL].[2004-09-10][2013-08-03].http://www.xilinx.com.