文獻標識碼: A
文章編號: 0258-7998(2012)03-0037-04
隨著現(xiàn)場可編程門陣列的廣泛應用,,對其進行靈活的重新配置的研究也越來越多。目前絕大多數(shù)FPGA都是基于查找表LUT(Look UP Table)的技術(shù),,采用SRAM工藝生產(chǎn),。這種工藝的FPGA有兩層結(jié)構(gòu),上層為配置存儲器,,下層是硬件邏輯層,。通過上層配置信息控制硬件層門電路的通斷,改變芯片內(nèi)基本邏輯塊的布線,,從而形成特定的功能,。這種架構(gòu)為動態(tài)重構(gòu)技術(shù)實現(xiàn)提供了可能。一個FPGA大型數(shù)字系統(tǒng)總是由很多功能模塊組合而成,這樣各個系統(tǒng)模塊的激活狀態(tài)就可能在時間軸上產(chǎn)生分離,,時間上分離的模塊就可以共用一個硬件邏輯區(qū),,根據(jù)需要對這個邏輯區(qū)動態(tài)地改變配置,實現(xiàn)不同的功能,,這就是局部動態(tài)重構(gòu)[1]。FPGA的動態(tài)重構(gòu)使其應用更加靈活,,減少了硬件的資源消耗,,縮短了開發(fā)周期。但是對一些特殊場合,,如深海數(shù)據(jù)采集或機器人野外勘探,,開發(fā)者可以為某個系統(tǒng)模塊設(shè)計幾個功能,設(shè)備在自主運行過程中根據(jù)需要選擇相應的配置數(shù)據(jù)進行配置,。如果遇到特殊環(huán)境,,事先設(shè)計的功能有可能不適合工作要求,需要增加新的功能,。在目前硬件進化技術(shù)還無法進行實際應用的情況下,,本文設(shè)計了一種遠程動態(tài)重構(gòu)的系統(tǒng)來解決上述問題。
1 遠程動態(tài)重構(gòu)系統(tǒng)的結(jié)構(gòu)
遠程動態(tài)重構(gòu)系統(tǒng)有PowerPC處理器和89C54微控制器兩個核心,。VirtexII-Pro FPGA內(nèi)部集成有2個PowerPC405嵌入式處理器[2],,本文系統(tǒng)使用其中一個,實現(xiàn)對動態(tài)重構(gòu)進行控制和調(diào)配,。FPGA內(nèi)部用于對局部重構(gòu)區(qū)域PRR進行重新配置的硬件模塊有3個,,分別是嵌入式內(nèi)核PowerPC、系統(tǒng)高級配置環(huán)境System ACE和內(nèi)部配置訪問通道ICAP,。System ACE是一種在系統(tǒng)編程的高級配置解決方案,,它提供CF(Compact Flash)、MPU和Test JTAG等多個接口,,本系統(tǒng)采用CF卡作為配置數(shù)據(jù)的來源,,可以更方便地改變和存儲配置數(shù)據(jù)。ICAP的主要作用就是按照特定時序?qū)⑴渲脭?shù)據(jù)重新配置到PRR中[3],。
遠程數(shù)據(jù)傳輸通過外接控制器89C54完成,,一方面控制器要通過UART接口接收GSM模塊TC35傳來的數(shù)據(jù);另一方面要把接收到的配置數(shù)據(jù)寫入CF卡中,,以供FPGA系統(tǒng)讀取,。
System ACE和89C54控制器共用CF卡的控制接口。為避免互相影響,,本系使用多路復用器將CF卡端口做分時復用處理,,即配置過程中與System ACE連接,而數(shù)據(jù)傳輸存儲過程中與89C54進行連接。遠程動態(tài)重構(gòu)系統(tǒng)結(jié)構(gòu)如圖1所示,。
2 遠程動態(tài)重構(gòu)的本地準備
以機械手臂的控制為例,,采用PID控制、模糊控制和備用三種控制方案,,每個控制算法經(jīng)過驗證綜合生成獨立的bit流模塊,。這三個模塊共用一個可重構(gòu)的區(qū)域PRregion,根據(jù)具體情況,,選用最適合的算法模塊,,動態(tài)地配置重構(gòu)區(qū)域來控制機械手臂,其他靜態(tài)邏輯區(qū)域則仍然正常運行,。這樣不僅提高了系統(tǒng)的靈活性,,而且節(jié)省了配置時間、減少了不必要的消耗,。FPGA的設(shè)計流程一般包括設(shè)計,、仿真、綜合,、實現(xiàn)過程,,本文根據(jù)系統(tǒng)自身結(jié)構(gòu)提出如圖2所示的設(shè)計流程。
FPGA重構(gòu)系統(tǒng)綜合使用EDK(Embedded Development Kit),、ISE和PlanAhead多種工具平臺,,采用分層化設(shè)計,以簡化設(shè)計過程,。其過程如下:
(1)利用嵌入式開發(fā)工具EDK設(shè)計一個基于PowerPC405的嵌入式控制系統(tǒng)[4],,添加SystemACE_CompactFlash外設(shè)以支持從CF卡配置FPGA;添加IP核opb_hwicap以支持嵌入式內(nèi)核通過ICAP讀取配置數(shù)據(jù)動態(tài)地配置FPGA,。
(2)EDK包含有軟件開發(fā)工具SDK,,因此利用SDK對PowerPC405進行軟件編程和調(diào)試,最終生成應用程序二進制executable.elf文件,;利用EDK外設(shè)創(chuàng)建向?qū)?,?chuàng)建多個控制算法IP模塊,在各自的VHDL文件中編寫相應的算法,;使用ISE工具對多個算法模塊進行綜合,、創(chuàng)建頂層模塊、實例化嵌入式系統(tǒng)和算法模塊,。綜合產(chǎn)生top網(wǎng)表文件,。
(3)創(chuàng)建PlanAhead工程,使用以上產(chǎn)生的網(wǎng)表文件和約束文件進行布局布線,。其中最重要的是將算法模塊設(shè)置為可重構(gòu)模塊,,對其進行嚴格的區(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工具中可以通過可視化方法進行區(qū)域約束,既直觀又簡單,??芍貥?gòu)模塊在運行過程中如果需要實現(xiàn)不同的控制算法,則需要在重構(gòu)區(qū)中添加所有算法模塊綜合生成的網(wǎng)表文件,、使用PR Assemble命令生成多個不同的算法bit流文件,。除了動態(tài)bit流文件外,PlanAhead還會產(chǎn)生一個靜態(tài)完整的bit流文件static_full.bit,??蓤?zhí)行以下兩個命令生成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 遠程動態(tài)重構(gòu)的實現(xiàn)
經(jīng)過動態(tài)重構(gòu)本地準備之后,得到如表1所示的CF卡配置文件列表,。設(shè)置保留模塊,,是為了給新的控制算法保留一個接口(以一個空文件存儲在CF卡中)。
傳統(tǒng)的本地重構(gòu)設(shè)計完成后,,針對重構(gòu)區(qū)域會得到幾個不同的配置文件,,如針對機械臂控制算法重構(gòu)區(qū)得到兩個初期設(shè)計的控制算法配置文件。在實際運行過程中,,有些環(huán)境只需PID控制就可滿足要求,,而有些環(huán)境采用模糊控制更合適。如果采用這兩種控制方法都不能滿足工作要求時,,必然要對初期設(shè)計進行升級,,對復雜危險的工作現(xiàn)場進行遠程動態(tài)重構(gòu)。
本文提出的設(shè)計方法是:GSM模塊作為遠程數(shù)據(jù)傳輸工具,,與89C54單片機通過UART端口連接,,單片機接收到一個扇區(qū)512 B的數(shù)據(jù)寫入CF卡reserved.bit文件中。GSM模塊采用西門子公司的TC35模塊,,它支持AT指令,,由89C54發(fā)送AT指令ASCI碼對TC35進行控制[5]。本設(shè)計主要涉及到的AT指令如表2所示,,TC35以串行模式與89C54進行通信,。
CF卡必須格式化成FAT16格式才能用于FPGA的配置文件存儲。FAT格式磁盤必須一次性對一個扇區(qū)進行操作,,所以單片機必須從TC35接收滿512 B的數(shù)據(jù)才可以對CF卡進行寫操作,。FPGA配置完成之后CF卡處于閑置狀態(tài),通過多路復用器將CF卡與外接控制器連接以完成對.bit文件的讀寫操作,。單片機對CF卡進行操作本質(zhì)就是對FAT文件系統(tǒng)的讀寫,。
FAT格式磁盤的邏輯分區(qū)依次為:引導扇區(qū)、文件分配表(FAT1和FAT2)、文件目錄區(qū)(FDT)和數(shù)據(jù)區(qū)[6],。引導扇區(qū)用于存儲引導程序和磁盤信息,,外界訪問CF卡都要經(jīng)過引導區(qū)的識別驗證;FAT是給每個文件分配磁盤物理空間的表格,,數(shù)據(jù)區(qū)的劃分單元為簇,,一個簇包括64個扇區(qū),F(xiàn)AT表正是為每個文件構(gòu)造一個簇鏈表,;文件目錄區(qū)是尋找文件的入口,,其內(nèi)容是每個文件的目錄信息;在文件目錄之后的扇區(qū)都是以簇為單位進行數(shù)據(jù)存儲,,這就是數(shù)據(jù)區(qū),。
CF卡與89C54接口配置關(guān)系如圖3所示,單片機使用TrueIDE模式對CF卡進行讀寫,,采用邏輯塊LAB(Logical Block Addressing)方式進行尋址,。
CF卡寫一個扇區(qū)(讀扇區(qū)基本相似,限于篇幅不列出)的代碼如下:
Write_Sectors: mov R2,#1 ;一次寫一個扇區(qū)
mov R3,#0Ah;假設(shè) LBA為000000Ah
mov R4,#0
mov R5,#0
mov R6, #0
mov R7, #WriteSctr
acall Function;將參數(shù)寫入CF控制寄存器
acall WaitDRQ ;等待數(shù)據(jù)請求
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 ;獲取一個數(shù)據(jù)
inc dptr ;指向下一個數(shù)據(jù)
mov R0, dph ;保存地址
mov R1, dpl
mov DPTR,#Data_Reg;到CF數(shù)據(jù)寄存器
movx @dptr, a ;向CF卡寫一個數(shù)據(jù)
djnz R6, write
djnz R7, write ;將512 B的數(shù)據(jù)全部寫入CF卡
ret
遠程動態(tài)重構(gòu)的流程如圖4所示?,F(xiàn)場TC35接收到新短信數(shù)據(jù)時會有觸發(fā)信號發(fā)送給89C54單片機,,單片機開始讀取TC35Flash數(shù)據(jù)。在對CF卡進行寫操作之前,,首先要讀取reserved.bit文件的首簇號,;讀取CF卡文件目錄表FDT,得到reserved.bit的信息,,其中偏移地址為1Ah~1Bh,,所存儲的2 B為文件首簇號,而接下來4 B代表文件大小,。由文件首簇號在FAT表中找到文件入口,,然后跟蹤簇鏈至簇尾(0XFFFF),按照LAB尋址方式將數(shù)據(jù)按扇區(qū)寫入CF卡數(shù)據(jù)區(qū),,邏輯扇區(qū)號LBA可由簇號按公式“LBA=(簇號-2)×64+513”計算得到,。如果文件數(shù)據(jù)量比舊文件多,則在FAT中增加鏈表,,直至把數(shù)據(jù)存儲完畢,;如果文件較小,則將原文件剩余FAT簇鏈都寫入0x0000,,以釋放空間,。對CF卡的寫操作則不對其他區(qū)域進行更改。
CF卡數(shù)據(jù)更新完畢后,,接通CF卡與SystemACE控制器之間的多路復用器,,對控制算法重構(gòu)區(qū)進行局部動態(tài)配置,,配置過程中不對其他邏輯區(qū)域的運行造成影響。
遠程動態(tài)重構(gòu)結(jié)合了FPGA局部動態(tài)重構(gòu)和GSM無線數(shù)據(jù)傳輸?shù)膬?yōu)勢,,對用在野外勘測的機器人和數(shù)據(jù)采集處理系統(tǒng)有很高的應用價值,,允許設(shè)計人員根據(jù)系統(tǒng)運作情況實時地改變機器人的控制算法或數(shù)據(jù)處理算法,使其更加適合工作環(huán)境,,既方便了設(shè)計人員對遠程設(shè)備的配置升級,,又節(jié)省了大量人力物力。今后該方案將計算機與FPGA硬件平臺連接,,可以為硬件的外部進化遠程下載染色體到硬件平臺提供有效途徑,。
參考文獻
[1] 潘興武,呂志強.基于可穿戴計算機的動態(tài)重構(gòu)硬件模塊設(shè)計[J].電子科技大學學報,,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] 楊浩強.基于EDK的FPGA嵌入式系統(tǒng)開發(fā)[M].北京:機械工業(yè)出版社,,2008.
[5] 孫丘偉,,余臻.基于GSM的短信報警收發(fā)平臺設(shè)計[J].福州大學學報(自然科學版),2008,,36:44-48.
[6] 翟亞東,,史忠科.基于CF卡的飛行試驗數(shù)據(jù)記錄器的設(shè)
計[J].計算機測量與控制,,2006,14(10):1384-1386.