利用ARM進(jìn)行FPGA的被動(dòng)串行配置._第1頁(yè)
利用ARM進(jìn)行FPGA的被動(dòng)串行配置._第2頁(yè)
利用ARM進(jìn)行FPGA的被動(dòng)串行配置._第3頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、NCSM 技術(shù)分析文檔 嵌入式系統(tǒng)開(kāi)發(fā)系列 ARM 進(jìn)行 FPGA 的被動(dòng)串行配置 作者:周丹( NCSM)QQ:11835178 E-mail: ncsm2007年 6月 利用NCSM 技術(shù)分析文檔 嵌入式系統(tǒng)開(kāi)發(fā)系列 目錄1. ARM 處理器 LPC2214 簡(jiǎn) 介 32. CYCLONE II 系列 FPGA配置文件 33. 被動(dòng)串行方式( PS)配置時(shí)序 44. 硬件電路設(shè)計(jì) 55. 軟件設(shè)計(jì) . 66. 參 考 文獻(xiàn) 9NCSM 技術(shù)分析文檔 嵌入式系統(tǒng)開(kāi)發(fā)系列 摘要:介紹一種在嵌入式系統(tǒng)中使用微處理器實(shí)現(xiàn)以被動(dòng)串行( PS)配置方式對(duì) FPGA進(jìn)行配置的方案,配置文件存放在片外 F

2、lash中,利用微處理器的 I/O 口或 SPI接口來(lái)產(chǎn)生配置時(shí)序,省去專(zhuān)用配置器件;詳述被動(dòng)串行配置的時(shí)序及在嵌 入式系統(tǒng)中的軟硬件設(shè)計(jì)實(shí)現(xiàn);說(shuō)明本方案的優(yōu)越性及應(yīng)用前景。 關(guān)鍵詞:嵌入式系統(tǒng) ARM7TDMI-S LPC2214 FPGA 被動(dòng)串行配置 FPGA 是一種高密度可編程邏輯器件,其邏輯功能的實(shí)現(xiàn)是通過(guò)把設(shè)計(jì)生成的數(shù) 據(jù)文件配置進(jìn)芯片內(nèi)部的 SRAM 來(lái)完成的,具有可重復(fù)編程性,可以靈活實(shí)現(xiàn)各 種邏輯功能。 FPGA 的這種特性使其在現(xiàn)代電子系統(tǒng)設(shè)計(jì)中得到了廣泛應(yīng)用?;?于 SRAM 工藝的 FPGA 是易失性的,系統(tǒng)掉電以后其內(nèi)部配置數(shù)據(jù)將丟失,因此 需要外接 FLASH 或?qū)?/p>

3、用配置芯片來(lái)保存其配置數(shù)據(jù)。 FPGA 的配置是有時(shí)序要求 的,如果 FPGA 本身不能控制配置時(shí)序,就需要有外部配置器件來(lái)進(jìn)行時(shí)序控 制。以 ALTERA 公司的系列 FPGA 為例,其本身不能控制配置時(shí)序,就有專(zhuān)用 的 EPC 系列配置器件供其使用。在含有微處理器的系統(tǒng)中,可以使用微處理器產(chǎn) 生配置時(shí)序,將保存在系統(tǒng) FLASH 或 ROM 中的配置數(shù)據(jù)置入 FPGA。該方案不 僅節(jié)省了成本,更縮小了 PCB 面積。在對(duì)成本和 PCB面積敏感的系統(tǒng)中,該方 案非常適用。在某通信設(shè)備的設(shè)計(jì)中,嵌入式微處理器采用 PHILIPS 公司的 ARM7TDMI-S 系 列處理器 LPC2214; F

4、PGA采用 ALTERA 公司的 Cyclone II系列 EP2C35,使用 LPC2214 完成了對(duì) EP2C35的配置,取得了良好效果。本文對(duì)其實(shí)現(xiàn)方法予以介 紹。1. ARM 處理器 LPC2214簡(jiǎn)介 該處理器是飛利浦公司為嵌入式應(yīng)用提供的高性價(jià)比微控制器解決方案,通過(guò)在 ARM7TDMI-S 內(nèi)容基礎(chǔ)上擴(kuò)展一系列的通用外圍器件,使系統(tǒng)費(fèi)用降至最低, 增強(qiáng)了系統(tǒng)對(duì)外部設(shè)備的支持能力。2. Cyclone II系列 FPGA配置文件ALTERA 公司的開(kāi)發(fā)工具 Quartus II 可以生成多種格式的配置文件,針對(duì)不同的 配置方式要使用不同格式的配置文件。設(shè)計(jì)項(xiàng)目編譯以后會(huì)自動(dòng)生成 .

