<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > EDA/PCB > 設計應用 > 大容量串行e-Flash的FPGA配置方案

大容量串行e-Flash的FPGA配置方案

作者: 時(shí)間:2006-05-09 來(lái)源:網(wǎng)絡(luò ) 收藏
引 言
現場(chǎng)可編程門(mén)陣列(Field Programmable Gate Array)是一種集通用性強、設計靈活、集成度高和編程方便等諸多優(yōu)點(diǎn)于一身的現場(chǎng)可編程ASIC。自1985年美國的Xilinx公司推出產(chǎn)品并取得成功以后,發(fā)展迅猛,門(mén)數不斷提升,達到數百萬(wàn)門(mén)的規模;產(chǎn)品種類(lèi)日益豐富,性能不斷完善,在軍事、通信、醫療、消費類(lèi)電子等各領(lǐng)域發(fā)揮了巨大的作用。
Xilinx公司的FPGA具有很高的性?xún)r(jià)比,其集成開(kāi)發(fā)環(huán)境ISE和Webpack效率高、界面友好,因此在業(yè)界有著(zhù)廣泛的應用。通常對Xilinx公司的FPGA配置采用專(zhuān)用的配置芯片,速度較快,其價(jià)格也正逐步降低。筆者為配合某電力測量?jì)x表的開(kāi)發(fā),對Xilinx公司的SpartanII系列FPGA的配置方案進(jìn)行了探索,總結出一套成本低廉、接口簡(jiǎn)單、便于移植的方法。該方法采用Megawin公司的1Mb存儲器MM36SB010存放FPGA配置文件,通過(guò)MCU在被動(dòng)模式下完成了對XC2S30的在線(xiàn)配置。

1 Spartanll配置簡(jiǎn)介
Xilinx公司的SpartanII系列FPGA產(chǎn)品成熟。該系列是采用0.18 μ m工藝的2.5V低電壓FPGA芯片,功耗低,可無(wú)限次編程。XC2S30是該系列FPGA中的一款,總門(mén)數達3萬(wàn)門(mén),可以實(shí)現電力測量?jì)x表中采樣數據的編碼和多CPU間的數據交換的功能。
XC2S30采用CMOS SRAM工藝。由于SRAM的易失性,斷電后配置信息消失,因此上電時(shí)必須對該芯片重新配置才能使其正常工作。本節將詳細介紹XC2S30的配置方式。該配置方式對SpartanlI系列的其它FPGA同樣適用。
1.1 配置模式
XC2S30支持4種配置模式:被動(dòng)串行模式(slave serialmode)、主動(dòng)串行模式(master serial mode)、被動(dòng)并行模式(slave parallel mode)和邊界掃描模式(boundary-scanmode)。在每次芯片上電初始化完畢后,芯片將采樣模式引腳M[2:0]以決定配置模式。配置引腳狀態(tài)和配置模式的關(guān)系如表1所列。(X代表任意狀態(tài)。)



根據不同的應用場(chǎng)合,用戶(hù)可以選擇不同的配置方式。在XC2S30內部邏輯設計階段,可采用邊界掃描模式進(jìn)行配置。配置文件可通過(guò)Xilinx公司的下載電纜(如Xilinx并行下載電纜)下載到芯片,便于在線(xiàn)調試。但是在產(chǎn)品成品階段,已經(jīng)設計好的配置文件必須存儲于EEPROM或者Flash等非易失的存儲器中。在系統上電時(shí),外圍器件通過(guò)FPGA配置引腳將配置文件傳送至FPGA中,從而使其正常工作。根據用戶(hù)的需要,可以選擇主動(dòng)串行模式、被動(dòng)串行模式和被動(dòng)并行模式。其中串行的兩種模式需要的I/O口資源較少,但速度較慢;被動(dòng)并行模式需要的I/O口資源較多,速度也較快。根據本系統的設計要求,選擇了占用I/0口資源較少的被動(dòng)串行模式對XC2$30進(jìn)行配置。
1.2 被動(dòng)串行模式下的配置引腳
在被動(dòng)串行模式下,所用到的配置引腳為模式選擇M[2:0]、配置時(shí)鐘CCLK、配置復位PROGRAM、配置完成DONE、配置數據串行輸入DIN和初始化狀態(tài)INIT。
1.3 被動(dòng)串行模式下的配置步驟及時(shí)序
XC2S30上電后,當內核和I/O口電源引腳電壓達到高電平或者用戶(hù)將PROGRAM引腳置低時(shí),芯片便進(jìn)入初始化狀態(tài)。此后芯片將INIT引腳置低,代表芯片正在清空配置存儲器,清空完成后INIT引腳將被置高,代表清空完畢。在INIT的上升沿,模式選擇引腳M[2:0]被采樣,以決定配置模式,若為11x則采用被動(dòng)串行模式。此后配置文件信息可以通過(guò)CCLK和DIN兩個(gè)配置引腳輸入至XC2S30中。配置數據在CCLK的上升沿采樣。在配置期間芯片會(huì )自動(dòng)進(jìn)行CRC錯誤檢驗。若發(fā)生了CRC校驗錯誤,INIT引腳將被置低,用戶(hù)可以檢測該引腳判斷配置過(guò)程中是否出現錯誤。當配置文件成功輸入至芯片中,芯片置DONE引腳為高,用戶(hù)可檢測該引腳判斷配置是否成功。此后芯片進(jìn)入正常工作狀態(tài)。配置流程如圖1所示。




