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