《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于EAPR的局部動態(tài)自重構(gòu)系統(tǒng)的實現(xiàn)
基于EAPR的局部動態(tài)自重構(gòu)系統(tǒng)的實現(xiàn)
來源:電子技術(shù)應(yīng)用2013年第12期
王 烈,許曉潔,陳 堅
廣西大學(xué) 計算機與電子信息學(xué)院,廣西 南寧530004
摘要: 在早期獲取部分可重構(gòu)EAPR(Early Access Partial Reconfiguration)方法的基礎(chǔ)上,研究實現(xiàn)局部動態(tài)自重構(gòu)系統(tǒng)的方法和流程。設(shè)計的系統(tǒng)有兩個可重構(gòu)區(qū)域,每個區(qū)域有兩個重構(gòu)模塊,利用Virtex-4上集成的PowerPC硬核微處理器控制內(nèi)部配置訪問端口ICAP(Internal Configuration Access Port)完成自重構(gòu)。通過在Xilinx ML403開發(fā)板上進行驗證,實現(xiàn)了系統(tǒng)的自重構(gòu)功能。系統(tǒng)對部分資源的分時復(fù)用提高了系統(tǒng)的資源利用率,高的配置速率縮短了系統(tǒng)的配置時間。
中圖分類號: TP332.1
文獻(xiàn)標(biāo)識碼: A
文章編號: 0258-7998(2013)12-0031-03
Implementation of partial dynamic self-reconfiguration based on EAPR
Wang Lie,Xu Xiaojie,Chen Jian
School of Computer and Electronics Information,Guangxi University,Nanning 530004,China
Abstract: The design method and flow of the partial dynamic self-reconfiguration system were studied and implemented based on the reconfiguration design of EAPR.The system included two reconfigurable regions, each with two reconfigurable modules. The PowerPC hard core microprocessor that was integrated in the Virtex-4 was used to control the ICAP to complete self-reconfigurable. Through ML403 board of Xilinx, the function of self-reconfiguration was verified. The time devision multiplexing of part of the resource improves the resouce utilization, and the high configuration speed shortens the configuration time.
Key words : FPGA;EAPR;self-reconfiguration;microprocessor

    局部動態(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.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。