FPGA在線燒程序方法(用MCU直接配置FPGA)_第1頁
FPGA在線燒程序方法(用MCU直接配置FPGA)_第2頁
FPGA在線燒程序方法(用MCU直接配置FPGA)_第3頁
FPGA在線燒程序方法(用MCU直接配置FPGA)_第4頁
FPGA在線燒程序方法(用MCU直接配置FPGA)_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、用CPU配置Altera 公司的FPGA概述目前很多產(chǎn)品都廣泛用了 FPG A雖然品種不同,但編程方式幾乎都一樣:利用專用的 EPRO對FPGA進(jìn)行配置。專用的EPRO價格不便宜,且大不跟上都是一次性 OPT方式 編程。一旦更改FPGA設(shè)計,代價不小。 為了進(jìn)一步降低產(chǎn)品的成本和升級成本,可 以考慮利用板上現(xiàn)有CPU子系統(tǒng)中空閑的ROM空間存放FPGA勺配置數(shù)據(jù),并由CPU 模擬專用EPRO對FPGA進(jìn)行配置。本文將以PowerPC860和EP1K3C為例,講解如何 利用CPU來配置FPGACPU配置FPGA勺優(yōu)點(diǎn)與 Configuration EPROM 方式相比本設(shè)計有如下優(yōu)點(diǎn):1. 降低

2、硬件成本一一省去了 FPGA專用EPROM的成本,而幾乎不增加其他成本。以A LTERA勺10K系列為例,板上至少要配一片以上的EPC1每片EPC啲價格要幾十元, 容量1M位。提供1Mb的存儲空間,對于大部分單板來說(如 860系統(tǒng)的單板),是 不需要增加硬件的。即使增加1Mb存儲空間,通用存儲器也會比FPGA專用EPROI便 宜。2. 可多次編程 FPGA專用EPROML乎都是OTP 旦更換FPGA版本,舊版本的 并不便宜的EPRO只能丟棄。如果使用本設(shè)計對 FPGA配置,選用可擦除的通用存儲 器保存FPGA勺編程數(shù)據(jù),更換FPGA版本,無須付出任何硬件代價。這也是降低硬件 成本的一個方面。

3、3. 實(shí)現(xiàn)真正"現(xiàn)場可編程"-FPGA的特點(diǎn)就是"現(xiàn)場可編程",只有使用CPU對FPGA 編程才能體現(xiàn)這一特點(diǎn)。如果設(shè)計周全的話,單板上的FPG/可以做到在線升級。4. 減少生產(chǎn)工序-省去了對"FPGA專用EPROM燒結(jié)的工序,對提高生產(chǎn)率,降低生 產(chǎn)成本等均有好處。對于雙面再流焊的單板,更可省去手工補(bǔ)焊 DIP 器件的工序。當(dāng)然,與 Configuration EPROM 方式相比也有一些需要注意的的地方: 1.需要CPU提供5根I/O線-一般來說,這并不困難。對于 MPC86一類的CPU來 說,區(qū)區(qū) 5根 I/O 線是不成問題的。 即使是某

4、些設(shè)計中實(shí)在沒有多余的 I/O 供配置使 用,也可通過板上的PLD擴(kuò)展。雖然這樣做可能會增加成本,但獲得的真正 "現(xiàn)場可 編程"的功能是非常寶貴的。2. CPU的Boot應(yīng)不依賴于FPGA-這在單板設(shè)計時需要特別考慮的。由于 CPU對FP GA進(jìn)行配置所需的資源很少,這一點(diǎn)比較容易做到。設(shè)計摘要本設(shè)計嚴(yán)格按照FPGA勺PS配置流程進(jìn)行,并在配置過程中始終監(jiān)測工作狀態(tài), 在完 善的軟件配合下,可糾正如上電次序?qū)е屡渲貌徽5儒e誤。因此,采用此方法對 FPGA進(jìn)行配置,性能將優(yōu)于 Configuration EPROM方式。本設(shè)計是利用板上現(xiàn)有 CPU子系統(tǒng)中空閑的ROM間存放

