王新勇孫瑞利張利
(河南科技大學(xué)電子信息工程學(xué)院,河南洛陽(yáng)471003)
FPGA(Field-Programmable Gate Array),即現(xiàn)場(chǎng)可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。FPGA采用CMOS SRAM制造工藝,使用SRAM來存儲(chǔ)編程數(shù)據(jù),具有系統(tǒng)可編程特性。當(dāng)?shù)綦姾螅現(xiàn)PGA恢復(fù)成白片,內(nèi)部邏輯關(guān)系消失,因此,F(xiàn)PGA能夠反復(fù)使用。當(dāng)需要修改FPGA功能時(shí),只需換一片EPROM即可。這樣,同一片F(xiàn)PGA,不同的編程數(shù)據(jù),可以產(chǎn)生不同的電路功能。因此,F(xiàn)PGA的使用非常靈活。但使用FPGA時(shí),每次上電之后都需要再重新下載程序,無疑是非常不方便的。因此在使用時(shí)需要對(duì)FPGA進(jìn)行配置,即在每次系統(tǒng)上電時(shí),必須用配置芯片對(duì)其進(jìn)行配置,只有在配置正確的情況下,系統(tǒng)才能正常工作。配置數(shù)據(jù)可存儲(chǔ)于片外的EPROM或其它的存儲(chǔ)體上。本文所使用的FPGA芯片EPF10K10是Altera公司FLEX10K系列產(chǎn)品之一,包括可用邏輯門1萬~25萬,RAM 6114~4096位,512個(gè)宏單元,具有高密度、高速度的特點(diǎn)。配置芯片是Altera公司的可擦除芯片EPC2LC20,內(nèi)部有1,695,680位。
FPGA的配置方式有以下幾種:
(1)EPC1配置該方法是使用Altera公司提供的專用EPC1 EPROM對(duì)器件進(jìn)行配置,EPC1 EPROM存儲(chǔ)配置數(shù)據(jù),并產(chǎn)生同步時(shí)鐘信號(hào)和控制信號(hào),但該EPROM只能燒寫一次,適用于產(chǎn)品定型后使用。
(2)被動(dòng)串行配置方式PS(Passive Serial)
(3)被動(dòng)并行同步配置PPS(Passive Parallel Synchronous)
(4)被動(dòng)并行異步配置PSA
FPGA中有一些特殊管腳在配置過程中使用。
MSEL0、MSEL1為輸入配置方式選擇引腳,表1說明在二者選取不同值時(shí)的配置方式。
在本次設(shè)計(jì)中選擇MSEL0、,MSEL1均為低電平。
nSTATUS為配置狀態(tài)監(jiān)測(cè)輸出引腳,此信號(hào)需經(jīng)1K電阻上拉。配置過程中,出現(xiàn)低電平表明配置過程出現(xiàn)錯(cuò)誤,需重新配置。
表1 配置方案設(shè)置
nCONFIG為配置控制引腳。
DCLK為串行配置的時(shí)鐘輸入,用于鎖存外部數(shù)據(jù)。
CONF_DONE為配置狀態(tài)輸入輸出引腳,此信號(hào)需經(jīng)1K電阻上拉。配置過程中,10K電阻將此信號(hào)拉低,成功配置完畢后,芯片釋放端口,由上拉電阻將其電平抬高。
nCE為使能輸入引腳。
nCEO為使能輸出引腳。
Altera的可重復(fù)編程邏輯器件EPC2滿足了在系統(tǒng)編程的要求,具有Flash配置存儲(chǔ)器,可用來配置5.0V、3.3V、2.5V器件。通過內(nèi)置的IEEEStd 1149.1 JTAG接口,EPC2可以在5.0V和3.3V電壓下進(jìn)行在系統(tǒng)編程(ISP)。Altera公司的Quartus II和MAX+PLUS II軟件均支持配置器件的編程,設(shè)計(jì)中軟件自動(dòng)為每一個(gè)配置器件產(chǎn)生POF文件。
(1)JTAG模式:JTAG邊界掃描模式是采用JTAG接口方式對(duì)器件進(jìn)行在系統(tǒng)編程。標(biāo)準(zhǔn)的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時(shí)鐘、數(shù)據(jù)輸入和數(shù)據(jù)輸出線。相關(guān)JTAG引腳的定義為:TCK為測(cè)試時(shí)鐘輸入;TDI為測(cè)試數(shù)據(jù)輸入,數(shù)據(jù)通過TDI引腳輸入JTAG接口;TDO為測(cè)試數(shù)據(jù)輸出,數(shù)據(jù)通過TDO引腳從JTAG接口輸出。
(2)EPC2引腳
EPC2的nCS和OE引腳控制DATA輸出引腳的三態(tài)緩沖器、使能地址計(jì)數(shù)器和EPC2的振蕩器。nCS引腳控制配置器件的輸出。當(dāng)OE引腳接低電平時(shí),不論nCS為何狀態(tài),地址計(jì)數(shù)器復(fù)位,DATA引腳輸出為高阻狀態(tài)。當(dāng)OE引腳接高電平時(shí),如果nCS保持高電平,則計(jì)數(shù)器停止計(jì)數(shù),DATA引腳保持高阻狀態(tài):如果nCS為低電平,則計(jì)數(shù)器和DATA引腳正常工作。EPC2中的nINIT-CONF引腳與FPGA器件的nCONFIG引腳相連;EPC2的DATA引腳與FPGA器件的DATA0引腳相連。存儲(chǔ)在EPC2器件中的數(shù)據(jù)在其內(nèi)部時(shí)鐘的控制下順序輸出到DATA腳,然后在控制信號(hào)的控制下輸出到FPGA器件的DATA0引腳。
EPC2與FPGA連接電路圖1所示:
當(dāng)NCONFIG產(chǎn)生下降沿脈沖時(shí)啟動(dòng)配置過程。在DCLK出現(xiàn)上升沿時(shí),芯片將一位數(shù)據(jù)傳入內(nèi)部,直至所有數(shù)據(jù)都被移入。在配置過程中,系統(tǒng)需要實(shí)時(shí)監(jiān)測(cè),一旦出現(xiàn)錯(cuò)誤,NSTATUS被拉低,系統(tǒng)必須能識(shí)別這個(gè)信號(hào),并重新啟動(dòng)配置過程。配置數(shù)據(jù)全部正確地移入芯片內(nèi)部后,CONF_DONE信號(hào)跳變?yōu)楦撸撕?,DCLK必須再提供10個(gè)周期的時(shí)鐘,確保芯片被正確初始化,進(jìn)入用戶工作模式。圖2為單個(gè)EPC2器件配置EPF10K10LC的時(shí)序圖。
在編譯文件完成后,就需要下載文件,具體步驟如下:
(1)將要下載的文件置為頂層文件,然后點(diǎn)擊主菜單Assigndevice…,在彈出的窗口中選擇目標(biāo)芯片。在Device Family中選擇FLEX10K系列,在Device欄中選擇EPF10K10LC84-3;然后點(diǎn)擊Device Option。在彈出窗口中的Configuration EPROM欄中選擇EPC2LC20,單擊OK,回到Device畫面,單擊OK。
(2)執(zhí)行一次“compiler”(編譯)命令,產(chǎn)生新的*.pof文件。
(3)打開下載編譯器,選擇JTAG/Multi-DeviceJTAG Chain Setup。在彈出窗口中的Device Name和Programming File Name欄中分別選擇器件和該器件對(duì)應(yīng)的文件(1、EPF10K10對(duì)應(yīng)*.sof文件,2、EPC2對(duì)應(yīng)*.pof文件。注意應(yīng)先輸入EPC2所對(duì)應(yīng)的*.pof文件,再輸入EPF10K10對(duì)應(yīng)*.sof文件,輸入先后次序不能顛倒),選擇一項(xiàng)后,點(diǎn)擊“ADD”按鈕(應(yīng)注意不要點(diǎn)擊“change”按鈕),再選擇另一項(xiàng)。然后單擊“OK”按鈕即可。
(4)選定完成后,對(duì)該項(xiàng)目進(jìn)行編譯。
(5)分別對(duì)器件進(jìn)行編程,配置。
完成上述步驟后,就已將該文件配置到兩個(gè)目標(biāo)芯片中。當(dāng)?shù)綦姾螅绦驎?huì)保存到EPC2器件中,上電后,EPF10K10把程序從EPC2中讀入,從而實(shí)現(xiàn)了FPGA芯片中程序的掉電保持功能。
EPF10K10和專用配置芯片EPC2的電路連接較為簡(jiǎn)單,通過合理的下載配置電路能正確地將設(shè)計(jì)配置到FPGA器件中。該方法具有操作簡(jiǎn)單、系統(tǒng)穩(wěn)定性高的特點(diǎn)。
[1]Alter corporation.configuring FLEX10K Device.Application Note 59,December 1995;1.
[2]張小平,趙不賄.Altera新型FPGA器件的配置方式[J].微處理機(jī),2006,(4):93-95
[3]潘松,黃繼業(yè).EDA技術(shù)實(shí)用教程[M].北京:科學(xué)出版社,2002.
[4]王誠(chéng).Altera FPGA/CPLD設(shè)計(jì)(高級(jí)篇)[M].北京:人民郵電出版社,2005.