《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > FPGA遠(yuǎn)程動(dòng)態(tài)重構(gòu)技術(shù)的研究
FPGA遠(yuǎn)程動(dòng)態(tài)重構(gòu)技術(shù)的研究
來(lái)源:電子技術(shù)應(yīng)用2012年第3期
孫道讓?zhuān)瑒⑻N(yùn)紅
大連理工大學(xué) 電氣工程學(xué)院,遼寧 大連116024
摘要: 提出了一種FPGA遠(yuǎn)程動(dòng)態(tài)重構(gòu)的方法,結(jié)合FPGA動(dòng)態(tài)重構(gòu)技術(shù)和GSM通信技術(shù)來(lái)實(shí)現(xiàn)。利用GSM技術(shù)實(shí)現(xiàn)配置數(shù)據(jù)的無(wú)線(xiàn)傳輸,在單片機(jī)控制下將數(shù)據(jù)存儲(chǔ)于CF卡中。在內(nèi)嵌硬核微處理器PowerPC405控制下,F(xiàn)PGA通過(guò)內(nèi)部配置存取端口讀取CF卡中新的配置數(shù)據(jù),對(duì)可重構(gòu)區(qū)進(jìn)行配置以實(shí)現(xiàn)新的功能。
中圖分類(lèi)號(hào): TP271
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2012)03-0037-04
The study on remote dynamic reconfiguration technology of FPGA
Sun Daorang,Liu Yunhong
School of Electrical Engineering, Dalian University of Technology, Dalian 116024,China
Abstract: A method for dynamic reconfiguration FPGA is proposed. This method is realized based on FPGA dynamic reconfiguration technology and GSM communication technology. Configuration data is wireless transmitted based on GSM communication technology and is stored into CompactFlash card under the control of single chip microcomputer. FPGA reads the new configuration data from CF card via internal configuration access port to reconfigure the reconfigurable regions under the control of embedded microprocessor PowerPC405 to realize new functions.
Key words : dynamic reconfiguration;FPGA;embedded system;CompactFlash card;GSM

    隨著現(xiàn)場(chǎng)可編程門(mén)陣列的廣泛應(yīng)用,對(duì)其進(jìn)行靈活的重新配置的研究也越來(lái)越多。目前絕大多數(shù)FPGA都是基于查找表LUT(Look UP Table)的技術(shù),采用SRAM工藝生產(chǎn)。這種工藝的FPGA有兩層結(jié)構(gòu),上層為配置存儲(chǔ)器,下層是硬件邏輯層。通過(guò)上層配置信息控制硬件層門(mén)電路的通斷,改變芯片內(nèi)基本邏輯塊的布線(xiàn),從而形成特定的功能。這種架構(gòu)為動(dòng)態(tài)重構(gòu)技術(shù)實(shí)現(xiàn)提供了可能。一個(gè)FPGA大型數(shù)字系統(tǒng)總是由很多功能模塊組合而成,這樣各個(gè)系統(tǒng)模塊的激活狀態(tài)就可能在時(shí)間軸上產(chǎn)生分離,時(shí)間上分離的模塊就可以共用一個(gè)硬件邏輯區(qū),根據(jù)需要對(duì)這個(gè)邏輯區(qū)動(dòng)態(tài)地改變配置,實(shí)現(xiàn)不同的功能,這就是局部動(dòng)態(tài)重構(gòu)[1]。FPGA的動(dòng)態(tài)重構(gòu)使其應(yīng)用更加靈活,減少了硬件的資源消耗,縮短了開(kāi)發(fā)周期。但是對(duì)一些特殊場(chǎng)合,如深海數(shù)據(jù)采集或機(jī)器人野外勘探,開(kāi)發(fā)者可以為某個(gè)系統(tǒng)模塊設(shè)計(jì)幾個(gè)功能,設(shè)備在自主運(yùn)行過(guò)程中根據(jù)需要選擇相應(yīng)的配置數(shù)據(jù)進(jìn)行配置。如果遇到特殊環(huán)境,事先設(shè)計(jì)的功能有可能不適合工作要求,需要增加新的功能。在目前硬件進(jìn)化技術(shù)還無(wú)法進(jìn)行實(shí)際應(yīng)用的情況下,本文設(shè)計(jì)了一種遠(yuǎn)程動(dòng)態(tài)重構(gòu)的系統(tǒng)來(lái)解決上述問(wèn)題。

