晏 勇
(1.阿壩師范高等專科學(xué)校 電子信息工程系, 四川 汶川 水磨 623002; 2.電子科技大學(xué) 信息與軟件工程學(xué)院, 四川 成都 610054)
信息社會(huì)高速發(fā)展離不開(kāi)集成電路,現(xiàn)代電子產(chǎn)品性能不斷提高,復(fù)雜程度不斷增大,價(jià)格不斷下降,這都依賴于EDA技術(shù)高速發(fā)展.產(chǎn)品是否便于現(xiàn)場(chǎng)升級(jí),是否便于靈活應(yīng)用,成為商家是否能夠快速占領(lǐng)市場(chǎng)的關(guān)鍵因素.FPGA/CPLD繼承了ASIC高集成、大規(guī)模、高可靠性的優(yōu)點(diǎn),又克服了普通ASIC周期長(zhǎng)、投資大、靈活性差的缺點(diǎn),已成為各類復(fù)雜電路的不錯(cuò)選擇.在這種環(huán)境下,ALTER公司開(kāi)發(fā)了基于查找表(LUT)和靜態(tài)隨機(jī)存儲(chǔ)器(SRAM)的現(xiàn)場(chǎng)可編程邏輯器件FPGA,并得到了廣泛應(yīng)用和肯定.
FPGA(Filed Programmable Gate Array,簡(jiǎn)稱FPGA)是一種高密度可編邏輯器件,基于數(shù)字邏輯門(mén)電路連接編程,生成網(wǎng)表文件配置進(jìn)入FPGA芯片內(nèi)部隨機(jī)靜態(tài)存儲(chǔ)器,實(shí)現(xiàn)各種復(fù)雜邏輯功能.由于FPGA基于SRAM,調(diào)電后芯片內(nèi)部數(shù)據(jù)全部丟失,每次系統(tǒng)上電時(shí)都需要重新配置,即ICR(In Circuit Reconfigurability),系統(tǒng)才正常工作,因此FPGA系統(tǒng)須接flash器件保存配置數(shù)據(jù).
從FPGA配置連接方式看,F(xiàn)PGA配置主要分為3類:一是通過(guò)下載線纜由計(jì)算機(jī)直接進(jìn)行配置,二是利用FPGA專用配置器件進(jìn)行配置,三是利用CPLD或MCU進(jìn)行配置.第一種配置方式調(diào)試方便,但系統(tǒng)調(diào)電后數(shù)據(jù)全部丟失,缺乏現(xiàn)場(chǎng)實(shí)用價(jià)值;第二種配置方式系統(tǒng)數(shù)據(jù)保密性不強(qiáng);第三種配置方式兼有第一種和第二種配置方式的優(yōu)點(diǎn).從FPGA在配置過(guò)程中所起的引導(dǎo)作用看,F(xiàn)PGA配置可以分為3類:FPGA主動(dòng)引導(dǎo)配置方式、FPGA被動(dòng)配置方式和JTAG方式.MCU與FPGA連接方式可分為配置數(shù)據(jù)并行傳輸?shù)目偩€連接方式和配置數(shù)據(jù)串行傳輸?shù)莫?dú)立連接方式.
本文提出了一種基于MCU與FPGA獨(dú)立連接和Flash上電FPGA配置方案.由MCU引導(dǎo)配置,PFGA被動(dòng)串行配置PS模式,基于MCU的PS配置模式繼承了MCU和FPGA的優(yōu)點(diǎn),實(shí)現(xiàn)了對(duì)Altera公司FPGA器件在線配置,通信可靠、配置過(guò)程穩(wěn)定、硬件接口靈活,在實(shí)際中得到了廣泛應(yīng)用.
Altera公司生產(chǎn)具有ICR功能的FPGA器件有APEX、ACEX、FLEX6000、FLEX10K、Cyclone、Stratix等系列.FPGA器件選用Altera公司具有代表性的Cyclone系列器件EP1C3T144C8,I/O供電電壓3.3 V,內(nèi)核和PLL電壓1.5 V,有源時(shí)鐘晶振50 MHz.器件內(nèi)部含等效門(mén)電路數(shù)50萬(wàn)邏輯門(mén)電路,4 000個(gè)LE,1個(gè)PLL,QFP108封裝.
嵌入式系統(tǒng)中,MCU能產(chǎn)生FPGA配置時(shí)序引導(dǎo)配置,由MCU控制將配置數(shù)據(jù)流通過(guò)E2PROM傳輸?shù)紽PGA中,每次上電后,F(xiàn)PGA配置數(shù)據(jù)從E2PROM讀取,EP1C3T144C8配置中通過(guò)MLES1和MLES0引腳設(shè)置配置方式,分別位于器件23和22腳,當(dāng)MLES1=0, MLES0=1,EP1C3T144C8采用被動(dòng)串行配置方式,MCU引導(dǎo)FPGA配置,F(xiàn)PGA處于被動(dòng).
在PS配置模式中,F(xiàn)PGA通過(guò)5個(gè)I/O口與MCU連接,這5個(gè)引腳分別是NCONFIG、DCLK0、DATA0、NSTATUS、CONF_DONE,分別位于EP1C3T144C8第14、24、13、87、86引腳.其中,NCONFIG配置控制輸出;DCLK0配置時(shí)鐘輸出端;DATA0配置數(shù)據(jù)輸出端;NSTATUS配置狀態(tài)輸出;CONF_DONE配置完成標(biāo)志位.器件配置期間,CONF_DONE輸出低電平,配置完成后自動(dòng)輸出高電平.MCU與NCONFIG、DCLK0、DATA0連接端口設(shè)置為輸出狀態(tài),與NSTATUS、CONF_DONE連接端口設(shè)置為輸入狀態(tài).
嵌入式系統(tǒng)中FPGA Cyclone EP1C3T144C8被動(dòng)串行配置模式PS模式的配置流程如圖1所示.微處理器啟動(dòng)引導(dǎo)FPGA配置時(shí),首先由微處理器與FPGA NCONFIG引腳相連的IO上發(fā)出一個(gè)大于8 uS的低脈沖,當(dāng)FPGA NCONFIG引腳收到由MCU來(lái)的低電平后,立即將NSTATUS和CONF_DONE引腳電平拉低,其中NSTATUS為配置狀態(tài)輸出,CONF_DONE為配置完成標(biāo)志位,MCU收到NSTATUS引腳低電平后,NCONFIG引腳和NSTATUS引腳同時(shí)為低電平,當(dāng)MCU控制NCONFIG引腳跳變?yōu)楦唠娖? uS后,F(xiàn)PGA NSTATUS變?yōu)楦唠娖?,F(xiàn)PGA進(jìn)入配置狀態(tài),1 uS后MCU發(fā)送同步時(shí)鐘和配置數(shù)據(jù)信號(hào)啟動(dòng)FPGA配置,由DATA0在時(shí)鐘DCLK0的引導(dǎo)下串行傳輸數(shù)據(jù),配置期間CONF_DONE一直為低電平,F(xiàn)PGA配置完成后CONF_DONE變成高電平,如配置過(guò)程中數(shù)據(jù)傳輸出錯(cuò)或配置失敗,NSTATUS會(huì)自動(dòng)拉低重啟配置,器件配置完成后由FPGA引導(dǎo)各種應(yīng)用功能.
圖1 MCU配置FPGA流程圖
Altera公司Cyclone FPGA配置可分為4個(gè)過(guò)程:(1)Vcc上電階段,Vcc上電爬升到穩(wěn)定過(guò)程;(2)配置準(zhǔn)備階段,NSTATUS和CONF_DONE拉低;(3)配置階段,F(xiàn)PGA完成配置后CONF_DONE輸出高電平,系統(tǒng)初始化;(4)用戶模式階段,由FPGA引導(dǎo)系統(tǒng)工作.FPGA工作狀態(tài)分為3種,即:用戶狀態(tài),F(xiàn)PGA引腳輸出高低電平;配置狀態(tài)和初始化狀態(tài),F(xiàn)PGA引腳呈高阻狀態(tài).
FPGA配置存儲(chǔ)器選擇Microchip基于CMOS工藝, 串行通E2PROM儲(chǔ)存器24C128,存儲(chǔ)器組織結(jié)構(gòu)128K×8 Bit,最大容量128 Kbits,SOP8封裝,供電范圍4.5~5.5 V,讀寫(xiě)數(shù)據(jù)最高時(shí)鐘頻率400 KHz,寫(xiě)數(shù)據(jù)最大電流3 mA,讀數(shù)據(jù)最大電流400 uA,24C128封裝引腳如圖2所示.
圖2 24C128封裝及引腳圖
A0、A1、A2:器件選擇地址輸入引腳,最多允許外接8個(gè)存儲(chǔ)器,不用時(shí)允許接地;
Vss:器件接地端;
SDA:I2C串行數(shù)據(jù)地址輸入輸出引腳,漏極開(kāi)路門(mén)需接10 K上拉電阻;
SCL:串行時(shí)鐘輸入引腳,同步數(shù)據(jù)傳輸,上升沿寫(xiě)數(shù)據(jù),下降沿讀數(shù)據(jù);
WP:讀寫(xiě)保護(hù)引腳,WP=0數(shù)據(jù)正常讀寫(xiě),WP=1數(shù)據(jù)寫(xiě)保護(hù),只讀不寫(xiě);
Vcc:供電引腳,范圍4.5~5.5 V.
所有串行E2PROM控制位數(shù)據(jù)前4位都為1010,A0、A1、A2為24C128器件獨(dú)有地址,R/W器件讀寫(xiě)數(shù)據(jù)控制信號(hào),1讀數(shù)據(jù),0寫(xiě)數(shù)據(jù),控制數(shù)據(jù)格式如圖3所示.對(duì)24C128操作,先向24C128寫(xiě)入控制字,再讀寫(xiě)數(shù)據(jù),數(shù)據(jù)通信嚴(yán)格按照I2C時(shí)序進(jìn)行.
圖3 24C128控制位數(shù)據(jù)格式
MCU選擇Atmel公司低電壓、高性能CMOS 8位單片機(jī)AT89C2051,DIP20封裝,片內(nèi)含2 k bytes只讀Flash程序存儲(chǔ)器和128 bytes隨機(jī)存取數(shù)據(jù)存儲(chǔ)器RAM,兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),內(nèi)置通用8位中央處理器,15個(gè)雙向輸入/輸出I/O,兩個(gè)外中斷口,兩個(gè)16位可編程定時(shí)計(jì)數(shù)器.I2C模式與24C128E2PROM通信,串口模式與FPGA通信,串口采用方式0移位寄存器方式,TXD/P3.1同步通信脈沖,RXD/P3.0同步通行數(shù)據(jù),配置數(shù)據(jù)存儲(chǔ)在E2PROM中,單片機(jī)發(fā)送控制信號(hào)從24C128中提取PFGA配置數(shù)據(jù),完成引導(dǎo)FPGA配置,配置系統(tǒng)原理如圖4所示.
AT89C2051在線編程ISP為74HC373并口下載電路,下載線軟件用Easy 51Pro v2.0,并口下載電路下載速度快,過(guò)程穩(wěn)定可靠,電路簡(jiǎn)單,在實(shí)際工程中使用廣泛.
圖4 配置系統(tǒng)原理圖
Altera Quartus II FPGA開(kāi)發(fā)平臺(tái)對(duì)不同器件有不同的配置文件,配置文件大小和數(shù)據(jù)格式也不同,JTAG模式對(duì)應(yīng)配置文件.sof,AS模式對(duì)應(yīng)配置文件.pof,單片機(jī)配置FPGA兩種文件.rbf二進(jìn)制文件和.ttf十六進(jìn)制文件, Quartus II不自動(dòng)產(chǎn)生.ttf文件,具體方法如下:
(1)選擇Assignements菜單Setings 下Device;(2)單擊Device & Pin Option;(3)Programming Files下Tabular Text file(.ttf)欄打勾;(4)重新編譯工程得到.ttf文件.單片機(jī)配置FPGA就是將.ttf文件內(nèi)容按照FPGA配置時(shí)序發(fā)送到FPGA的SRAM內(nèi),.ttf文件用記事本方法打開(kāi),將.ttf里配置數(shù)據(jù)采存儲(chǔ)在E2PROM內(nèi),通過(guò)開(kāi)辟數(shù)組存儲(chǔ)的方法,由單片機(jī)發(fā)送到FPGA,完成FPGA配置.
Altera FPGA在線配置,實(shí)際就是將FPGA配置文件轉(zhuǎn)換為51.HEX文件寫(xiě)入單片機(jī),模擬FPGA配置時(shí)序?qū)⑴渲梦募?xiě)入FPGA,C51完成FPGA配置,F(xiàn)PGA用VHDL或Verilog HDL,完成整個(gè)應(yīng)用系統(tǒng),具體配置程序如下.
#include "reg51.h"
#include "intrins.h"
sbit NSTATUS=P1^3;
sbit CONF_DONE=P1^4;
sbit DCLK0=P1^5;
sbit NCONFIG=P1^6;
sbit DATA0=P1^7;
unsigned char config[ ]={};//放置FPGA配置文件 .ttf內(nèi)容
void main(void)
{
unsigned char dat,t,k;
NCONFIG=1;//初始化
NSTATUS=1;
CONF_DONE=0;
DCLK0=0;
while(CONF_DONE==0);// CONF_DONE為高,配置結(jié)束
{
for(t=0;t<20;t++); //NCONFIG引腳發(fā)送一個(gè)大于8 uS低脈沖
NCONFIG=0;
_nop()_;_nop()_;_nop()_;_nop()_;//等待FPGA接收信號(hào)
for(k=0;k<300;k++)//FPGA接收到NCONFIG信號(hào), NCONFIG,NSTATUS同時(shí)為低
NSTATUS=0;
NCONFIG=1;
_nop()_;_nop()_;_nop()_;_nop()_;//NCONFIG引腳跳變?yōu)楦唠娖胶? uS后,NSTATUS為高
while(NSTATUS==1);// NSTATUS為高,啟動(dòng)配置
{
for(k=0;k { dat=config[k]; for(t=0;t<8;t++)//配置文件左移,串行送入FPGA { DCLK=0; if(DATA0) DATA0=DATA0|0x01; DCLK=1; dat=dat>>1; DCLK=0; } } } } while(1); } 當(dāng)今嵌入式系統(tǒng)已應(yīng)用到各個(gè)領(lǐng)域,有必要在成本和體積上進(jìn)行優(yōu)化,降低成本.通過(guò)AT89C2051單片機(jī)模擬FPGA配置時(shí)序引導(dǎo)配置FPGA,實(shí)踐證明配置電路設(shè)計(jì)完全正確、可行,每次系統(tǒng)上電都能準(zhǔn)確、快速完成配置,保證系統(tǒng)保密性和穩(wěn)定性.Altera公司FPGA器件配置數(shù)據(jù)時(shí)鐘有所不同,但單片機(jī)配置程序稍加修改即可完成FPGA配置,單片機(jī)配置FPGA電路簡(jiǎn)單、靈活,已廣泛應(yīng)用于各種FPGA應(yīng)用系統(tǒng). [1] 王靈芝,林培杰,黃春暉.FPGA的配置及其接口電路[J].電子測(cè)量與儀器學(xué)報(bào),2007,21(2):109-112. [2] 繆云青,李永剛.FPGA器件在嵌入式系統(tǒng)中的配置方式的探討[J].微計(jì)算機(jī)信息,2006,22(11):161-162. [3] 張 玄,李開(kāi)航.利用CPLD實(shí)現(xiàn)FPGA的快速加載[J].現(xiàn)代電子技術(shù),2012,35(22):163-170. [4] 郭利文,鄧月明.CPLD/FPGA設(shè)計(jì)與應(yīng)用高級(jí)教程[M].北京:北京航空航天大學(xué)出版社,2011:56-88. [5] 游志宇,張 洪,董秀成,等.MCS-51與FPGA/CPLD總線接口邏輯設(shè)計(jì)[J].單片機(jī)與嵌入式系統(tǒng)應(yīng)用,2008,23(1):29-31. [6] 馬英矯,馬瑛蓬,徐 亮.一種共享存儲(chǔ)器的FPGA配置電路設(shè)計(jì)[J].中北大學(xué)學(xué)報(bào)(自然科學(xué)版),2012,33(3):272-287. [7] 薛 昀,李宗艷,張德安.基于單片機(jī)的FPGA被動(dòng)串行配置方式[J].桂林電子工業(yè)學(xué)院學(xué)報(bào),2005,25(3):29-33. [8] 李廣彪.基于單片機(jī)的FPGA并行配置方法[J].電子技術(shù)應(yīng)用,2005,31(1):72-74. [9] 孫進(jìn)平,王 俊,李 偉,等.DSP/FPGA嵌入式實(shí)時(shí)處理技術(shù)及應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2011:223-245. [10] 包 明.EDA技術(shù)與可編程器件的應(yīng)用[M].北京:北京航空航天大學(xué)出版社,2007:173-220. [11] 周立功.EDA實(shí)驗(yàn)與實(shí)踐[M].北京:北京航空航天大學(xué)出版社,2007:88-110. [12] 潘 松,黃繼業(yè).EDA技術(shù)實(shí)用教程第四版[M].北京:科學(xué)出版社,2010:60-80. [13] 潘 松,黃繼業(yè).EDA技術(shù)實(shí)用教程第三版[M].北京:科學(xué)出版社,2006:72-90. [14] 徐志軍.EDA技術(shù)實(shí)用教程第三版[M].北京:電子工業(yè)出版社,2009:92-110. [15] 李朝青.嵌入式系統(tǒng)原理與接口技術(shù)[M].北京:北京航空航天大學(xué)出版社,2005. [16] 張洪潤(rùn),張亞凡. FPGA/CPLD應(yīng)用設(shè)計(jì)200例[M].北京:北京航空航天大學(xué)出版社,2009:80-112.3 結(jié)論