<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > FPGA器件在嵌入式系統(tǒng)中的配置方式的探討

          FPGA器件在嵌入式系統(tǒng)中的配置方式的探討

          作者: 時(shí)間:2008-01-20 來(lái)源:網(wǎng)絡(luò) 收藏
          引言

          在當(dāng)今商業(yè)競(jìng)爭(zhēng)日益加強(qiáng)的環(huán)境中,產(chǎn)品是否便于現(xiàn)場(chǎng)升級(jí)和是否便于靈活運(yùn)用,成為商家迅速占領(lǐng)市場(chǎng)的關(guān)鍵因素。在這種背景下,Alter公司開(kāi)發(fā)的基于SRAM LUT結(jié)構(gòu)的器件得到了廣泛應(yīng)用。

          現(xiàn)場(chǎng)可編程門(mén)陣列(Field Programmable Gate Array)是一種高密度可編程邏輯器件,其邏輯功能是通過(guò)把設(shè)計(jì)生成的數(shù)據(jù)文件配置進(jìn)芯片內(nèi)部的靜態(tài)配置數(shù)據(jù)存儲(chǔ)器(SRAM)來(lái)實(shí)現(xiàn)的,具有可重復(fù)編程性,可以靈活實(shí)現(xiàn)各種邏輯功能。由于SRAM的易失性,每次系統(tǒng)上電時(shí)必須重新配置數(shù)據(jù),即ICR(In-Circuit Reconfigurability)。只有在數(shù)據(jù)配置正確的情況下,系統(tǒng)才能正常工作。因此需要外接ROM保存其配置數(shù)據(jù)。的配置是有時(shí)序要求的,如果FPGA本身不能控制配置時(shí)序,就需要外部配置器件來(lái)進(jìn)行時(shí)序控制。以Altera公司的FPGA為例,因其本身不能控制時(shí)序,就有專用的EPC系列配置器件供其使用。在嵌入式系統(tǒng)中,因?yàn)楹形⑻幚砥?可以使用微處理器產(chǎn)生配置時(shí)序,將保存在系統(tǒng)ROM中的配置數(shù)據(jù)存儲(chǔ)到FPGA中。所以沒(méi)有必要使用專用的EPC系列配置器件來(lái)配置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配置器件有一次可編程和可擦寫(xiě)編程型兩種:一次可編程型芯片只能寫(xiě)入一次,不適于開(kāi)發(fā)階段反復(fù)調(diào)試、修改及產(chǎn)品的方便升級(jí);可擦除編程型價(jià)格昂貴,且容量有限,對(duì)于容量較大的可編程邏輯器件,需要多片配置芯片組成菊花鏈進(jìn)行配置,增加了系統(tǒng)設(shè)計(jì)的難度。

          使用PS、PPS、PPA方式配置時(shí),配置文件事先是以二進(jìn)制形式保存在系統(tǒng)ROM中,然后通過(guò)微處理器將配置數(shù)據(jù)送進(jìn)FPGA中。PS是通過(guò)串行方式送到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的接口方式比較簡(jiǎn)單,所以嵌入式系統(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ī),無(wú)法在現(xiàn)場(chǎng)使用,嵌入式系統(tǒng)中很少采用這種方式。

          通過(guò)上述的分析,在嵌入式系統(tǒng)中要使用FPGA時(shí),可以采用專用EPC配置器件、PS、PPS、PPA,但是PS、PPS、PPA比專用EPC配置更具成本和體積優(yōu)勢(shì)。在PS、PPS、PPA中,PS又是最優(yōu)的通信方式。所以在嵌入式系統(tǒng)中,通常選擇PS被動(dòng)串行方式來(lái)配置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,下面就通信中使用到的五根信號(hào)線的配置時(shí)序進(jìn)行說(shuō)明。

          五根信號(hào)線分別為nCONFIG、nSTATUS、CONF_DONE、DCLK、DATA,連接微處理器的五個(gè)I/O口和對(duì)應(yīng)的FPGA的引腳。



          圖1 PS方式配置信號(hào)時(shí)序圖

          微處理器上的五個(gè)I/O端口連接上述五個(gè)信號(hào)線。其中連接nCONFIG、DCLK、DATA端口設(shè)置成輸出態(tài),nSTATUS、CONF_DONE端口設(shè)置成輸入態(tài)。當(dāng)微處理器開(kāi)始與FPGA通信時(shí),微處理器首先在nCONFIG上送出一個(gè)大于8μm的負(fù)脈沖,并且檢測(cè)nSTATUS上的信號(hào)。當(dāng)FPGA接收到nCONFIG上的下降沿時(shí),迅速將nSTATUS和CONF_DONE拉低,并且保持低電平信號(hào)一直到nCONFIG抬高電平。當(dāng)nCONFIG上抬高電平后過(guò)1μm,nSTATUS也將電平抬高,微處理器檢測(cè)到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ù)信號(hào)。配置數(shù)據(jù)是按照低位在前高位在后的順序把數(shù)據(jù)送上數(shù)據(jù)線。當(dāng)所有數(shù)據(jù)都傳輸完畢后,CONF_DONE線上電平被抬高以示配置完畢。如果傳輸中出現(xiàn)了異常,FPGA迫使nSTATUS拉低電平,微處理器一旦檢測(cè)到了這種現(xiàn)象將重新開(kāi)始配置。由于配置文件中已經(jīng)包含了FPGA初始化的一些代碼,所以傳輸完配置文件后,FPGA就可以正常工作了。

          3.2 配置電路設(shè)計(jì)



          嵌入式系統(tǒng)中FPGA的PS方式配置方式電路設(shè)計(jì)如圖2所示。左側(cè)的微處理器和FLASH、SDRAM組成了一個(gè)最基本的嵌入式系統(tǒng)。FLASH作為程序的存儲(chǔ)器,其中存儲(chǔ)著系統(tǒng)的整個(gè)應(yīng)用程序、配置程序和配置文件。SDRAM作為系統(tǒng)程序運(yùn)行空間,可以有效地解決微處理器自身SRAM容量小的問(wèn)題。

          4. 系統(tǒng)軟件設(shè)計(jì)FLASH

          中存儲(chǔ)的程序包括系統(tǒng)程序、配置程序、配置文件。系統(tǒng)加電后,微處理器從FLASH的0地址的引導(dǎo)程序開(kāi)始運(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ù)中,保證開(kāi)機(jī)后就開(kāi)始運(yùn)行。

          軟件設(shè)計(jì)時(shí)根據(jù)微處理器與FPGA通信信號(hào)線上的時(shí)序要求來(lái)設(shè)計(jì)。首先初始化微處理器的端口,在P0引腳上產(chǎn)生一個(gè)20μm的負(fù)脈沖,讀取P4引腳上的信號(hào),如果是高電平就開(kāi)始數(shù)據(jù)準(zhǔn)備,將數(shù)據(jù)讀出,通過(guò)位移操作以串行比特流把低位的數(shù)據(jù)送上P1引腳,通過(guò)P2產(chǎn)生一個(gè)時(shí)鐘上升沿。因?yàn)闀r(shí)鐘上升沿與數(shù)據(jù)傳送是同步的,這樣P1引腳上的信號(hào)就傳送到了FPGA。再將讀出的數(shù)據(jù)右移位,將低位送上P1引腳,在P2上再產(chǎn)生一個(gè)時(shí)鐘上升沿。如此循環(huán)下去,等讀出的一個(gè)字節(jié)傳送完畢時(shí)再讀取下一個(gè)字節(jié),按同樣的方式傳送出去。數(shù)據(jù)傳送的同時(shí)檢測(cè)P4(nSTATUS)是否為低,如

          果傳送過(guò)程中遇到錯(cuò)誤,P4將為低,這樣系統(tǒng)需要重新配置。等到把數(shù)據(jù)傳送完畢后檢測(cè)P3引腳的狀態(tài),如果是高電平說(shuō)明配置成功,如果是低電平則說(shuō)明配置失敗,系統(tǒng)需要重新配置。

          軟件設(shè)計(jì)語(yǔ)言可以選擇C,也可用匯編。開(kāi)發(fā)過(guò)程中根據(jù)芯片的硬件本身特點(diǎn),注意各方面的優(yōu)化。因?yàn)榍度胧较到y(tǒng)中從SDRAM中讀取數(shù)據(jù)的速度很快,所以軟件設(shè)計(jì)時(shí)無(wú)須考慮從SDRAM到微處理器的傳輸速度問(wèn)題。向FPGA器件寫(xiě)數(shù)據(jù)時(shí),最低有效位居先。微處理器產(chǎn)生的配置時(shí)序可以通過(guò)給時(shí)序引腳發(fā)送高低電平來(lái)實(shí)現(xiàn)。

          5. 結(jié)論

          當(dāng)今嵌入式系統(tǒng)已應(yīng)用到各個(gè)領(lǐng)域中,因此無(wú)論成本還是體積上的優(yōu)化,都是很有必要的。用嵌入式系統(tǒng)本身的資源優(yōu)勢(shì)來(lái)完成其它部件的專用功能,能夠很有效地達(dá)到最優(yōu)化集成、降低成本的作用。本文討論的通用方案適用于不同的微處理器和Altera公司所有相關(guān)系列的FPGA產(chǎn)品。由于FPGA具有可重復(fù)配置的功能,所以在嵌入式系統(tǒng)中可預(yù)先包含多個(gè)不同功能的配置文件,根據(jù)現(xiàn)場(chǎng)的需要進(jìn)行相應(yīng)的配置。這充分顯示出FPGA現(xiàn)場(chǎng)升級(jí)、靈活運(yùn)用的設(shè)計(jì)理念。



          關(guān)鍵詞: FPGA

          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();