5、sof 文件 和.pof文件。其中 .pof文件在使用專(zhuān)用配置器件時(shí)使用, .sof文件用于通過(guò)連接在 計(jì)算機(jī)上的下載電纜直接對(duì) FPGA進(jìn)行配置的場(chǎng)合,配置方式可以是 JTAG 方式 或 PS方式中使用 ByteBlaster下載電纜的情況?;?.sof 文件還可以生 成.hex、 .rbf和.ttf文件。 .hex文件是 Intel Hex格式的 ASCII碼文件,第三方的編 程器可以使用這種格式的文件對(duì) ALTERA 公司的配置器件進(jìn)行編程。 .rbf 文件是 二進(jìn)制文件, 1字節(jié)的 rbf數(shù)據(jù)包含 8bit的配置數(shù)據(jù)。使用時(shí)先將其存入 Flash或 ROM 中,加載時(shí),微處理器讀取

6、Flash 或 ROM 中這種格式的文件。 .ttf 文件是列 表文本文件, .rbf文件的 ASCII 碼存儲(chǔ)形式, NCSM 技術(shù)分析文檔 嵌入式系統(tǒng)開(kāi)發(fā)系列 并且各個(gè)字節(jié)之間用逗號(hào)進(jìn)行了分隔。如果系統(tǒng)中有其它程序,可以將 .ttf 文件作 為系統(tǒng)程序源代碼的一部分,和其它程序一起編譯。3. 被動(dòng)串行方式( PS)配置時(shí)序使用 PS方式對(duì) FPGA進(jìn)行配置時(shí),只需要 5 根信號(hào)線,其配置時(shí)序如圖 1 所 示,圖 1 中的時(shí)間參數(shù)如表 1所示。圖表1NCSM 技術(shù)分析文檔 嵌入式系統(tǒng)開(kāi)發(fā)系列 配置時(shí)這五根信號(hào)線都接至 ARM 的 I/O上,其中 nCONFIG、DCLK 、DATA 設(shè) 置成

7、輸出態(tài),由 ARM 對(duì) FPGA進(jìn)行操作; nSTATUS、CONF_DONE 設(shè)置成輸入 態(tài),由 ARM 對(duì) FPGA的配置狀態(tài)進(jìn)行檢測(cè)。 ARM 首先在 nCONFIG 信號(hào)線上產(chǎn) 生一個(gè)寬度大于 40us的負(fù)脈沖,然后開(kāi)始檢測(cè) nSTATUS 信號(hào)的狀態(tài)。 FPGA 檢 測(cè)到 nCONFIG信號(hào)的下降沿后會(huì)迫使 nSTATUS和 CONF_DONE 信號(hào)拉低,并 且在 nCONFIG信號(hào)重新抬高之前保持為低電平。 nCONFIG 信號(hào)抬高后, nSTATUS 將在 40us之內(nèi)隨之抬高, ARM 檢測(cè)到此變化后就認(rèn)為 FPGA 已經(jīng)做好 準(zhǔn)備可以開(kāi)始配置。配置時(shí)的第一個(gè)上升沿與 nSTA

8、TUS 的上升沿之間要求至少 有 1us 的時(shí)間間隔。由于配置數(shù)據(jù)與配置時(shí)鐘的上升沿同步,在配置時(shí)鐘的上升 沿來(lái)之間應(yīng)當(dāng)將 1bit 的配置數(shù)據(jù)在數(shù)據(jù)線上準(zhǔn)備好,配置數(shù)據(jù)按低位在先高位在 后的順序從數(shù)據(jù)線上送出。當(dāng)全部配置數(shù)據(jù)送出以后, CONF_DONE 信號(hào)將被抬 高,表明配置結(jié)束。 ARM 檢測(cè)到 CONF_DONE 信號(hào)抬高,就結(jié)束配置過(guò)程。如 果配置過(guò)程中出錯(cuò), FPGA 將迫使 nSTATUS 信號(hào)拉低, ARM 檢測(cè)到此變化將重 新開(kāi)始配置。配置結(jié)束以后, FPGA 還需要一個(gè)初始化的過(guò)程才能進(jìn)入正常工作狀態(tài)。在 Quartus II 生成的配置文件中已經(jīng)包含了額外的初始化比特,

