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