5、FPGA勺配置數(shù)據(jù),并由CP U模擬專用EPRO對FPGA進(jìn)行配置,以降低硬件成本并實(shí)現(xiàn) FPGA勺在線升級。本設(shè)計已在MPC86C和EP1K30環(huán)境下完成驗(yàn)證,適用于有 5個多余I/O的CPU對Alt era FPGA的配置。參考資料ALTERA:AN-116 Configuring SRAM-Based LUT Devices ALTERA: ACEX 1K Programmable Logic Device Family二 . 硬件設(shè)計1. 配置基本原理RAM-Based FPGA 由于 SRAM 工藝的特點(diǎn),掉電后數(shù)據(jù)會消失。因此,每次系統(tǒng)上電后,均需對 FPGA 進(jìn)行配 置。對于 A

6、ltera 的 FPGA,配置方法可分為:專用的 EPROM ( Configuration EPROM )、PS (Passive serial 無 源串行)、 PPS( Passive parallel synchronous 無源同步并行)、 PPA( Passive parallel asynchronous 無源異步并行)、JTAG (不是所有器件都支持) «> «« 1 «»"LrLFLFLrL I-! i1LJ* X X X H>gh-Z Hioh-ZX initialization *X Usn,本設(shè)計采用

7、PS方式對FPGA進(jìn)行配置,是基于如下幾個方面的考慮:1. PS方式連線最簡單2. 與Configuration EPROM方式可以兼容(MSEL0、1設(shè)置不變)nCONFIG nSTATUS CONH DONE DCLK ATA3. 與并行配置相比,誤操作的幾率小,可靠性高L -L_m_TTrlpljtnjj¥ I CC 4 X 偽)C J、只需利用CPU的5個I/O線,就可按圖 2所指示的時序?qū)PGA進(jìn)行PS方式的配置。2. 配置電路的連接CPU僅需要利用5個I/O腳與FPGA相連,就實(shí)現(xiàn)了 PS方式的硬件連接,具體信號見下表(信號方向從CPU側(cè)看):信號名I/O說明Data0

8、Oconfiguration dataDCLKOconfiguration clockn CONFIGOdevice reset (a low to high transition starts the con figurati on with in the device)Conf_doneIStatus bit (gets checked after configuration, will be high if configuration complete)nSTATUSIStatus bit indicating an error during configuration if lowMi

9、croprocessorMSElLI->CONI- DONEMSELD>nSJA7US->nCEnCEQ->DATAD->nCONF IG->DCLKAPEX IL APEX 20KACEX 1K. Mercury orFLEX 10K DeviceGND NC圖3 PS配置單片F(xiàn)PGA的硬件連接圖4 PS配置多片F(xiàn)PGA的硬件連接3. 配置操作過程CPU按下列步驟操作I/O 口線,即可完成對FPGA的配置:1. nCONFIG="0"、DCLK="O",保持 2gS以上。2. 檢測nSTATUS,如果為"0

10、",表明FPGA已響應(yīng)配置要求,可開始進(jìn)行配置。否則報錯。正常情況下,nCO NFIG="0"后 1 gS 內(nèi) nSTATUS 將為"0"。3. nCONFIG="1",并等待 5 gSo4. Data0 上放置數(shù)據(jù)(LSB first),DCLK="1",延時。5. DCLK="0",并檢測nSTATUS,若為"0",則報錯并重新開始。6. 準(zhǔn)備下一位數(shù)據(jù),并重復(fù)執(zhí)行步驟4、5,直到所有數(shù)據(jù)送岀為止。7. 此時Conf_done應(yīng)變成"1",表