9、只需將配置文件數(shù)據(jù) 在配置時(shí)鐘的同步下全部送出就已經(jīng)完成了初始化,用戶不必另外加以考慮。 通過(guò)分析配置時(shí)序我們發(fā)現(xiàn),配置數(shù)據(jù)加載時(shí)所需的配置時(shí)鐘和數(shù)據(jù)的時(shí)序關(guān)系 同 SPI總線 CPOL=0、CPHA=0 的模式相同。所以我們也可以采用 SPI 總線對(duì) FPAG進(jìn)行配置。我們可以使用 ARM 的 MOSI0及SCK0來(lái)作為配置數(shù)據(jù)及配置 時(shí)鐘的輸出。其余的三根數(shù)據(jù)線( nCONFIG、nSTATUS、CONF_DONW )依然 由 I/O 控制。4. 硬件電路設(shè)計(jì)FPGA 加載部分的硬件電路設(shè)計(jì)如圖 2所示。圖2NCSM 技術(shù)分析文檔 嵌入式系統(tǒng)開(kāi)發(fā)系列使用 PS配置時(shí),需要將 EP2C35的

10、 MSEL0、MSEL1、nCE 三個(gè)引腳接地,然后 將 EP2C35的 nCONFIG、nSTATUS、CONF_DONE、DCLK 、DATA 引腳分別接 至 LPC2214的 P1.25、P0.2、P0.19、P0.4/SCK0、P0.6/MOSI0 引腳上。 LPC2214的 I/O 口均為多功能口,可以根據(jù)應(yīng)用的需要通過(guò)內(nèi)部寄存器將其設(shè)置 成輸入口、輸出口或特別功能口。在本例中,我們選用了ARM 的 SPI0口,因此可以同時(shí)支持 I/O 加載模式和 SPI加載模式。使用 I/O 模式時(shí),將 P1.25、 P0.4/SCK0、P0.6/MOSI0設(shè)置成輸出口,將 P0.2和 P0.19

11、設(shè)置成輸入口。使用 SPI 模式時(shí),將 P1.25設(shè)置成輸出口,將 P0.2和 P0.19設(shè)置成輸入口, P0.4/SCK0、P0.6/MOSI0 設(shè)置為 SPI0接口。5. 軟件設(shè)計(jì) 配置時(shí)根據(jù)配置時(shí)序要求,首先在 P1.25引腳( nCONFIG)產(chǎn)生一個(gè)負(fù)脈沖,啟 動(dòng)配置,然后檢測(cè) P0.2引腳的 nSTATUS 信號(hào)。 nSTATUS 信號(hào)正常后就可以進(jìn) 行配置數(shù)據(jù)的傳輸。采用 I/0方式時(shí),在 P0.4引腳( DCLK )上送配置時(shí)鐘,在 P0.6引腳( DATA ) 同步送出配置數(shù)據(jù)。配置數(shù)據(jù)以字節(jié)為單位從 SRAM 中讀出,通過(guò)移位操作以串 行比特流方式從 P0.6引腳送出。 采

12、用 SPI方式時(shí),向 SPI 的發(fā)送寄存器中寫(xiě)入數(shù) 據(jù), SPI發(fā)送器會(huì)自動(dòng)將數(shù)據(jù)和時(shí)鐘以設(shè)置的速率(本方案選擇了PCLK/8 的時(shí)鐘)發(fā)送出去。全部數(shù)據(jù)送出后,檢測(cè) P0.19引腳(對(duì)應(yīng) CONF_DONE )的狀態(tài),如為高電平說(shuō) 明配置成功,否則配置失敗,需要重新進(jìn)行配置。配置程序流程如圖 3所示。圖3NCSM 技術(shù)分析文檔 嵌入式系統(tǒng)開(kāi)發(fā)系列 如果配置過(guò)程中出錯(cuò), EP2C35將會(huì)迫使 nSTATUS 引腳拉低來(lái)通知 LPC2214。在 本程序中為了主加快配置速度,沒(méi)有對(duì)此進(jìn)行判斷,而是在程序最后通過(guò) CONF_DONE 信號(hào)否抬高來(lái)判斷配置成功與否。如果配置出錯(cuò),該信號(hào)將不會(huì)抬 高,從

