基于FPGA的自動(dòng)加載系統(tǒng)設(shè)計(jì)實(shí)現(xiàn)
摘要:針對FPGA可以在每次上電時(shí)自動(dòng)獲取配置文件的需求,提出了一種由USB芯片和FLASH芯片、CPLD組成的可對FPGA上電后自動(dòng)加載的系統(tǒng)。該系統(tǒng)可以通過USB芯片和CPLD將PC中的FPGA配置文件寫入FLASH芯片,并且在CPLD的控制下將配置文件以PS模式配置給FPGA。測試表明,該系統(tǒng)可以在上電時(shí)自動(dòng)對FPGA進(jìn)行加載,彌補(bǔ)了FPGA掉電后數(shù)據(jù)消失的不足。
本文引用地址:http://m.butianyuan.cn/article/235056.htm0 引言
FPGA(Field Programmable Gate Array)即現(xiàn)場可編程門陣列,隨著微電子技術(shù)的發(fā)展,F(xiàn)PGA的性能變的越來越優(yōu)越,應(yīng)用空間也變得越來越廣。FPGA具有支持重復(fù)編程的特點(diǎn),但是掉電后不能保存配置信息。因此在上電后,都需要用戶將設(shè)計(jì)的FPGA配置文件從外部存儲(chǔ)器中下載到FPGA中才能工作。針對這種情況,本文提出了一種以USB芯片,F(xiàn)LASH芯片和CPLD組成的FPGA自動(dòng)加載系統(tǒng)。該系統(tǒng)通過USB芯片將PC中的配置文件傳送給CPLD,CPLD再將其寫入FLASH芯片,F(xiàn)LASH芯片可以長久地存儲(chǔ)配置文件。這樣FPGA每次上電后CPLD將FLASH中的配置文件讀出來配置FPGA。從而使FPGA在每次上電后都可以自動(dòng)獲取配置文件,使其可以作為一個(gè)獨(dú)立“芯片”工作,具有很強(qiáng)的實(shí)用性。在PS模式配置方式上也有改進(jìn),在傳統(tǒng)PS模式下配置多個(gè)FPGA時(shí)通常使用前一級的FPGA的nCEO連接后一級FPGA的nCE來使能后一級FPGA,這樣在第一個(gè)FPGA配置好后,nCEO會(huì)使能下一級的FPGA開始配置。這樣只能先配置第一個(gè)FPGA,而且不能自由控制來配置下一級的FPGA。采用CPLD同時(shí)連接兩個(gè)nCE,在前一級FPGA配置好后,獲取完成信號(hào)來配置第二個(gè)FPGA,這樣不受FPGA前后級聯(lián)的順序影響,可以自由選擇配置FPGA。
1 系統(tǒng)框架及芯片簡介
系統(tǒng)由CPLD,USB芯片和FLASH芯片組成,外加PC部分配合系統(tǒng)工作。系統(tǒng)框架見圖1。系統(tǒng)中USB芯片連接PC與CPLD,PC通過USB向CPLD發(fā)送命令來操作FLASH。首先發(fā)送擦除FLASH命令,擦除完畢或?qū)⑴渲梦募懭隖LASH芯片。在FLASH芯片中可以存入多個(gè)FPGA的配置文件,在上電后或者需要加載時(shí),CPLD讀取FLASH中的配置文件并且對FPGA進(jìn)行配置。
?
?
2 燒寫FLASH時(shí)序
USB、CPLD和FLASH的連接關(guān)系如圖2所示。USB將PC的命令和配置文件發(fā)送給CPLD,CPLD通過時(shí)序邏輯控制FLASH。
?
?
系統(tǒng)中所使用的USB芯片是FTDI公司的FT245BL,將USB芯片與PC連接后,USB芯片會(huì)自動(dòng)識(shí)別為串口,利用串口調(diào)試助手可以向其發(fā)送命令或文件。
擦除和燒寫FLASH操作如下所述:
FLASH芯片選用恒憶公司的M29EW系列512MNOR型FLASH。采用異步時(shí)鐘操作,時(shí)序圖中的fls_byte管腳對應(yīng)的位寬選擇信號(hào),在本系統(tǒng)中將其拉低表示使用8 b位寬fls_adr表示地址,fls_dat表示數(shù)據(jù),fls_cen為芯片使能信號(hào),fls_oen為芯片讀使能信號(hào),fls_wen為芯片寫使能信號(hào)。
如圖3和圖4所示,在執(zhí)行擦除或?qū)懖僮鲿r(shí)序時(shí),將fls_cen拉低、fls_oen拉高時(shí)可以執(zhí)行寫或擦除命令,fls_wen上升沿采樣地址,下降沿采樣數(shù)據(jù)。fls_ry_by是芯片的繁忙或空閑信號(hào),是FLASH芯片惟一的輸出信號(hào),用于表示正在執(zhí)行擦除或者寫操作。
?
?
?
?
(1)擦除FLASH
在使用FALSH芯片之前需要對其進(jìn)行擦除,PC通過USB向CPLD發(fā)出擦除命令后如圖3所示。寫入連續(xù)5個(gè)對應(yīng)的地址和數(shù)據(jù)后,F(xiàn)LASH芯片將整個(gè)芯片的數(shù)據(jù)擦除,如圖3所示在執(zhí)行后,fls_ry_by信號(hào)拉低表示進(jìn)入了擦除狀態(tài)。
(2)燒寫FLASH
如圖4所示,在執(zhí)行寫FLASH操作時(shí),首先需要給出寫FLASH三次對應(yīng)的數(shù)據(jù)和地址作為前置命令,然后給出需要寫入FLASH的地址和數(shù)據(jù)。在接到命令后,CPLD根據(jù)圖中時(shí)序?qū)PGA的配置文件寫入FLASH。
3 PS模式自動(dòng)加載FPGA
FPGA的配置管腳如圖5所示。
在PS模式下配置FPGA的FLASH,CPLD和FPGA的連接關(guān)系如圖5所示。
?
?
圖6所示為PS模式加載FPGA的流程圖。在加載過程中,將ps_nce拉低并且將ps_nconfig拉低至少40μs后再拉高,正常情況下這個(gè)操作會(huì)使ps_nstatus產(chǎn)生一個(gè)由低到高的一個(gè)脈沖信號(hào)并且使ps_conf_done由高變低。在ps_nstatus產(chǎn)生上升沿的瞬間立即給出ps_dclk和ps_data0來配置FPGA,其中ps_data0信號(hào)是通過讀取FLASH芯片中的數(shù)據(jù)實(shí)現(xiàn)的。FPGA在接收配置文件的過程會(huì)自動(dòng)識(shí)別文件的結(jié)尾,在配置結(jié)束后ps_ conf_done信號(hào)會(huì)拉高以表明配置結(jié)束,配置過程中init_done會(huì)由高變低,在經(jīng)過至少18μs后init_done信號(hào)拉高表明完成初始化,隨后進(jìn)入用戶模式。常規(guī)的方式采用nCONFIG,nSTATUTS,CONF_DONE復(fù)用,并且前一級FPGA的nCE連接后一級的FPGA的nCEO,這樣加載順序就被固定,而且每次加載只能先加載第一個(gè)FPGA,待加載完畢后才能加載第二個(gè)FPGA。與常規(guī)的配置方式不同之處在于通過使能nCE來選擇需要配置的FPGA,給出相應(yīng)的配置文件與信號(hào)ps_conf_done的時(shí)序來判斷是否配置完成,這樣就可以自由選擇配置FPGA。
?
?
?
?
如圖7所示為FPGA自動(dòng)加載的平臺(tái),通過CPLD的邏輯控制和USB芯片的總線可以將PC端配置文件寫入FLASH芯片中。在需要使用自動(dòng)加載功能時(shí),在上電后CPLD會(huì)立即讀出存取在FLAHS中的FPGA配置文件,以PS模式配置相應(yīng)的FPGA。
4 結(jié)論
經(jīng)測試系統(tǒng)可以在上電后對FPGA進(jìn)行自動(dòng)加載。本文提供了系統(tǒng)的結(jié)構(gòu)框架和實(shí)施方案整體流程以及時(shí)序要求,具有很強(qiáng)的應(yīng)用和參考價(jià)值。
評論