隨著半導體工藝技術(shù)的迅猛發(fā)展,現(xiàn)場可編程邏輯器件FPGA的集成度迅速提高,,已達到百萬門量級,與此同時,,F(xiàn)PGA中的邏輯資源也日益豐富,使得基于FPGA的片上系統(tǒng)設(shè)計成為可能.基于FPGA的片上系統(tǒng)設(shè)計因其具有開發(fā)周期短,,設(shè)計成本低,,軟硬件可編程,系統(tǒng)設(shè)計靈活,、可裁減,、可擴充、可升級等優(yōu)點正在成為電子系統(tǒng)設(shè)計的研究熱點,,且已經(jīng)在通訊,、工控等領(lǐng)域得到實際應(yīng)用.
目前FPGA從實現(xiàn)技術(shù)上進行分類,可以分為基于查找表(LuT,,k—up table)技術(shù),,SRAM工藝的FPGA、基于nash技術(shù)的FPGA和基于反熔絲(Anti—fuse)技術(shù)的FPGA,,而使用最多的還是基于SRAM工藝的FPGA,,如Altem的Cycl0ne和S tix系列、xilin)【的Spanan和Virtex系列.基于SRAM 的FPGA片內(nèi)帶有存儲配置位流的sRAM,,上電時,,將存儲在專用配置芯片中的配置信息加載到FPGA中,從而實現(xiàn)一定的邏輯功能,,掉電時片內(nèi)SRAM中的配置數(shù)據(jù)遺失,,需要下一次加電時重新加載配置.這種片內(nèi)易失存儲器存儲配置數(shù)據(jù)的結(jié)構(gòu),,使得FPGA可以在線動態(tài)的對其sRAM中的配置數(shù)據(jù)進行更新,從而實現(xiàn)電路邏輯功能動態(tài)改變.系統(tǒng)可重構(gòu)主要就是利用基于sRAM的FPGA這種動態(tài)重配置特性才得以實現(xiàn)的,,下面就以Altem公司Cyclone II系列FPGA分析其配置方式及其可重構(gòu)應(yīng)用.
1 可重構(gòu)配置方法
根據(jù)FPGA在配置過程中的角色可把cyclone II系列FPGA的配置方式分為三種:FPGA主動串行(As)方式,、FPGA被動串行(PS)方式和JATG方式.不同配置模式通過配置模式選擇管腳MsEL[1:0]進行選擇,其中MsEL[1:0]=o0時選擇As模式,,MsEL[1:O]=01時選擇PS模式,,對于某些串行配置器件當MsEL[1:0]=l0時為快速AS模式,配置速度比PS模式快一倍.Cyclone II系列FPGA支持配置數(shù)據(jù)自解壓,,將壓縮的配置數(shù)據(jù)存儲在配置器件或其它存儲器中,,配置時傳送壓縮的位流數(shù)據(jù)到FPGA中,F(xiàn)PGA可實時的解壓縮并對內(nèi)部sRAM進行編程,,配置數(shù)據(jù)的壓縮比例可達35%-5O% ,,可有效節(jié)省配置存儲空間.
在As方式下,由FPGA主動輸出控制和同步信號給專用串行配置芯片,,配置芯片接收到配置命令后,,就開始將配置數(shù)據(jù)串行的發(fā)送至FPGA,完成配置工作.目前常用的專用串行配置芯片為容量為4 Mb的EPCS4和16 Mb的EPcS16等.AS配置模式主要用到四個信號:串行數(shù)據(jù)輸入DcLK,、控制信號輸入AsDI,、片選信號ncs和串行數(shù)據(jù)輸出DATA.
在PS方式下,由系統(tǒng)中其它設(shè)備發(fā)起配置過程,,F(xiàn)PGA在配置過程中只輸出應(yīng)答信號,,發(fā)起控制配置過程的設(shè)備可以是處理器、Altem EPC系列配置芯片,、CPLD等功能設(shè)備.在下一小節(jié)將對PS配置方式做詳細的介紹.JTAG調(diào)試接口已經(jīng)作為一個標準接口集成在芯片內(nèi),,主要用于芯片的測試,cycl0ne II系列FPGA都支持JTAG方式對FPGA進行配置,,JrrAG方式具有比其它配置方式都高的優(yōu)先級.JrI'AG接口定義了四個標準信H號:
● rI℃K測試時鐘,,各種信號都需要與測試時鐘同步;
● TDI測試數(shù)據(jù)輸入,,測試數(shù)據(jù)串行輸入,,數(shù)據(jù)在TCK上升沿傳送;
● TDO測試數(shù)據(jù)輸出,,測試數(shù)據(jù)串行輸出,,數(shù)據(jù)在TCK下降沿傳送;
●TMs測試模式選擇,,決定JTAG電路內(nèi)部TAP控制器狀態(tài)機的變化.
2 基于ARM的配置方法及實現(xiàn)
2.1 PS配置原理
如圖l所示,,利用s3c2410x作為主控制器采用被動串行方式對EP2c20內(nèi)部邏輯進行重構(gòu).FPGA的PS配置方式是比較常用的一種配置方式,可以有效實現(xiàn)FPGA的在線配置,,其基本流程為:在系統(tǒng)中將FPGA被動配置方式配置接口與ARM處理器的IO管腳相連,,在處理器端通過軟件控制相應(yīng)管腳的高低電平將數(shù)據(jù)串行的發(fā)送到FPGA中.重構(gòu)程序運行在ARM處理器中作為實時系統(tǒng)的一個任務(wù),,當需要重配FPcA內(nèi)部邏輯時,調(diào)用相應(yīng)任務(wù),,配置完成后,,刪除當前任務(wù)即可,因此,,可將預先建立的配置文件庫存儲到ARM的nash中,,由ARM處理器中運行的配置程序來完成動態(tài)重構(gòu)任務(wù)。FPGA與Ps配置方式有關(guān)的管腳功能如表l所示:
整個配置過程幾個關(guān)鍵信號的時序圖如圖2所示,,配置過程可以分為復位,、配置和初始化三個階段:
在復位階段,微處理器首先在nc0NFIG信號線上產(chǎn)生一個寬度大于8 s的負脈沖,,然后開始檢測nsTATus信號的狀態(tài).FPGA檢測到ncONFIG信號的下降沿后會迫使nsTATus和cONF—DONE信號拉低,,使FPGA處于復位狀態(tài),當ncONFIG變?yōu)楦唠娖綍r,,F(xiàn)PGA退出復位狀態(tài),,釋放漏級開路的nSTATUS管腳,nSTATuS在外部需要被l0 K的上拉電阻拉高,,nSTATUS管腳變?yōu)楦唠娖胶?,F(xiàn)PGA即進人配置階段,此時,,F(xiàn)PGA已做好了接收配置數(shù)據(jù)的準備.
FPGA的nsTATuS管腳變高后,,延時5 s左右,在DCLK的上升沿FPGA即可從DA L0管腳串行的接收配置數(shù)據(jù),,配置數(shù)據(jù)按低位在先高位在后的順序從數(shù)據(jù)線上送出.當所有數(shù)據(jù)都接收完后釋放漏級開路的CONFIG— DONE管腳,CONFIG—DONE管腳在外部需要被10 K的上拉電阻拉高,,CONFIG—DONE管腳由低到高的跳變表明配置階段結(jié)束,,F(xiàn)PGA進入初始化階段.如果在配置過程中出現(xiàn)錯誤,則n rATuS管腳將輸出低電平,,F(xiàn)PGA在內(nèi)部自動復位,,處理器可以通過查詢ns1IATuS管腳狀態(tài)判斷在配置過程中是否有錯誤發(fā)生,如果nsTATuS管腳在配置過程中變低則表明有錯誤發(fā)生,,如果在軟件中設(shè)置了錯誤發(fā)生后自動重新開始配置選項則FPcA會延時一段時間后釋放nsTATuS,,此時nsTATuS被外部上拉電阻拉高,CPu在nsTA—Tus上檢測到一個由低到高的跳變后重新開始配置.若軟件中未設(shè)置“錯誤發(fā)生后自動重新開始配置”選項則需要CPu首先將nCONFIC管腳置低再拉高以開始重新配置.
在初始化階段,,初始化時鐘可以是FPGA內(nèi)部時鐘或外部由CLKusR管腳提供的時鐘,,本例使用了FPGA內(nèi)部時鐘,F(xiàn)PGA將為初始化提供時鐘,,這樣,,初始化階段不再需要外部時鐘.初始化階段完成后INIT—DONE管腳變?yōu)楦唠娖?,指示FPGA成功進人用戶模式,配置過程結(jié)束.需要注意的是,,若此時CONF—DONE或INIT_DONE未變?yōu)楦唠娖?,則表明此次配置過程不成功,需要cPu重新進行配置.
2.2 配置程序設(shè)計
下面是完整的重構(gòu)程序及流程圖(圖3所示),,作為s3c24lOx ARM處理器 μC/OS—II實時操作系統(tǒng)的一個任務(wù)運行,,但在工程應(yīng)用中要結(jié)合實際情況做適當修改.
基于μC/OS—II配置程序:
U8Fpga~DownLoad(v0id)
{U8 Bootaddr;
U32 CountNum =O柏:
u8 FpgaBu如,;
U16 i:
Bo0taddT:(u8 )(O】(33ooooo0),;/ 配置數(shù)據(jù)起始地址 /
SeI— Datao(O);
seLnCONFIG(0),;/_將ncONFIG置低電平 /
set— DCLK(O),;
hude1ay(10);/}延時1O /
if(Re們一nSTATUS)
{prin (”err0r:nSTATuSis 1 1”),;
retum O,;}
Set— nC0NFIG(1);
while(!Read—nsTATUS),;
hudelay(5),;
p nd(”十co gIlre FPGA.-);
while(c0untNum <=O)(24294)/}串行配置數(shù)據(jù) /
{FpgaBu任er= (Bo0t&ddT+c0un um),;
if(!(CountNum%1O24))pdnd(”.”),;
f0r(._O;i<8,;i++)
{Set—Data0(FpgaBu丘 腳 1),;
hudelay(1);
seLDCLK(O),;
FpgaBu艉r> > = 1,;
if(!ReaⅡ一ns1、ATUS)
{ nEf(”\n,、卜C0 gure Error:nsTATus is 0 1,、n );
ren】m O,;}
Set— DCLK(1),;
}
C0untNum + + :
}
SeI— Datao(O);
S eI— DCLK(O),;
if(!Reau—nsTATuS)
{p ntf(”,、n\r—Configure Ermr:nsrATus is O!、n,、r ),;
retum O,;}}
else if(Read—nC0NF—Done)
{p ntf(”\n\卜-Co gure success! 、n ),;}
fnr(i=O,;i(5O;i++)/ 初始化 /
{Set—DcLK(1),;
hudeIay(1),;
Set— DCLK(O);
hude1.dy(1),;} ,、
if(!Read—nC0NF—D0ne)
{printf(”、r\n—configure En r:nCO F—Done is 0 1”),;
retum 0:}
retum l:
{
3 可重構(gòu)配置應(yīng)用
結(jié)合上述可重構(gòu)配置分析,,我們利用了FPGA可重構(gòu)特性,實現(xiàn)模塊化機器人控制器的設(shè)計.模塊化機器人結(jié)構(gòu)復雜,,控制電機數(shù)量多,,而且針對不同構(gòu)形控制策略也有差別,如四自由度串聯(lián)式機器手構(gòu)形和全向移動小車構(gòu)形(圖4所示)從控制策略到控制電機數(shù)量都有很大的不同,,這就要求控制器可以根據(jù)不同構(gòu)形動態(tài)的改變控制策略,,也即控制器的可重構(gòu).為此,在模塊化機器人可重構(gòu)控制模塊結(jié)構(gòu)設(shè)計中,,提出基于ARM和FPGA的動態(tài)可重構(gòu)的模塊化機器人控制系統(tǒng)方案,,充分利用嵌入式ARM核微處理器高性能、低功耗,、資源豐富等方面的性能和FPGA內(nèi)部邏輯可重構(gòu)的特性,,由主處理器根據(jù)機器人當前構(gòu)形選擇不同的控制策略并對FPGA內(nèi)部邏輯進行動態(tài)重配,以適應(yīng)不同構(gòu)形及應(yīng)用的需要.結(jié)構(gòu)設(shè)計框圖如圖5所示,。
ARM模塊選用s3c241Ox運行 C/OS—II實時操作系統(tǒng),,負責運行控制軟件,完成模塊化機器人運動規(guī)劃,,實時監(jiān)控系統(tǒng)運行狀態(tài),實現(xiàn)人機交互功能及對FPGA內(nèi)部邏輯實時重構(gòu).FPGA內(nèi)部運行軟核處理器,,負責與模塊化機器人運動控制相關(guān)的任務(wù),,如舵機控制、直流電機控制,、系統(tǒng)IO控制,、傳感器數(shù)據(jù)采集等任務(wù).
對FPGA配置采用上述基于ARM的PS配置方法,平臺充分利用了FPcA內(nèi)部邏輯可重構(gòu)的特性,,可組成多種不同構(gòu)形,,不同構(gòu)形具有不同的物理結(jié)構(gòu)和控制方式,,以滿足不同任務(wù)需求.其重構(gòu)方法采用:
(1)根據(jù)具體構(gòu)形規(guī)劃系統(tǒng)硬件資源種類,如構(gòu)形需要的直流電機數(shù)量,、舵機數(shù)量,、系統(tǒng)I/,O數(shù)量以及各種傳感器的數(shù)目.
(2)根據(jù)硬件資源種類修改FPcA內(nèi)部邏輯,,實現(xiàn)硬件層次的“重構(gòu)”.
(3)根據(jù)FPGA邏輯的變化,,進行軟件的開發(fā),實現(xiàn)軟件層次的“重構(gòu)”.
(4)將FPGA配置文件下載到ARM的存儲器中,,系統(tǒng)上電后,,ARM結(jié)合需求通過讀取相應(yīng)存儲區(qū)的配
置文件對FPGA進行配置,實現(xiàn)控制系統(tǒng)的動態(tài)重構(gòu).
經(jīng)過實驗驗證,,利用ARM的實時處理功能,,對FPGA內(nèi)部邏輯進行動態(tài)重配,所設(shè)計的控制平臺可以滿足可重構(gòu)配置的性能要求.
4 結(jié)語
文中給出了基于ARM的FPGA的Ps加載配置方案,,該方法電路結(jié)構(gòu)簡單,、易于實現(xiàn),充分利用ARM處理器功能強,、速度快,、應(yīng)用廣的特點,在系統(tǒng)中可預先包含多個不同功能的配置文件,,根據(jù)現(xiàn)場的需要進行相應(yīng)的配置,,實現(xiàn)在線更新FPGA功能,既節(jié)省了開發(fā)成本,,又滿足了一些特殊的系統(tǒng)設(shè)計要求,,也充分顯示出FPGA現(xiàn)場升級、靈活運用的設(shè)計理念,,方案的提出,,對嵌人式數(shù)字系統(tǒng)設(shè)計具有相當?shù)慕梃b意義.