1 遠(yuǎn)程動(dòng)態(tài)重構(gòu)系統(tǒng)的結(jié)構(gòu)
    遠(yuǎn)程動(dòng)態(tài)重構(gòu)系統(tǒng)有PowerPC處理器和89C54微控制器兩個(gè)核心。VirtexII-Pro FPGA內(nèi)部集成有2個(gè)PowerPC405嵌入式處理器[2],本文系統(tǒng)使用其中一個(gè),實(shí)現(xiàn)對(duì)動(dòng)態(tài)重構(gòu)進(jìn)行控制和調(diào)配。FPGA內(nèi)部用于對(duì)局部重構(gòu)區(qū)域PRR進(jìn)行重新配置的硬件模塊有3個(gè),分別是嵌入式內(nèi)核PowerPC、系統(tǒng)高級(jí)配置環(huán)境System ACE和內(nèi)部配置訪問(wèn)通道ICAP。System ACE是一種在系統(tǒng)編程的高級(jí)配置解決方案,它提供CF(Compact Flash)、MPU和Test JTAG等多個(gè)接口,本系統(tǒng)采用CF卡作為配置數(shù)據(jù)的來(lái)源,可以更方便地改變和存儲(chǔ)配置數(shù)據(jù)。ICAP的主要作用就是按照特定時(shí)序?qū)⑴渲脭?shù)據(jù)重新配置到PRR中[3]。
    遠(yuǎn)程數(shù)據(jù)傳輸通過(guò)外接控制器89C54完成,一方面控制器要通過(guò)UART接口接收GSM模塊TC35傳來(lái)的數(shù)據(jù);另一方面要把接收到的配置數(shù)據(jù)寫(xiě)入CF卡中,以供FPGA系統(tǒng)讀取。
    System ACE和89C54控制器共用CF卡的控制接口。為避免互相影響,本系使用多路復(fù)用器將CF卡端口做分時(shí)復(fù)用處理,即配置過(guò)程中與System ACE連接,而數(shù)據(jù)傳輸存儲(chǔ)過(guò)程中與89C54進(jìn)行連接。遠(yuǎn)程動(dòng)態(tài)重構(gòu)系統(tǒng)結(jié)構(gòu)如圖1所示。