2 MM36SB010的讀寫(xiě)方式
MM36SB010是Megawin公司生產(chǎn)的SPI串行e-F1ash存儲器。該芯片具有低功耗(小于4mA)、寬電壓(2.4~5.5V)、高速(8MHz工作頻率)、(1Mb)和小頁(yè)面(每頁(yè)128B)、低成本等諸多優(yōu)點(diǎn),特別適合于消費電子、通信、工業(yè)控制等領(lǐng)域的應用。該芯片可工作在2線(xiàn)或者3線(xiàn)串行總線(xiàn)方式。本方案使用該芯片存儲FPGA配置文件,讀寫(xiě)接口簡(jiǎn)單,速度快。
MM36SB010的容量為1Mb,共分1024頁(yè),每頁(yè)128B。芯片內部有1個(gè)128B的緩沖區,可以對讀寫(xiě)數據進(jìn)行暫存,內部結構如圖2所示。



MM36SB010可工作在2線(xiàn)或者3線(xiàn)串行總線(xiàn)方式,工作方式通過(guò)SMC(串行模式控制)引腳來(lái)選擇。當SMC為高電平時(shí),為2線(xiàn)方式;當SMC為低電平時(shí),為3線(xiàn)方式。本方案采用3線(xiàn)方式,串行數據輸入和輸出引腳分開(kāi),數據輸入引腳為SDl0,數據輸出引腳為SDO。MM36SB010的狀態(tài)可通過(guò)引腳BUSY來(lái)檢測,也可以通過(guò)訪(fǎng)問(wèn)狀態(tài)寄存器進(jìn)行查詢(xún)。3線(xiàn)工作方式的電路示意如圖3所示。


MCU可通過(guò)SCLK和SDIO引腳向MM36SB010發(fā)送控制命令,實(shí)現MM36SB010的軟件復位、Flash存儲器或緩沖區數據的讀寫(xiě)和狀態(tài)查詢(xún)等功能。常用的命令有軟件復位(SRC)、讀狀態(tài)寄存器(RSE)、讀F1ash存儲器數據(RME、RMEC)、寫(xiě)緩沖區(WEB、WEBC)、帶預擦除功能的寫(xiě)緩沖區數據至Flash存儲器(WBMEP)。所有的命令、地址和數據都從最低位(LSB)開(kāi)始發(fā)送。
在MM36SB010上電后需執行一次軟件復位指令,等待20ms后芯片即可正常工作。數據可從Flash存儲器中用RME和RMEC:指令直接讀取,但寫(xiě)數據至Flash存儲器前必須用WEB和WEBC命令將數據送入緩沖區內,再用WBMEP或者WBMP命令將緩沖區內的數據送入Flash存儲器。
雖然MM36SB010的時(shí)鐘SCLK的頻率最高可達8MHz,但是由于每次從Flash讀寫(xiě)一個(gè)字節數據前必須先送入控制命令,因此實(shí)際的讀寫(xiě)速度小于4MHz。