11、明FPGA的配置已完成。如果所有數(shù)據(jù)送出后,Conf_done不為"1",必須重新 配置(從步驟1開始)。8 配置完成后,再送出10個周期的DCLK,以使FPGA完成初始化。注意事項:1. DCLK時鐘頻率的上限對不同器件是不一樣的,具體限制見下表:型號最咼頻率ACEX1K FLEX10KE APEX20K33MHzFLEX10K16MHzAPEXII、APEX20KE APEX20KC57MHzMercury50MHz2. 步驟7中FPGA完成初始化所需要的 10個周期的DCLK是針對 ACEX 1K和FLEX 10KE的。如果是 APEX 20K,則需要40個周期。3.

12、 在配置過程中,如果檢測到 nSTATUS為"0",表明FPGA配置有錯誤,則應(yīng)回到步驟 1重新開始圖5操作流程框圖4. 實(shí)現(xiàn)在線升級采用本模塊的最大優(yōu)點(diǎn)是可以實(shí)現(xiàn)單板FPGA的在線升級。要實(shí)現(xiàn)在線升級,單板設(shè)計必須考慮以下幾個問題:1. CPU的啟動必須不依賴于 FPGA ,即CPU子系統(tǒng)應(yīng)在FPGA被配置前可獨(dú)立運(yùn)行并訪問所需資源。CPU對FPGA進(jìn)行配置所需的資源很少,一般來說,僅RAM和BootROM的訪問而已。2. FPGA配置前(或配置過程中)必須保證控制的設(shè)備處于非工作態(tài)或不影響其他設(shè)備工作的穩(wěn)定態(tài)。3. 為了實(shí)現(xiàn)FPGA的在線升級,存放 FPGA配置數(shù)據(jù)的存

13、儲器器必須是 CPU可重寫的,且此存儲器應(yīng)是非易 失性的,以保證單板斷電后,F(xiàn)PGA數(shù)據(jù)不需從后臺重新獲得。具體過程結(jié)合圖6的實(shí)例,對FPGA在線升級作一具體描述。圖6 FPGA在線升級1. 使用編譯和連接工具,將 FPGA的第一個版本與 MPC860的工作程序連接在一起,分別占用地址為0x70000 -0X7FFFF 和 0x00000-0x6FFFF 的存儲空間。2. 單板啟動時,MPC860自動將0x70000-0x7FFFF的數(shù)據(jù)下載到 FPGA中,完成FPGA配置。3. 當(dāng)FPGA需升級時,將新的 RBF配置文件放在后臺計算機(jī)中。4. MPC860把BOOTROM的0x70000-0

14、x7FFFF空間當(dāng)作普通數(shù)據(jù)存儲區(qū),通過后臺將新的RBF配置文件放在 0x70000-0x7FFFF 中。5. MPC860調(diào)用BOOTROM中的FPGA配置子程序,對 FPGA從新下載數(shù)據(jù),完成 FPGA升級。以MPC860和Altera EP1K30為例,電原理圖如下:軟件編程文件格式的轉(zhuǎn)換MAX+plusll或Quartusll生成的SOF或POF文件不能直接用于 CPU配置FPGA中,需要進(jìn)行數(shù)據(jù)轉(zhuǎn)換才能得到軟件可用的配置數(shù)據(jù)。在 MaxplusIl中的具體步驟如下:1.進(jìn)入數(shù)據(jù)轉(zhuǎn)換對話框圖1進(jìn)入數(shù)據(jù)轉(zhuǎn)換對話框2選擇需要轉(zhuǎn)換的SOF文件,對于配置多個FPGA的場合,應(yīng)選擇所有的SOF文

