FPGA器件在嵌入式系統(tǒng)中的配置方式的探討
在當(dāng)今商業(yè)競爭日益加強(qiáng)的環(huán)境中,產(chǎn)品是否便于現(xiàn)場升級和是否便于靈活運(yùn)用,成為商家迅速占領(lǐng)市場的關(guān)鍵因素。在這種背景下,Alter公司開發(fā)的基于SRAM LUT結(jié)構(gòu)的FPGA器件得到了廣泛應(yīng)用。
現(xiàn)場可編程門陣列FPGA(Field Programmable Gate Array)是一種高密度可編程邏輯器件,其邏輯功能是通過把設(shè)計(jì)生成的數(shù)據(jù)文件配置進(jìn)芯片內(nèi)部的靜態(tài)配置數(shù)據(jù)存儲器(SRAM)來實(shí)現(xiàn)的,具有可重復(fù)編程性,可以靈活實(shí)現(xiàn)各種邏輯功能。由于SRAM的易失性,每次系統(tǒng)上電時(shí)必須重新配置數(shù)據(jù),即ICR(In-Circuit Reconfigurability)。只有在數(shù)據(jù)配置正確的情況下,系統(tǒng)才能正常工作。因此需要外接ROM保存其配置數(shù)據(jù)。FPGA的配置是有時(shí)序要求的,如果FPGA本身不能控制配置時(shí)序,就需要外部配置器件來進(jìn)行時(shí)序控制。以Altera公司的FPGA為例,因其本身不能控制時(shí)序,就有專用的EPC系列配置器件供其使用。在嵌入式系統(tǒng)中,因?yàn)楹形⑻幚砥?可以使用微處理器產(chǎn)生配置時(shí)序,將保存在系統(tǒng)ROM中的配置數(shù)據(jù)存儲到FPGA中。所以沒有必要使用專用的EPC系列配置器件來配置FPGA。這樣不僅節(jié)約了成本,還有效地縮小了系統(tǒng)體積。本文重點(diǎn)討論在嵌入式系統(tǒng)中FPGA的配置方案。
2. FPGA器件的配置方式
Altera公司生產(chǎn)的具有ICR功能的FPGA器件有FLEX6000、FLEX10K、APEX和ACEX等系列,它們可以用以下方式進(jìn)行配置:
1. 使用專用EPC配置器件,如EPC16、EPC8、EPC2、EPC1;
2. 被動(dòng)串行方式(PS),使用微處理器的串行接口;
3.被動(dòng)并行同步方式(PPS),使用微處理器的并行同步接口;
4. 被動(dòng)并行異步方式(PPA),使用微處理器的并行異步接口;
5. 邊界掃描方式(JTAG),使用JTAG下載電纜。
下面詳細(xì)分析上述五種配置方式。
使用EPC配置器件時(shí),首先將配置文件從計(jì)算機(jī)下載到EPC配置器件中去,然后由EPC配置器件控制配置時(shí)序?qū)PGA進(jìn)行配置。EPC配置器件有一次可編程和可擦寫編程型兩種:一次可編程型芯片只能寫入一次,不適于開發(fā)階段反復(fù)調(diào)試、修改及產(chǎn)品的方便升級;可擦除編程型價(jià)格昂貴,且容量有限,對于容量較大的可編程邏輯器件,需要多片配置芯片組成菊花鏈進(jìn)行配置,增加了系統(tǒng)設(shè)計(jì)的難度。
使用PS、PPS、PPA方式配置時(shí),配置文件事先是以二進(jìn)制形式保存在系統(tǒng)ROM中,然后通過微處理器將配置數(shù)據(jù)送進(jìn)FPGA中。PS是通過串行方式送到FPGA中,PPS是以并行方式送給FPGA。FPGA在其內(nèi)部將并行數(shù)據(jù)轉(zhuǎn)換成串行數(shù)據(jù),該數(shù)據(jù)轉(zhuǎn)換時(shí)需要外部配置時(shí)鐘的驅(qū)動(dòng)。比較PS和PPS,所用的配置時(shí)間幾乎相同,而PS的接口方式比較簡單,所以嵌入式系統(tǒng)中通常選擇PS方式配置FPGA。使用PPA方式配置數(shù)據(jù)時(shí),微處理器將配置數(shù)據(jù)以并行方式送給FPAG,然后在FPGA內(nèi)部進(jìn)行數(shù)據(jù)串行化處理。與PPS不一樣的地方是串行化處理時(shí)不需要配置外部時(shí)鐘的驅(qū)動(dòng),但接口更復(fù)雜,工程中很少使用。
邊界掃描方式需要連接計(jì)算機(jī),無法在現(xiàn)場使用,嵌入式系統(tǒng)中很少采用這種方式。
通過上述的分析,在嵌入式系統(tǒng)中要使用FPGA時(shí),可以采用專用EPC配置器件、PS、PPS、PPA,但是PS、PPS、PPA比專用EPC配置更具成本和體積優(yōu)勢。在PS、PPS、PPA中,PS又是最優(yōu)的通信方式。所以在嵌入式系統(tǒng)中,通常選擇PS被動(dòng)串行方式來配置FPGA。
3. 嵌入式系統(tǒng)中FPGA的配置電路設(shè)計(jì)
3.1. PS方式配置時(shí)序
在嵌入式系統(tǒng)中,微處理器可以產(chǎn)生配置時(shí)序,能夠和FPGA直接通信,將ROM中的配置文件傳輸?shù)紽PGA的SRAM中去。通常使用PS被動(dòng)串行方式進(jìn)行配置FPGA,下面就通信中使用到的五根信號線的配置時(shí)序進(jìn)行說明。
五根信號線分別為nCONFIG、nSTATUS、CONF_DONE、DCLK、DATA,連接微處理器的五個(gè)I/O口和對應(yīng)的FPGA的引腳。
圖1 PS方式配置信號時(shí)序圖
微處理器上的五個(gè)I/O端口連接上述五個(gè)信號線。其中連接nCONFIG、DCLK、DATA端口設(shè)置成輸出態(tài),nSTATUS、CONF_DONE端口設(shè)置成輸入態(tài)。當(dāng)微處理器開始與FPGA通信時(shí),微處理器首先在nCONFIG上送出一個(gè)大于8μm的負(fù)脈沖,并且檢測nSTATUS上的信號。當(dāng)FPGA接收到nCONFIG上的下降沿時(shí),迅速將nSTATUS和CONF_DONE拉低,并且保持低電平信號一直到nCONFIG抬高電平。當(dāng)nCONFIG上抬高電平后過1μm,nSTATUS也將電平抬高,微處理器檢測到nSTATUS上的變化后認(rèn)為FPGA已經(jīng)做好了接收數(shù)據(jù)的準(zhǔn)備。下一步微處理器將產(chǎn)生配置時(shí)鐘脈沖,配置時(shí)鐘的第一個(gè)上升沿至少要比nSTATUS上升沿晚1μm。又由于配置數(shù)據(jù)和配置時(shí)鐘上升沿同步,所以在配置時(shí)鐘上升沿發(fā)生之前,數(shù)據(jù)線必須已經(jīng)有了配置數(shù)據(jù)信號。配置數(shù)據(jù)是按照低位在前高位在后的順序把數(shù)據(jù)送上數(shù)據(jù)線。當(dāng)所有數(shù)據(jù)都傳輸完畢后,CONF_DONE線上電平被抬高以示配置完畢。如果傳輸中出現(xiàn)了異常,FPGA迫使nSTATUS拉低電平,微處理器一旦檢測到了這種現(xiàn)象將重新開始配置。由于配置文件中已經(jīng)包含了FPGA初始化的一些代碼,所以傳輸完配置文件后,FPGA就可以正常工作了。
3.2 配置電路設(shè)計(jì)
嵌入式系統(tǒng)中FPGA的PS方式配置方式電路設(shè)計(jì)如圖2所示。左側(cè)的微處理器和FLASH、SDRAM組成了一個(gè)最基本的嵌入式系統(tǒng)。FLASH作為程序的存儲器,其中存儲著系統(tǒng)的整個(gè)應(yīng)用程序、配置程序和配置文件。SDRAM作為系統(tǒng)程序運(yùn)行空間,可以有效地解決微處理器自身SRAM容量小的問題。
4. 系統(tǒng)軟件設(shè)計(jì)FLASH
中存儲的程序包括系統(tǒng)程序、配置程序、配置文件。系統(tǒng)加電后,微處理器從FLASH的0地址的引導(dǎo)程序開始運(yùn)行,完成系統(tǒng)初始化后,微處理器將FLASH中的應(yīng)用程序移至到SDRAM中運(yùn)行。由于目前嵌入式系統(tǒng)大多采用實(shí)時(shí)多任務(wù)操作系統(tǒng),所以設(shè)計(jì)時(shí)應(yīng)將配置程序放置在第一個(gè)運(yùn)行的任務(wù)中,保證開機(jī)后就開始運(yùn)行。
軟件設(shè)計(jì)時(shí)根據(jù)微處理器與FPGA通信信號線上的時(shí)序要求來設(shè)計(jì)。首先初始化微處理器的端口,在P0引腳上產(chǎn)生一個(gè)20μm的負(fù)脈沖,讀取P4引腳上的信號,如果是高電平就開始數(shù)據(jù)準(zhǔn)備,將數(shù)據(jù)讀出,通過位移操作以串行比特流把低位的數(shù)據(jù)送上P1引腳,通過P2產(chǎn)生一個(gè)時(shí)鐘上升沿。因?yàn)闀r(shí)鐘上升沿與數(shù)據(jù)傳送是同步的,這樣P1引腳上的信號就傳送到了FPGA。再將讀出的數(shù)據(jù)右移位,將低位送上P1引腳,在P2上再產(chǎn)生一個(gè)時(shí)鐘上升沿。如此循環(huán)下去,等讀出的一個(gè)字節(jié)傳送完畢時(shí)再讀取下一個(gè)字節(jié),按同樣的方式傳送出去。數(shù)據(jù)傳送的同時(shí)檢測P4(nSTATUS)是否為低,如
軟件設(shè)計(jì)語言可以選擇C,也可用匯編。開發(fā)過程中根據(jù)芯片的硬件本身特點(diǎn),注意各方面的優(yōu)化。因?yàn)榍度胧较到y(tǒng)中從SDRAM中讀取數(shù)據(jù)的速度很快,所以軟件設(shè)計(jì)時(shí)無須考慮從SDRAM到微處理器的傳輸速度問題。向FPGA器件寫數(shù)據(jù)時(shí),最低有效位居先。微處理器產(chǎn)生的配置時(shí)序可以通過給時(shí)序引腳發(fā)送高低電平來實(shí)現(xiàn)。
5. 結(jié)論
當(dāng)今嵌入式系統(tǒng)已應(yīng)用到各個(gè)領(lǐng)域中,因此無論成本還是體積上的優(yōu)化,都是很有必要的。用嵌入式系統(tǒng)本身的資源優(yōu)勢來完成其它部件的專用功能,能夠很有效地達(dá)到最優(yōu)化集成、降低成本的作用。本文討論的通用方案適用于不同的微處理器和Altera公司所有相關(guān)系列的FPGA產(chǎn)品。由于FPGA具有可重復(fù)配置的功能,所以在嵌入式系統(tǒng)中可預(yù)先包含多個(gè)不同功能的配置文件,根據(jù)現(xiàn)場的需要進(jìn)行相應(yīng)的配置。這充分顯示出FPGA現(xiàn)場升級、靈活運(yùn)用的設(shè)計(jì)理念。
評論