3 配置方案
Xilinx公司針對各款FPGA都設計了專(zhuān)用的配置芯片,如在系統可編程18VXX系列和串行一次性可編程PROM-XCl7V00系列。目前18Vxx系列價(jià)格正逐步降低,但是由于其專(zhuān)用性,該ROM很難被系統中其它部分共享;XCl7V00系列雖然價(jià)格較低,但只能一次性燒寫(xiě),只適用于成品階段。本方案中XC2S30的配置文件存儲于MM36SB010,并由MCU完成其讀寫(xiě)功能,配置文件通過(guò)RS232串口下載。當配置文件下載完畢后,由MCU從MM36SB010中讀取并對XC2S30進(jìn)行配置。MM36SB010中其余存儲空間可供其它程序模塊使用。
3.1 硬件框圖
MCU通過(guò)SCLK、SDIO、SDO完成對MM36SB010的讀寫(xiě),同時(shí)MCU通過(guò)CCLK、DIN、INIT、PROGRAM、DONE引腳完成對XC2S30的配置。硬件框圖如圖4所示。

 


3.2 MCU程序
本方案的MCU內部程序主要完成三部分功能:與PC機的串口通信、讀寫(xiě)MM36SB010和配置XC2S30。MCU工作在兩種狀態(tài),在上電時(shí)MCU從MM36SB010中讀取配置文件并對XC2S30進(jìn)行配置,完成配置后等待PC機從串口發(fā)出的下載命令。接收到該命令后,MCU開(kāi)始接收配置文件并寫(xiě)入MM36SB010。程序流程如圖5所示。



對XC2S30配置的程序部分主要完成被動(dòng)串行模式的配置時(shí)序,配置時(shí)序如圖6所示。



配置部分程序代碼如下:
//函數定義
//從中讀取配置文件數據void ReadFlashData(unsigned int p_addr,unsigned char b_addr,unsigned char count,unsigned char*buf)
//p_addr為頁(yè)地址,b_addr為頁(yè)內地址,buf為MCU內部存儲 //器指針{
unsigned int i,temp=0:
send_one_byte(0x9C); //送RME指令
send_one byte(b_addr); //送頁(yè)內地址
send_one_byte((unsigned char)(P_addr 0x00FF)); //送頁(yè)低字節地址
send_one_byte((unsigned char)p_addr0xFF00)); //送頁(yè)高字節地址
buf[0]=read one byte(); //讀取數據
for(i=1;icount;i++){ //連續讀取數據
send_one_byte(RMEC); //送RMEC指令
buf[i]=read_one_byte();
}
}
//向SpartanlI發(fā)送配置數據
void SendConfigData(unsigned char count,unsigned char*configdata)
{
unsigned chari,j,temp;
CCLK=0;
for(i=count;i>0;i--){
temp=*configdata++;
for(j=0;j8;j++){
if((temp0x80)==0
DIN=O;
else
DIN=1:
tem0=temp1;
}
CCLK=I;
CCLK=0;
}
} //主程序……
…… //程序初始化部分
length=FILESIZE; //配置文件長(cháng)度
INIT=1;
PROGRAM=0; //清空配置存儲器
Delay(); //延時(shí)
PROGRAM=1;
while(INIT==0); //等待存儲器清空
while(1){
ReadFlashData(page_addr,bit_addr,128,databuf);
//從MM36SB010中讀取128字節配置文件數據
SendConfigData(128,databuf); //發(fā)送配置文件數據至XC2S30
length-=128;
if(1ength128)
break;
}
void ReadFlashData(page_addr,bit_addr,length,databuf);
SendConfigData(Iength,databu);
if(DONE==1)…… //配置成功
else…… //配置失敗

結語(yǔ)
本方案提出了一種基于大容量串行的XilinxSpartanlI系列FPGA在線(xiàn)配置的方法。該方案適用于采用MCU的嵌入式系統中,占用MCU的I/O口資源少,且可以實(shí)現ROM的共享。MCU程序采用C語(yǔ)言編寫(xiě),便于在單片機、ARM等MCU間的移植。經(jīng)過(guò)實(shí)際測試,配置XC2S30僅需數秒,可以應用在對設備開(kāi)機時(shí)間要求不高的場(chǎng)合。本方案已經(jīng)應用在某電力測量設備中,效果理想,運行可靠。



關(guān)鍵詞: e-Flash FPGA 大容量 串行

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>