13、而可以重新開(kāi)始配置。本程序在 LPC2214內(nèi)部 FLASH 運(yùn)行, FPGA配置文件放在外部 FLASH 中,系統(tǒng) 加電以后運(yùn)行位于內(nèi)部 FLASH 地址的主程序。在本系統(tǒng)中使用了實(shí)時(shí)多任務(wù)操 作系統(tǒng)( RTOS),在軟件設(shè)計(jì)時(shí)將配置程序放在第一個(gè)運(yùn)行的任務(wù)中,保證在 開(kāi)機(jī)時(shí)首先完成 FPGA 配置。配置所需要的時(shí)間與微處理器的運(yùn)行速度及配置文 件的大小有關(guān)。在本系統(tǒng)中,微處理器運(yùn)行在 60MHz ,配置文件的二進(jìn)制形式有400KBytes,配置所需的時(shí)間為 I/O 方式 6s左右, SPI方式 2s左右。 本方案相關(guān) C 語(yǔ)言代碼:#define LOAD_USE_IO 0#if LOAD

14、_USE_IOvoid Init_IO(void)IO0DIR |= (DCLK | DATA);DCLK_LOW();DATA_LOW();#elsevoid Init_SPI(void)PINSEL0 |= (SPI0_SCK | SPI0_MOSI | SPI0_SSEL);S0PCCR = 8;#endifvoid FPGA_LoadInit(void)#if LOAD_USE_IOInit_IO();#elseInit_SPI();#endifPINSEL1 &= (P019_CONF_DONE); /P0.19 配置為 GPIOIO0DIR &= (CONF_DON

15、E | n_STATUS); / 初始化 ARM 的 CONF_DONE 和 nSTATUS 引腳為輸入IO1DIR |= nCONFIG; / 初始化 ARM 的 nCONFIG 引腳為輸出高電平 /每次發(fā)送 8 位 /選擇為 SPI主模式, 0位先發(fā)送 S0PCR = MSTR | LSBF; /配置引腳連接模 塊,選擇為 SPI 功能腳 /時(shí)鐘初始化為低電平 /數(shù)據(jù)初始化為低電平 /時(shí)鐘和數(shù)據(jù) 引腳作為輸出 /編譯開(kāi)關(guān)。 0:SPI 加載 1:I/O 口加載NCSM 技術(shù)分析文檔 嵌入式系統(tǒng)開(kāi)發(fā)系列 nCONFIG_HIGH(); DelayNS(1000);bool FPGA_Load

16、Prog(uint8 *data_buf, uint32 len)uint8 i, j;#if LOAD_USE_IOuint8 ConfData;#endifFPGA_LoadInit();/判斷 nSTATUS 信號(hào)是否一開(kāi)始就為低 ,為低說(shuō)明 FPGA 上電不正常 ,還處于 POR 狀態(tài) if(!nSTATUS()SendStr("nrnSTATUS is LOW before config!");return FALSE;/FPGA 配置啟動(dòng)時(shí)序/拉低 nCONFIG 信號(hào),然后判斷 nSTATUS 信號(hào)是否為低,為低后拉高 nCONFIG 信號(hào) nCONFIG_L

17、OW();for(j = 0; j < 100 && nSTATUS(); j+);if(j = 100) /nSTATUS 信號(hào)一直為高,沒(méi)能進(jìn)入配置狀態(tài)SendStr("nrnSTATUS always LOW.");return FALSE; nCONFIG_HIGH();/等待 nSTATUS 信號(hào)變高for(j = 0; j < 100 && !nSTATUS(); j+);if(j = 100)SendStr("nrnSTATUS always LOW.");return FALSE;for(j =

18、 0; j < 20; j+); /nSTATUS 信號(hào)變高后延時(shí) 1uS/FPGA 配置啟動(dòng)時(shí)序結(jié)束for (i = 0; i < len; i+) / 入口:加載數(shù)據(jù),數(shù)據(jù)長(zhǎng)度NCSM 技術(shù)分析文檔 嵌入式系統(tǒng)開(kāi)發(fā)系列#if LOAD_USE_IO ConfData = data_bufi;for(j = 0; j < 8; j+) if(ConfData & 0x01) DATA_HIGH();elseDATA_LOW(); DCLK_HIGH();DCLK_LOW();#elseS0PDR = data_bufi;while (!(S0PSR & SPIF);#endifif (!CONF_DOWN() / 加載完后判斷 CONF_DONE 信號(hào)是否為高return FALSE;return TRUE; / 將數(shù)據(jù)送到 SPI發(fā)送寄存器 /等待發(fā)送成功標(biāo)志 /輸出時(shí)鐘信號(hào) /數(shù)據(jù)右移 1 位 ConfData >>= 1; /

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論