2 遠(yuǎn)程動(dòng)態(tài)重構(gòu)的本地準(zhǔn)備
    以機(jī)械手臂的控制為例,采用PID控制、模糊控制和備用三種控制方案,每個(gè)控制算法經(jīng)過(guò)驗(yàn)證綜合生成獨(dú)立的bit流模塊。這三個(gè)模塊共用一個(gè)可重構(gòu)的區(qū)域PRregion,根據(jù)具體情況,選用最適合的算法模塊,動(dòng)態(tài)地配置重構(gòu)區(qū)域來(lái)控制機(jī)械手臂,其他靜態(tài)邏輯區(qū)域則仍然正常運(yùn)行。這樣不僅提高了系統(tǒng)的靈活性,而且節(jié)省了配置時(shí)間、減少了不必要的消耗。FPGA的設(shè)計(jì)流程一般包括設(shè)計(jì)、仿真、綜合、實(shí)現(xiàn)過(guò)程,本文根據(jù)系統(tǒng)自身結(jié)構(gòu)提出如圖2所示的設(shè)計(jì)流程。

    FPGA重構(gòu)系統(tǒng)綜合使用EDK(Embedded Development Kit)、ISE和PlanAhead多種工具平臺(tái),采用分層化設(shè)計(jì),以簡(jiǎn)化設(shè)計(jì)過(guò)程。其過(guò)程如下:
    (1)利用嵌入式開(kāi)發(fā)工具EDK設(shè)計(jì)一個(gè)基于PowerPC405的嵌入式控制系統(tǒng)[4],添加SystemACE_CompactFlash外設(shè)以支持從CF卡配置FPGA;添加IP核opb_hwicap以支持嵌入式內(nèi)核通過(guò)ICAP讀取配置數(shù)據(jù)動(dòng)態(tài)地配置FPGA。
    (2)EDK包含有軟件開(kāi)發(fā)工具SDK,因此利用SDK對(duì)PowerPC405進(jìn)行軟件編程和調(diào)試,最終生成應(yīng)用程序二進(jìn)制executable.elf文件;利用EDK外設(shè)創(chuàng)建向?qū)?,?chuàng)建多個(gè)控制算法IP模塊,在各自的VHDL文件中編寫(xiě)相應(yīng)的算法;使用ISE工具對(duì)多個(gè)算法模塊進(jìn)行綜合、創(chuàng)建頂層模塊、實(shí)例化嵌入式系統(tǒng)和算法模塊。綜合產(chǎn)生top網(wǎng)表文件。
    (3)創(chuàng)建PlanAhead工程,使用以上產(chǎn)生的網(wǎng)表文件和約束文件進(jìn)行布局布線(xiàn)。其中最重要的是將算法模塊設(shè)置為可重構(gòu)模塊,對(duì)其進(jìn)行嚴(yán)格的區(qū)域約束[5],其約束代碼如下:
    AREA_GROUP "AL_PRregion" RANGE = SLICE_(minX)(minY):SLICE_(maxX)(maxY)
    AREA_GROUP "AL_PRregion" RANGE = RAMB16_(minX)(minY):RAMB16(maxX)(maxY)
    在PlanAhead工具中可以通過(guò)可視化方法進(jìn)行區(qū)域約束,既直觀又簡(jiǎn)單。可重構(gòu)模塊在運(yùn)行過(guò)程中如果需要實(shí)現(xiàn)不同的控制算法,則需要在重構(gòu)區(qū)中添加所有算法模塊綜合生成的網(wǎng)表文件、使用PR Assemble命令生成多個(gè)不同的算法bit流文件。除了動(dòng)態(tài)bit流文件外,PlanAhead還會(huì)產(chǎn)生一個(gè)靜態(tài)完整的bit流文件static_full.bit??蓤?zhí)行以下兩個(gè)命令生成ace配置文件:
    (1)data2mem -bm implementation/system_stub_bd -bt implementation/static_full.bit -bd TestApp/executable.elf tag ppc310_0 –o b implementation/static.bit。
    (2)xmd -tcl genace.tcl -jprog -target ppc_hw -hw implementation/static.bit -elf TestApp/executable.elf -board ml310 -ace system.ace。
