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