15、件并排好次序。輸岀文件的格式 我們選則二進(jìn)制的rbf(Sequential)。(也可以選擇其他格式,如HEX等,在CPU軟件編寫上會與本文例子略有區(qū)別,關(guān)于不同文件格式的區(qū)別,在altera的AN116號文檔上有詳細(xì)解釋)圖2選擇相應(yīng)的輸岀數(shù)據(jù)格式在 QuartusII 軟件的 file 菜單下,同樣可以找到類似菜單進(jìn)行格式轉(zhuǎn)化。CPU 程序設(shè)計以 MPC860 為例,我們可以將轉(zhuǎn)換完成的 RBF 文件作為二進(jìn)制文件,直接寫到 MPC860 系統(tǒng)的某一 ROM/Flash 區(qū)域。由于這段數(shù)據(jù)的起始地址和長度都是已知的,相應(yīng)的軟件編寫是很方便的。本設(shè)計的 CPU 源程序void InitPORT

16、(void) / 初始化 PB 口相應(yīng)位:/ PB24-輸出,PB25-輸入,PB26-輸出,PB27-輸入,PB28-輸出IMMR->pip_pbpar=0x00000000;IMMR->pip_pbdir=0xFFFFF5AF;IMMR->pip_pbodr=0x00000000;IMMR->pip_pbdat=0xffffff57;UBYTE Fpga_DownLoad(void) / FPGA 配置UBYTE *Bootaddr;UWORD CountNum=0x0;UBYTE FpgaBuffer, i;/ 獲得 Boot 區(qū)首地址Bootaddr=(UBYT

17、E *)(IMMR->memc_or0 & IMMR->memc_br0 & 0xFFFF8000);Set_nCONFIG(0); / nCONFIG="0" ,使 FPGA 進(jìn)入配置狀態(tài)Set_DCLK(0);DELAY5us();if (Read_nSTATUS() = 1) / 檢測 nSTATUS ,如果為 "0" ,表明 FPGA 已響應(yīng)配置要求,可開始進(jìn)行配置。否則報錯Err_LED(1);return 0;Set_nCONFIG(1);DELAY5us();/ 開始輸出配置數(shù)據(jù):while(CountNum &

18、lt;= 0x0e74e)FpgaBuffer= *(Bootaddr+0x70000+CountNum);for (i=0; i<8; i+) / DCLK="0" 時,在 Data0 上放置數(shù)據(jù)( LSB first ) Set_Data0(FpgaBuffer&0x01);Set_DCLK(1); / DCLK->"1" ,使 FPGA 讀入數(shù)據(jù)FpgaBuffer >>= 1; / 準(zhǔn)備下一位數(shù)據(jù)if (Read_nSTATUS() = 0) / 檢測 nSTATUS ,如果為 "0" ,表明

19、FPGA 配置出錯 Err_LED(1);return 0;Set_DCLK(0);CountNum+;/ FPGA 初始化:/ ACEX 1K 和 FLEX 10KE 需要 10 個周期, APEX 20K 需要 40 個周期 for(i=0; i<10; i+)Set_DCLK(1);DELAY100us();Set_DCLK(0);DELAY100us();Set_Data0(0);if (Read_nCONF_Done() = 0) /檢測nCONF_Done,如果為"0",表明FPGA配置未成功Err_LED(1);return 0;return 1; /

20、成功返回/ Data0 輸出void Set_Data0(UBYTE setting) / PB24if (setting) IMMR->pip_pbdat |= 0x00000080;else IMMR->pio_pbdat &= 0xFFFFFF7F;/ 讀 nSTATUS 狀態(tài)UBYTE Read_nSTATUS(void) / PB25if (IMMR->pio_pbdat & 0x00000040) return 1;else return 0;/設(shè)置nCONFIG電平void Set_nCONFIG(UBYTE setting) / PB26if

21、(setting) IMMR->pip_pbdat |= 0x00000020;else IMMR->pio_pbdat &= 0xFFFFFFDF;/ 讀 nCONF_Done 狀態(tài)UBYTE Read_nCONF_Done(void) / PB27if (IMMR->pio_pbdat & 0x00000010) return 1;else return 0;/輸出DCLKvoid Set_DCLK(UBYTE setting) / PB28if (setting) IMMR->pio_pbdat |= 0x00000008;else IMMR-&g