3 遠(yuǎn)程動(dòng)態(tài)重構(gòu)的實(shí)現(xiàn)
    經(jīng)過(guò)動(dòng)態(tài)重構(gòu)本地準(zhǔn)備之后,得到如表1所示的CF卡配置文件列表。設(shè)置保留模塊,是為了給新的控制算法保留一個(gè)接口(以一個(gè)空文件存儲(chǔ)在CF卡中)。

    傳統(tǒng)的本地重構(gòu)設(shè)計(jì)完成后,針對(duì)重構(gòu)區(qū)域會(huì)得到幾個(gè)不同的配置文件,如針對(duì)機(jī)械臂控制算法重構(gòu)區(qū)得到兩個(gè)初期設(shè)計(jì)的控制算法配置文件。在實(shí)際運(yùn)行過(guò)程中,有些環(huán)境只需PID控制就可滿(mǎn)足要求,而有些環(huán)境采用模糊控制更合適。如果采用這兩種控制方法都不能滿(mǎn)足工作要求時(shí),必然要對(duì)初期設(shè)計(jì)進(jìn)行升級(jí),對(duì)復(fù)雜危險(xiǎn)的工作現(xiàn)場(chǎng)進(jìn)行遠(yuǎn)程動(dòng)態(tài)重構(gòu)。
    本文提出的設(shè)計(jì)方法是:GSM模塊作為遠(yuǎn)程數(shù)據(jù)傳輸工具,與89C54單片機(jī)通過(guò)UART端口連接,單片機(jī)接收到一個(gè)扇區(qū)512 B的數(shù)據(jù)寫(xiě)入CF卡reserved.bit文件中。GSM模塊采用西門(mén)子公司的TC35模塊,它支持AT指令,由89C54發(fā)送AT指令A(yù)SCI碼對(duì)TC35進(jìn)行控制[5]。本設(shè)計(jì)主要涉及到的AT指令如表2所示,TC35以串行模式與89C54進(jìn)行通信。

 

 

    CF卡必須格式化成FAT16格式才能用于FPGA的配置文件存儲(chǔ)。FAT格式磁盤(pán)必須一次性對(duì)一個(gè)扇區(qū)進(jìn)行操作,所以單片機(jī)必須從TC35接收滿(mǎn)512 B的數(shù)據(jù)才可以對(duì)CF卡進(jìn)行寫(xiě)操作。FPGA配置完成之后CF卡處于閑置狀態(tài),通過(guò)多路復(fù)用器將CF卡與外接控制器連接以完成對(duì).bit文件的讀寫(xiě)操作。單片機(jī)對(duì)CF卡進(jìn)行操作本質(zhì)就是對(duì)FAT文件系統(tǒng)的讀寫(xiě)。
    FAT格式磁盤(pán)的邏輯分區(qū)依次為:引導(dǎo)扇區(qū)、文件分配表(FAT1和FAT2)、文件目錄區(qū)(FDT)和數(shù)據(jù)區(qū)[6]。引導(dǎo)扇區(qū)用于存儲(chǔ)引導(dǎo)程序和磁盤(pán)信息,外界訪問(wèn)CF卡都要經(jīng)過(guò)引導(dǎo)區(qū)的識(shí)別驗(yàn)證;FAT是給每個(gè)文件分配磁盤(pán)物理空間的表格,數(shù)據(jù)區(qū)的劃分單元為簇,一個(gè)簇包括64個(gè)扇區(qū),F(xiàn)AT表正是為每個(gè)文件構(gòu)造一個(gè)簇鏈表;文件目錄區(qū)是尋找文件的入口,其內(nèi)容是每個(gè)文件的目錄信息;在文件目錄之后的扇區(qū)都是以簇為單位進(jìn)行數(shù)據(jù)存儲(chǔ),這就是數(shù)據(jù)區(qū)。
    CF卡與89C54接口配置關(guān)系如圖3所示,單片機(jī)使用TrueIDE模式對(duì)CF卡進(jìn)行讀寫(xiě),采用邏輯塊LAB(Logical Block Addressing)方式進(jìn)行尋址。

    CF卡寫(xiě)一個(gè)扇區(qū)(讀扇區(qū)基本相似,限于篇幅不列出)的代碼如下:
Write_Sectors: mov R2,#1 ;一次寫(xiě)一個(gè)扇區(qū)
    mov        R3,#0Ah;假設(shè) LBA為000000Ah
    mov        R4,#0
    mov        R5,#0
    mov        R6, #0
    mov        R7, #WriteSctr
    acall        Function;將參數(shù)寫(xiě)入CF控制寄存器
    acall        WaitDRQ  ;等待數(shù)據(jù)請(qǐng)求
    acall Write512
    ret
Write512:mov R0,#high(data);取數(shù)據(jù)高地址
        mov R1,#low(data); 取數(shù)據(jù)低地址
        mov R7,#2 ;512 B= 2 * 256
        mov R6,#0 ;256 B
