王新勇孫瑞利張利
(河南科技大學電子信息工程學院,河南洛陽471003)
FPGA(Field-Programmable Gate Array),即現場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎上進一步發(fā)展的產物。FPGA采用CMOS SRAM制造工藝,使用SRAM來存儲編程數據,具有系統(tǒng)可編程特性。當掉電后,FPGA恢復成白片,內部邏輯關系消失,因此,FPGA能夠反復使用。當需要修改FPGA功能時,只需換一片EPROM即可。這樣,同一片FPGA,不同的編程數據,可以產生不同的電路功能。因此,FPGA的使用非常靈活。但使用FPGA時,每次上電之后都需要再重新下載程序,無疑是非常不方便的。因此在使用時需要對FPGA進行配置,即在每次系統(tǒng)上電時,必須用配置芯片對其進行配置,只有在配置正確的情況下,系統(tǒng)才能正常工作。配置數據可存儲于片外的EPROM或其它的存儲體上。本文所使用的FPGA芯片EPF10K10是Altera公司FLEX10K系列產品之一,包括可用邏輯門1萬~25萬,RAM 6114~4096位,512個宏單元,具有高密度、高速度的特點。配置芯片是Altera公司的可擦除芯片EPC2LC20,內部有1,695,680位。
FPGA的配置方式有以下幾種:
(1)EPC1配置該方法是使用Altera公司提供的專用EPC1 EPROM對器件進行配置,EPC1 EPROM存儲配置數據,并產生同步時鐘信號和控制信號,但該EPROM只能燒寫一次,適用于產品定型后使用。
(2)被動串行配置方式PS(Passive Serial)
(3)被動并行同步配置PPS(Passive Parallel Synchronous)
(4)被動并行異步配置PSA
FPGA中有一些特殊管腳在配置過程中使用。
MSEL0、MSEL1為輸入配置方式選擇引腳,表1說明在二者選取不同值時的配置方式。
在本次設計中選擇MSEL0、,MSEL1均為低電平。
nSTATUS為配置狀態(tài)監(jiān)測輸出引腳,此信號需經1K電阻上拉。配置過程中,出現低電平表明配置過程出現錯誤,需重新配置。

表1 配置方案設置
nCONFIG為配置控制引腳。
DCLK為串行配置的時鐘輸入,用于鎖存外部數據。
CONF_DONE為配置狀態(tài)輸入輸出引腳,此信號需經1K電阻上拉。配置過程中,10K電阻將此信號拉低,成功配置完畢后,芯片釋放端口,由上拉電阻將其電平抬高。
nCE為使能輸入引腳。
nCEO為使能輸出引腳。
Altera的可重復編程邏輯器件EPC2滿足了在系統(tǒng)編程的要求,具有Flash配置存儲器,可用來配置5.0V、3.3V、2.5V器件。通過內置的IEEEStd 1149.1 JTAG接口,EPC2可以在5.0V和3.3V電壓下進行在系統(tǒng)編程(ISP)。Altera公司的Quartus II和MAX+PLUS II軟件均支持配置器件的編程,設計中軟件自動為每一個配置器件產生POF文件。
(1)JTAG模式:JTAG邊界掃描模式是采用JTAG接口方式對器件進行在系統(tǒng)編程。標準的JTAG接口是4線:TMS、TCK、TDI、TDO,分別為模式選擇、時鐘、數據輸入和數據輸出線。相關JTAG引腳的定義為:TCK為測試時鐘輸入;TDI為測試數據輸入,數據通過TDI引腳輸入JTAG接口;TDO為測試數據輸出,數據通過TDO引腳從JTAG接口輸出。
(2)EPC2引腳
EPC2的nCS和OE引腳控制DATA輸出引腳的三態(tài)緩沖器、使能地址計數器和EPC2的振蕩器。nCS引腳控制配置器件的輸出。當OE引腳接低電平時,不論nCS為何狀態(tài),地址計數器復位,DATA引腳輸出為高阻狀態(tài)。當OE引腳接高電平時,如果nCS保持高電平,則計數器停止計數,DATA引腳保持高阻狀態(tài):如果nCS為低電平,則計數器和DATA引腳正常工作。EPC2中的nINIT-CONF引腳與FPGA器件的nCONFIG引腳相連;EPC2的DATA引腳與FPGA器件的DATA0引腳相連。存儲在EPC2器件中的數據在其內部時鐘的控制下順序輸出到DATA腳,然后在控制信號的控制下輸出到FPGA器件的DATA0引腳。
EPC2與FPGA連接電路圖1所示:

當NCONFIG產生下降沿脈沖時啟動配置過程。在DCLK出現上升沿時,芯片將一位數據傳入內部,直至所有數據都被移入。在配置過程中,系統(tǒng)需要實時監(jiān)測,一旦出現錯誤,NSTATUS被拉低,系統(tǒng)必須能識別這個信號,并重新啟動配置過程。配置數據全部正確地移入芯片內部后,CONF_DONE信號跳變?yōu)楦撸撕螅珼CLK必須再提供10個周期的時鐘,確保芯片被正確初始化,進入用戶工作模式。圖2為單個EPC2器件配置EPF10K10LC的時序圖。
在編譯文件完成后,就需要下載文件,具體步驟如下:
(1)將要下載的文件置為頂層文件,然后點擊主菜單Assigndevice…,在彈出的窗口中選擇目標芯片。在Device Family中選擇FLEX10K系列,在Device欄中選擇EPF10K10LC84-3;然后點擊Device Option。在彈出窗口中的Configuration EPROM欄中選擇EPC2LC20,單擊OK,回到Device畫面,單擊OK。
(2)執(zhí)行一次“compiler”(編譯)命令,產生新的*.pof文件。
(3)打開下載編譯器,選擇JTAG/Multi-DeviceJTAG Chain Setup。在彈出窗口中的Device Name和Programming File Name欄中分別選擇器件和該器件對應的文件(1、EPF10K10對應*.sof文件,2、EPC2對應*.pof文件。注意應先輸入EPC2所對應的*.pof文件,再輸入EPF10K10對應*.sof文件,輸入先后次序不能顛倒),選擇一項后,點擊“ADD”按鈕(應注意不要點擊“change”按鈕),再選擇另一項。然后單擊“OK”按鈕即可。
(4)選定完成后,對該項目進行編譯。
(5)分別對器件進行編程,配置。
完成上述步驟后,就已將該文件配置到兩個目標芯片中。當掉電后,程序會保存到EPC2器件中,上電后,EPF10K10把程序從EPC2中讀入,從而實現了FPGA芯片中程序的掉電保持功能。

EPF10K10和專用配置芯片EPC2的電路連接較為簡單,通過合理的下載配置電路能正確地將設計配置到FPGA器件中。該方法具有操作簡單、系統(tǒng)穩(wěn)定性高的特點。
[1]Alter corporation.configuring FLEX10K Device.Application Note 59,December 1995;1.
[2]張小平,趙不賄.Altera新型FPGA器件的配置方式[J].微處理機,2006,(4):93-95
[3]潘松,黃繼業(yè).EDA技術實用教程[M].北京:科學出版社,2002.
[4]王誠.Altera FPGA/CPLD設計(高級篇)[M].北京:人民郵電出版社,2005.