22、t;pio_pbdat &= 0xFFFFFFF7;/結(jié)束我們已在某單板上實(shí)現(xiàn)了該設(shè)計?,F(xiàn)以該單板為例,說明如何實(shí)現(xiàn)CPU對FPGA的配置。在該單板上是使用 MPC860作CPU,BootROM 采用SST39VF040,一片F(xiàn)PGA型號EP1K30QC208-3。我們在 MCP860的PB 口選5根線與EP1K30連接成PS配置方式,硬件連接參考第二章,Data0也由MPC860輸出,信號定義見下表:MPC86引腳I/O信號名稱EP1K3C引 1 腳PB24ODATA0156PB25InSTATUS52PB26On CONFIG105PB27ICONF_DONE2PB28ODCLK1

23、55EP1K30所需要的配置數(shù)據(jù)為 58kB (準(zhǔn)確的長度參見生成的 RBF文件),由于BootROM比較空,我們將配置數(shù) 據(jù)安排在BootROM的0x700000X7FFFF區(qū)間內(nèi)。第一次的配置數(shù)據(jù)可利用編程器將 RBF文件當(dāng)作二進(jìn)制文件寫到BootROM的起始地址為0x70000的區(qū)域,也可以通過 860仿真器把數(shù)據(jù)寫到指定位置。 具體軟件操作參見第二章。FPGA在線更改配置為檢驗(yàn)FPGA在線升級的可能性,我們在CPU的BootROM中放置了不同邏輯的 FPGA配置數(shù)據(jù)。CPU正常運(yùn)行 時,測試軟件隨意更換 FPGA的配置數(shù)據(jù)。在每次配置完成后,F(xiàn)PGA均能實(shí)現(xiàn)相應(yīng)的邏輯功能。如果和系統(tǒng)軟

24、件配合,在線更改 EPROM中的配置數(shù)據(jù),F(xiàn)PGA的在線升級是完全可以實(shí)現(xiàn)的。為了便于調(diào)試和實(shí)際生產(chǎn),我們將 FPGA的初始配置數(shù)據(jù)放置在 BootROM中。如某些單板 BootROM的寫功能 必須禁止,此時FPGA配置數(shù)據(jù)可放在其它存儲器中,如存放應(yīng)用程序的FLASH中,升級FPGA配置數(shù)據(jù)可以和升級應(yīng)用程序一并完成。電纜下載為了提高調(diào)試進(jìn)度,通常會采用電纜下載的方式。在單板上兼容這兩種配置方式有多種辦法,我們采用了比較簡 單又便于生產(chǎn)的"0歐姆電阻連接方式"。電氣連接的示意圖如下:圖1兼容電纜下載在最初調(diào)試FPGA時,R1R5不焊,直接用電纜下載。同時, MPC860的

25、程序中跳過FPGA配置的代碼。等FPGA設(shè)計定型后(相當(dāng)于準(zhǔn)備使用EPC1時),焊上R1R5,利用CPU配置FPGA。當(dāng)然,R1R5也可改用跳線或撥動開關(guān)。這兩種連接方式在開發(fā)調(diào)試中比0歐姆電阻方便,但實(shí)際使用中可靠性0歐姆電阻連接方式最0歐姆電阻連接方式。不如0歐姆電阻高,如跳線會出現(xiàn)短路塊脫落、撥動開關(guān)會出現(xiàn)接觸不良等現(xiàn)象。而且, 便于生產(chǎn),價格也最低。建議開發(fā)階段的單板可以用跳線或撥動開關(guān),轉(zhuǎn)產(chǎn)時采用在使用下載電纜時需要注意電源的選擇。由于Altera以前的Byteblaster下載電纜是5V供電的,有不少設(shè)計都把下載電纜插座接到5V電源上,這種5V供電的下載電纜可能導(dǎo)致不能忍受 5V信號的CPU損壞。因此,使用本 模塊時,下載電纜應(yīng)使用低電壓版本的Byteblaste

溫馨提示

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

評論

0/150

提交評論