write:    mov dph,R0;獲取地址
        mov dpl, R1
        clr   a
        movc  a, @a+dptr ;獲取一個(gè)數(shù)據(jù)
        inc  dptr  ;指向下一個(gè)數(shù)據(jù)
        mov  R0, dph ;保存地址
        mov  R1, dpl
        mov  DPTR,#Data_Reg;到CF數(shù)據(jù)寄存器
        movx  @dptr, a ;向CF卡寫(xiě)一個(gè)數(shù)據(jù)
        djnz  R6, write
        djnz  R7, write ;將512 B的數(shù)據(jù)全部寫(xiě)入CF卡
        ret
    遠(yuǎn)程動(dòng)態(tài)重構(gòu)的流程如圖4所示?,F(xiàn)場(chǎng)TC35接收到新短信數(shù)據(jù)時(shí)會(huì)有觸發(fā)信號(hào)發(fā)送給89C54單片機(jī),單片機(jī)開(kāi)始讀取TC35Flash數(shù)據(jù)。在對(duì)CF卡進(jìn)行寫(xiě)操作之前,首先要讀取reserved.bit文件的首簇號(hào);讀取CF卡文件目錄表FDT,得到reserved.bit的信息,其中偏移地址為1Ah~1Bh,所存儲(chǔ)的2 B為文件首簇號(hào),而接下來(lái)4 B代表文件大小。由文件首簇號(hào)在FAT表中找到文件入口,然后跟蹤簇鏈至簇尾(0XFFFF),按照LAB尋址方式將數(shù)據(jù)按扇區(qū)寫(xiě)入CF卡數(shù)據(jù)區(qū),邏輯扇區(qū)號(hào)LBA可由簇號(hào)按公式“LBA=(簇號(hào)-2)×64+513”計(jì)算得到。如果文件數(shù)據(jù)量比舊文件多,則在FAT中增加鏈表,直至把數(shù)據(jù)存儲(chǔ)完畢;如果文件較小,則將原文件剩余FAT簇鏈都寫(xiě)入0x0000,以釋放空間。對(duì)CF卡的寫(xiě)操作則不對(duì)其他區(qū)域進(jìn)行更改。

    CF卡數(shù)據(jù)更新完畢后,接通CF卡與SystemACE控制器之間的多路復(fù)用器,對(duì)控制算法重構(gòu)區(qū)進(jìn)行局部動(dòng)態(tài)配置,配置過(guò)程中不對(duì)其他邏輯區(qū)域的運(yùn)行造成影響。
    遠(yuǎn)程動(dòng)態(tài)重構(gòu)結(jié)合了FPGA局部動(dòng)態(tài)重構(gòu)和GSM無(wú)線(xiàn)數(shù)據(jù)傳輸?shù)膬?yōu)勢(shì),對(duì)用在野外勘測(cè)的機(jī)器人和數(shù)據(jù)采集處理系統(tǒng)有很高的應(yīng)用價(jià)值,允許設(shè)計(jì)人員根據(jù)系統(tǒng)運(yùn)作情況實(shí)時(shí)地改變機(jī)器人的控制算法或數(shù)據(jù)處理算法,使其更加適合工作環(huán)境,既方便了設(shè)計(jì)人員對(duì)遠(yuǎn)程設(shè)備的配置升級(jí),又節(jié)省了大量人力物力。今后該方案將計(jì)算機(jī)與FPGA硬件平臺(tái)連接,可以為硬件的外部進(jìn)化遠(yuǎn)程下載染色體到硬件平臺(tái)提供有效途徑。
參考文獻(xiàn)
[1] 潘興武,呂志強(qiáng).基于可穿戴計(jì)算機(jī)的動(dòng)態(tài)重構(gòu)硬件模塊設(shè)計(jì)[J].電子科技大學(xué)學(xué)報(bào),2010,39:50-53.
[2] Xilinx Inc.Virtex-II Pro and Virtex-II Pro X FPGA user guide[EB/OL].http://www.xilinx.com/support,2007-05-11.
[3] Xilinx Inc.Early access partial reconfiguration user guide [EB/OL].http://www.xilinx.com/,2010-05-10.
[4] 楊浩強(qiáng).基于EDK的FPGA嵌入式系統(tǒng)開(kāi)發(fā)[M].北京:機(jī)械工業(yè)出版社,2008.
[5] 孫丘偉,余臻.基于GSM的短信報(bào)警收發(fā)平臺(tái)設(shè)計(jì)[J].福州大學(xué)學(xué)報(bào)(自然科學(xué)版),2008,36:44-48.
[6] 翟亞?wèn)|,史忠科.基于CF卡的飛行試驗(yàn)數(shù)據(jù)記錄器的設(shè)
     計(jì)[J].計(jì)算機(jī)測(cè)量與控制,2006,14(10):1384-1386.

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