在FPGA中實(shí)現(xiàn)在應(yīng)用編程(In Application Pro—gramming,IAP)有兩種方法:一種是,在電路板上加外電路。例如用MCU或CPLD來(lái)接收配置數(shù)據(jù),在被動(dòng)串行(PS)模式下由外電路編程FPGA或是編程Flash器件(包括EPCS和Flash),然后控制FPGA的配置復(fù)位引腳來(lái)復(fù)位整個(gè)FPGA,最后FPGA采用主串方式進(jìn)行自我配置。另一種是,通過(guò)FPGA中的Nios CPU或是專用IP來(lái)接收編程數(shù)據(jù),并編程Flash芯片,然后通過(guò)外部簡(jiǎn)單電路將FPGA復(fù)位啟動(dòng),以主動(dòng)串行(AS)模式進(jìn)行配置。
為了減小電路板面積,節(jié)約成本,提高可靠性,本設(shè)計(jì)采用第二種方法。本設(shè)計(jì)的要求是:硬件電路須配置為主動(dòng)串行模式,即選擇MSEL[1:O]為l:O;具備EPCS,或同時(shí)具備EPCS和Flash;具有與PC機(jī)通信的功能。FPGA接收更新數(shù)據(jù),并將其存入Flash器件,然后復(fù)位Nios或FPGA對(duì)軟硬件進(jìn)行更新。
1 系統(tǒng)的硬件設(shè)計(jì)
系統(tǒng)主要由Cyclone FPGA、EPCS、Flash和串行通信等組成,硬件結(jié)構(gòu)如圖1所示。
點(diǎn)擊看原圖
EPCS采用Altera公司的EPCS4,容量達(dá)到4 Mb,引腳較少,成本低,支持3.3 V低電壓操作。Flash芯片采用AMD公司的Am29LV640MH/L,支持3.O V低電壓操作,具有低功耗特性,芯片容量為64 Mb,滿足大容量數(shù)據(jù)的存儲(chǔ);并口操作,與Cyclone FPGA完全兼容,而且在SOPC中有與之對(duì)應(yīng)的CFI_FLASH核,便于硬件電路的設(shè)計(jì)。
2 工作原理
2.1 幾個(gè)概念
FPGA配置數(shù)據(jù):是sof文件,將sof文件編程到Flash中,上電后FPGA可以從Flash中配置。sof文件是其他配置文件的基礎(chǔ),其他文件均可由sof文件轉(zhuǎn)換得到。
軟件數(shù)據(jù):通過(guò)NiosII IDE創(chuàng)建elf文件,將用戶程序編程到Flash中,允許復(fù)位后從F1ash中加載軟件程序,從而啟動(dòng)NiosII CPU。
2.2 編程文件
編程文件為Flash格式的文件,即S—reeorld(簡(jiǎn)稱“SREC”)格式。SREC格式是Motorola公司制定的一種燒寫格式標(biāo)準(zhǔn)。SREC格式文件是由一組ASCII碼組成,所有的十六進(jìn)制數(shù)據(jù)均為大寫形式,結(jié)構(gòu)說(shuō)明如下:
①起始代碼。以S作為一個(gè)數(shù)據(jù)行的開始。
②記錄類型。1個(gè)十進(jìn)制數(shù)字(O~9),定義數(shù)據(jù)域的類型。
③字節(jié)數(shù)。1個(gè)字節(jié),定義字節(jié)數(shù)之后除地址字節(jié)、校驗(yàn)字節(jié)之外其他字節(jié)的個(gè)數(shù)。
④地址。由4(或6、8)個(gè)字節(jié)組成,定義了第一個(gè)數(shù)據(jù)字節(jié)存儲(chǔ)的位置。
⑤數(shù)據(jù)字節(jié)。由n個(gè)字節(jié)組成,數(shù)據(jù)字節(jié)為實(shí)際有效的編程信息。
⑥校驗(yàn)字節(jié)。1個(gè)字節(jié),作校驗(yàn)使用,所有十六進(jìn)制字節(jié)相加后取8位,為0xFF。
2.3 AS配置模式
FPGA的配置數(shù)據(jù)存儲(chǔ)在內(nèi)部SRAM單元中。由于SRAM掉電后數(shù)據(jù)會(huì)丟失,因此每次上電時(shí)必須重新將配置數(shù)據(jù)寫入SRAM中。這個(gè)過(guò)程稱為“FPGA的配置”。由此可見,F(xiàn)PGA的配置信息是存儲(chǔ)在FPGA內(nèi)部RAM當(dāng)中的。可知在主動(dòng)串行模式下,F(xiàn)PGA將配置數(shù)據(jù)從EPGS中讀取,然后存入內(nèi)部RAM中。
AS配置模式支持StratixII和Cyclone系列的FPGA,通過(guò)配置MSEL[1:O]為1:0,選擇主動(dòng)配置模式(除JTAG模式不受MSEL控制外,其他配置方式均由MSEL決定)。AS配置模式使用串行配置器件(EPCS1/EPCS4/EPCSl6/EPCS64)。在AS配置過(guò)程中,StratixlI和Cy—clone系列的FPGA是主設(shè)備,串行配置器件為從設(shè)備。如圖2所示,在AS配置模式下,F(xiàn)PGA通過(guò)DATA0接收配置數(shù)據(jù),配置數(shù)據(jù)和DCLK是同步的。每個(gè)時(shí)鐘周期傳輸1位配置數(shù)據(jù)。通過(guò)控制nCONFIG、nSTATUS、CONF_DONE來(lái)表示配置過(guò)程。串行配置芯片在DCLK上升沿時(shí)鎖存輸入信號(hào)和控制信號(hào),在下降沿時(shí)輸出配置數(shù)據(jù)。Cyclone芯片在DCLK下降沿時(shí)輸出控制信號(hào),并鎖存配置數(shù)據(jù)。
點(diǎn)擊看原圖
3 工作流程
3.1 硬件配置的更新
如圖3所示,F(xiàn)PGA的配置過(guò)程分為:復(fù)位、配置和初始化。
點(diǎn)擊看原圖
(1)復(fù)位FPGA
上電復(fù)位:在用戶模式下,當(dāng)nCONFIG引腳持續(xù)低電平40μs時(shí),F(xiàn)PGA將進(jìn)入復(fù)位狀態(tài)。復(fù)位時(shí),F(xiàn)P—GA采樣MSEL引腳的電平值,以確定采用的配置方式;同時(shí),nSTATUS和CONF_DONE引腳由FPGA置為低電平,所有I/0引腳為三態(tài)且FPGA內(nèi)部配置寄存器被清空。
FPGA復(fù)位的2種方法:
①外加RC復(fù)位電路或者復(fù)位芯片,自動(dòng)產(chǎn)生上電復(fù)位脈沖。
②參考芯片手冊(cè)。如果芯片提供了上電復(fù)位脈沖(一般是全局復(fù)位信號(hào)),則使用它作為復(fù)位信號(hào);若沒(méi)有提供,則查找芯片是否給出了寄存單元上電默認(rèn)值(一般是O),利用該特性復(fù)位或者產(chǎn)生復(fù)位脈沖。
(2)配置FPGA
復(fù)位后,nCONFIG被外部上拉電阻拉高,進(jìn)入配置階段。此時(shí),nSTATUS被FPGA釋放并由外部上拉電阻拉為高電平后進(jìn)入配置狀態(tài)。Cyclone芯片通過(guò)將nCSO輸出的信號(hào)置低來(lái)使能串行配置芯片,nCS0引腳連接配置芯片的片選段(nCS),用串行時(shí)鐘(DCLK)和串行數(shù)據(jù)輸出(ASDO)引腳來(lái)發(fā)送操作指令,及/或?qū)⒌刂沸盘?hào)讀到串行配置芯片中。接著配置芯片將數(shù)據(jù)送到串行數(shù)據(jù)輸出(DATA)引腳,DATA引腳連接Cyclone芯片的DATA0輸入腳。配置數(shù)據(jù)在DCLK時(shí)鐘的上升沿載入FPGA。當(dāng)接收完所有的配置位后(CRC校驗(yàn)無(wú)誤),Cyclone芯片懸空CONF_DONE引腳,該引腳由外部10 kΩ電阻拉高;同時(shí),停止驅(qū)動(dòng)DCLK信號(hào)。只有當(dāng)CONF_DONE到達(dá)一定的邏輯高電平后,初始化才開始。
(3)初始化階段
在Cyclone芯片中,初始時(shí)鐘源是Cyclone芯片的lOMHz(典型的)內(nèi)部晶振,或者是可供選擇的CLKUSR引腳。內(nèi)部晶振是默認(rèn)的初始化時(shí)鐘源。如果用了內(nèi)部時(shí)鐘,則Cyclone芯片為正確的初始化提供足夠的時(shí)鐘。使用內(nèi)部時(shí)鐘的好處在于,初始化時(shí)不需要從外部發(fā)送其他的時(shí)鐘到CLKUSR引腳,而且可以把CLKUSR引腳當(dāng)作I/O引腳。
(4)用戶模式
初始化結(jié)束后,F(xiàn)PGA進(jìn)入用戶模式。在用戶模式下,用戶I/O引腳不再有弱上拉電阻,而是執(zhí)行設(shè)計(jì)中分配的功能。Cyclone芯片可以通過(guò)將nCONFIG拉低而開始重新配置。nCONFIG低信號(hào)應(yīng)該至少持續(xù)40μs。當(dāng)nCONFIG被拉低時(shí),Cyclone芯片被復(fù)位并進(jìn)入復(fù)位階段。Cyclone芯片也會(huì)把nSTATUS和CONF_DONE拉低,所有的I/O引腳處于三態(tài)。一旦nCONFIG回到邏輯高電平,Cyclone芯片將釋放nSTATUS,重新開始配置。
(5)配置時(shí)出現(xiàn)的錯(cuò)誤
如果在配置時(shí)出現(xiàn)錯(cuò)誤,則Cyclone芯片將nSTA—TUS信號(hào)置低來(lái)表明一個(gè)數(shù)據(jù)幀錯(cuò)誤,CONF_DONE信號(hào)為低。如果在Quartus軟件的Device&Pin Options窗口的General項(xiàng)中,選中Auto—restart configuration aftererror選項(xiàng),則Cyclone芯片通過(guò)激活nCSO來(lái)實(shí)現(xiàn)復(fù)位,在復(fù)位失效時(shí)間(40μs)后釋放nSTATUS,并再次嘗試配置。如果該選項(xiàng)未被選中,則外部系統(tǒng)必須監(jiān)視nSTA—TUS信號(hào)以防出錯(cuò),然后將nCONFIG信號(hào)拉低并持續(xù)至少40μs來(lái)重新配置。
計(jì)算機(jī)與目標(biāo)板上的Nios程序建立連接,通過(guò)通信接口將Flash文件傳輸給FPGA;Nios程序判斷出傳輸文件的針對(duì)目標(biāo)后,將編程數(shù)據(jù)存放在EPCS或Flash中。接收到的數(shù)據(jù)首先暫存入SDRAM,而不是直接對(duì)EPCS和Flash進(jìn)行操作。這樣做的好處是,一旦傳輸失敗或中止,不會(huì)破壞原有EPCS和Flash中的數(shù)據(jù)。
通過(guò)sof2Flash命令來(lái)生成Flash文件時(shí),可以通過(guò)SOPC Builder打開NioslI command shell,使用“sof2 Flash—epcs-input=<輸入文件名.sof>一output=<輸出文件名.Flash>”命令,生成的Flash文件存在于工程目錄下。也可以將sof文件復(fù)制到“〈quartus安裝目錄〉\kits\nios2_60\examples”下,直接打開NiosII command shell,使用“sof2Flash-epcs—input=<輸入文件名.sof>一output=<輸出文件名.Flash>”,生成的Flash文件存在于“〈quartus安裝目錄〉\kits\nios2_60\examples”下。
-
FPGA
+關(guān)注
關(guān)注
1643文章
21983瀏覽量
614672
發(fā)布評(píng)論請(qǐng)先 登錄
FPGA芯片配置方式及常見配置方法
基于SPI FLASH的FPGA多重配置

在FPGA的開發(fā)過(guò)程中如何實(shí)現(xiàn)在應(yīng)用編程應(yīng)用功能

解析FPGA從SPI Flash啟動(dòng)配置數(shù)據(jù)時(shí)的地址問(wèn)題

FPGA中SPI復(fù)用配置的編程方法
采用Flash和JTAG接口實(shí)現(xiàn)FPGA多配置系統(tǒng)設(shè)計(jì)
使用高速SPI Nor Flash的FPGA配置
使用CPLD和Flash實(shí)現(xiàn)FPGA的配置

FPGA_ASIC-DSP和FPGA共用FLASH進(jìn)行配置的方法

FPGA芯片配置分類及配置方式
FPGA數(shù)據(jù)配置模式解析
fpga配置flash怎么用來(lái)存儲(chǔ)數(shù)據(jù)
固化FPGA配置芯片的方式

評(píng)論