基于FPGA的高速大容量FLASH存儲設(shè)備設(shè)計(jì)
1、
用數(shù)字信號完成對數(shù)字量進(jìn)行算術(shù)運(yùn)算和邏輯運(yùn)算的電路稱為數(shù)字電路,或數(shù)字系統(tǒng)。由于它具有邏輯運(yùn)算和邏輯處理功能,所以又稱數(shù)字邏輯電路?,F(xiàn)代的數(shù)字電路由半導(dǎo)體工藝制成的若干數(shù)字集成器件構(gòu)造而成。邏輯門是數(shù)字邏輯電路的基本單元。存儲器是用來存儲二值數(shù)據(jù)的數(shù)字電路。數(shù)字電路與數(shù)字電子技術(shù)廣泛的應(yīng)用于電視、雷達(dá)、通信、電子計(jì)算機(jī)、自動控制、航天等科學(xué)技術(shù)各個(gè)領(lǐng)域。在我國20世紀(jì)90年代以前,測試系統(tǒng)采用磁帶記錄,效率和安全保障性不高;隨之出現(xiàn)的是遙測技術(shù),但在傳輸數(shù)據(jù)的過程中會出現(xiàn)誤差;接著是靜態(tài)存儲器,它讀、寫方便,但是存儲的數(shù)據(jù)會因?yàn)閿嚯姸鴣G失,所以,不利于數(shù)據(jù)長時(shí)間保存;目前,閃存的問世,NOR和NAND是現(xiàn)在市場上兩種主要的非易失閃存技術(shù),它有存儲容量大、體積小、可靠性高等優(yōu)點(diǎn),測試系統(tǒng)會逐步向這個(gè)方向發(fā)展。
2、設(shè)計(jì)思想
2.1核心芯片選擇
(1)接受芯片選擇MAX491
此芯片為RS-422/485擴(kuò)展芯片,為DIP14封裝。MAX491有兩個(gè)控制端,如果兩個(gè)控制端由微處理器的一個(gè)I/O口控制,則總線,兩線制,半雙工工作。如果兩個(gè)控制端單獨(dú)控制,則總線為RS-422總線,四線制,全雙工工作。MAX491采用+5V電源供電,當(dāng)供電電流僅有500uA時(shí),傳輸速率卻能達(dá)到2.5Mbits/s.它的內(nèi)部有一個(gè)傳輸線驅(qū)動器和一個(gè)傳輸線接收器,因此可以采用全雙工工作。
(2)FPGA采用Spartan-II系列Xc2s100
FPGA(Field-ProgrammableGateArray),即現(xiàn)場可編程門陣列,它是在PAL、GAL、CPLD等可編程器件的基礎(chǔ)上進(jìn)一步發(fā)展的產(chǎn)物。它是作為專用集成電路(ASIC)領(lǐng)域中的一種半定制電路而出現(xiàn)的,既解決了定制電路的不足,又克服了原有可編程器件門電路數(shù)有限的缺點(diǎn)。
Spartan-II系列Xc2s100有著豐富的觸發(fā)器和LUT(Look-Up-Table),非常適合復(fù)雜時(shí)序邏輯的設(shè)計(jì)。FLASH采用SAMSUNG公司的NANDFLASH芯片K9F8G08,接口寬度8位。每個(gè)芯片含8192個(gè)數(shù)據(jù)塊,一個(gè)塊分為64頁,每頁大小為(2K+64)Bytes,其中64Bytes為空閑區(qū),存儲容量為8Gbit.它以頁為單位進(jìn)行讀寫,以塊為單位擦除、命令、數(shù)據(jù)、地址共用同一總線,具有硬件數(shù)據(jù)保護(hù)功能。
2.2MAX491設(shè)計(jì)時(shí)需要注意的問題
(1)RS-422傳輸線上匹配的一些說明:理論上,在每個(gè)接收數(shù)據(jù)信號的中點(diǎn)進(jìn)行采樣時(shí),只要反射信號在開始采樣時(shí)衰減到足夠低就可以不考慮匹配。但這在實(shí)際上難以掌握,美國MAXIM公司有篇文章提到一條經(jīng)驗(yàn)性的原則可以用來判斷在什么樣的數(shù)據(jù)速率和電纜長度時(shí)需要進(jìn)行匹配:當(dāng)信號的轉(zhuǎn)換時(shí)間(上升或下降時(shí)間)超過電信號沿總線單向傳輸所需時(shí)間的3倍以上時(shí)就可以不加匹配。
一般終端匹配采用終接電阻方法,RS-422在總線電纜的遠(yuǎn)端并接電阻,終接電阻一般在RS-422網(wǎng)絡(luò)中取100Ω,這種匹配方法簡單有效,但有一個(gè)缺點(diǎn),匹配電阻要消耗較大功率,對于功耗限制比較嚴(yán)格的系統(tǒng)不太適合;
另外一種比較省電的匹配方式是RC匹配;
還有一種采用二極管的匹配方法。
(2)RS-422的接地問題
RS-422四線接口由于采用單獨(dú)的發(fā)送和接收通道,因此不必控制數(shù)據(jù)方向,各裝置之間任何必須的信號交換均可以按軟件方式(XON/XOFF握手)或硬件方式(一對單獨(dú)的雙絞線)。RS-422的最大傳輸距離為4000英尺(約1219米),最大傳輸速率為10Mb/s.其平衡雙絞線的長度與傳輸速率成反比,在 100kb/s速率以下,才可能達(dá)到最大傳輸距離。只有在很短的距離下才能獲得最高速率傳輸。一般100米長的雙絞線上所能獲得的最大傳輸速率僅為 1Mb/s.
RS-422需要一終接電阻,要求其阻值約等于傳輸電纜的特性阻抗。在短距離傳輸時(shí)可不需終接電阻,即一般在300米以下不需終接電阻。終接電阻接在傳輸電纜的最遠(yuǎn)端。
(3)RS-422的網(wǎng)絡(luò)失效保護(hù)
RS-422標(biāo)準(zhǔn)都規(guī)定了接收器門限為±200mV.這樣規(guī)定能夠提供比較高的噪聲抑制能力,當(dāng)接收器A電平比B電平高+200mV以上時(shí),輸出為正邏輯,反之,則輸出為負(fù)邏輯。但由于第三態(tài)的存在,即在主機(jī)在發(fā)端發(fā)完一個(gè)信息數(shù)據(jù)后,將總線置于第三態(tài),這帶來了一個(gè)問題:接收器輸出狀態(tài)不確定。如果接收機(jī)的輸出為0V,網(wǎng)絡(luò)中從機(jī)將把其解釋為一個(gè)新的啟動位,并試圖讀取后續(xù)字節(jié),由于永遠(yuǎn)不會有停止位,產(chǎn)生一個(gè)幀錯(cuò)誤結(jié)果,不再有設(shè)備請求總線,網(wǎng)絡(luò)陷于癱瘓狀態(tài)。除上述所述的總線空閑會造成兩線電壓差低于200mV的情況外,開路或短路時(shí)也會出現(xiàn)這種情況。故應(yīng)采取一定的措施避免接收器處于不確定狀態(tài)。
(4)RS-422的瞬態(tài)保護(hù)
由于傳輸線對高頻信號而言就是相當(dāng)于電感,因此對于高頻瞬態(tài)干擾,接地線實(shí)際等同于開路。這樣的瞬態(tài)干擾雖然持續(xù)時(shí)間短暫,但可能會有成百上千伏的電壓。實(shí)際應(yīng)用環(huán)境下還是存在高頻瞬態(tài)干擾的可能。一般在切換大功率感性負(fù)載如電機(jī)、變壓器、繼電器等或閃電過程中都會產(chǎn)生幅度很高的瞬態(tài)干擾,如果不加以適當(dāng)防護(hù)就會損壞RS-422通信接口,對于這種瞬態(tài)干擾可以采用隔離或旁路的方法加以防護(hù)。方法有隔離保護(hù)方法和旁路保護(hù)方法。
2.3FPGA內(nèi)部編程設(shè)計(jì)
采用MAX491串行接收實(shí)時(shí)數(shù)據(jù),并通過Xc2s100串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù),并控制存儲到FLASH中,在這個(gè)過程中,最關(guān)鍵的是對Spartan-II系列Xc2s100內(nèi)部編程,內(nèi)部模塊包括異步串行通信模塊和控制FLASH存儲、讀數(shù)和擦除模塊。
flash的英文解釋為:n.閃光,閃現(xiàn),一瞬間,閃現(xiàn),反射,使迅速傳便,vt.使閃光,反射adj.閃光的,火速的。Flash也是由macromedia公司推出的交互式矢量圖和Web動畫的標(biāo)準(zhǔn),由Adobe公司收購。網(wǎng)頁設(shè)計(jì)者使用Flash創(chuàng)作出既漂亮又可改變尺寸的導(dǎo)航界面以及其他奇特的效果。Flash也是存儲芯片的一種,通過特定的程序可以修改里面的數(shù)據(jù)。
(1)異步串行通信模塊(如圖2)UART發(fā)送模塊(如圖2中的send)發(fā)送器每隔16個(gè)CLK16時(shí)鐘周期輸出1位,次序遵循1位起始位、8位數(shù)據(jù)位(假定數(shù)據(jù)位為8位)、1位校驗(yàn)位(可選)、1位停止位;
何時(shí)通過UART發(fā)送數(shù)據(jù)由CPU控制,也就是說CPU要接受數(shù)據(jù)必須判斷當(dāng)前是否可寫,如果不判這個(gè)條件,接受的數(shù)據(jù)會出錯(cuò)。
數(shù)據(jù)的發(fā)送是由微處理器控制,微處理器給出信號,發(fā)送模塊根據(jù)此信號將并行
數(shù)據(jù)din[70]通過移位寄存器轉(zhuǎn)換為串行數(shù)據(jù)至串行數(shù)據(jù)輸出端Txd.UART接收模塊(如圖2中的receive)
串行數(shù)據(jù)幀和接收時(shí)鐘是異步的,發(fā)送來的數(shù)據(jù)由邏輯?1"變?yōu)檫壿?0"可以視為一個(gè)數(shù)據(jù)幀的開始。
接收器先要捕捉起始位,確定rxd輸入由1到0,邏輯0需要8個(gè)CLK16時(shí)鐘周期,才是正常的起始位,然后在每隔16個(gè)CLK16時(shí)鐘周期采樣接收數(shù)據(jù)(也可以為其它數(shù)),將串行數(shù)據(jù)din通過移位寄存器發(fā)送串行數(shù)據(jù)至并行數(shù)據(jù)輸出端dout[70],放入存儲器件。在數(shù)據(jù)發(fā)送過程中用輸出信號fifowr作為標(biāo)志信號,當(dāng)一幀數(shù)據(jù)發(fā)送完畢時(shí),fifowr信號為0,通知CPU在下個(gè)時(shí)鐘裝入新數(shù)據(jù)。
(2)FLASH存儲、讀數(shù)和擦除模塊(如圖3)FLASH在寫數(shù)據(jù)、讀數(shù)據(jù)和擦除時(shí)[4],編寫控制FLASH的程序,要按照如下規(guī)則:
頁編程:器件的編程以頁為單位,但在一個(gè)頁編程周期中允許對部分頁(一個(gè)或連續(xù)的多個(gè)字節(jié))編程。一個(gè)頁編程周期由串行數(shù)據(jù)加載階段和緊隨的編程階段組成。在數(shù)據(jù)加載階段,數(shù)據(jù)被加載到數(shù)據(jù)寄存器中;在編程階段,已加載的數(shù)據(jù)寫入實(shí)際的存儲單元,編程典型時(shí)間為200μs.
頁讀:器件在上電時(shí),就被初始化為讀模式,此時(shí)可以不寫00h命令,直接寫入地址和30h命令即可。有兩種類型的讀,分別是隨機(jī)讀和順序頁讀。由于設(shè)計(jì)存儲時(shí)
是基于整個(gè)頁操作,所以讀命令使用順序頁讀。命令打入后經(jīng)過最多20μs的時(shí)間,數(shù)據(jù)則會從選擇的頁傳到數(shù)據(jù)寄存器中。
塊擦除:器件的擦除操作是以塊為單位的。塊地址加載由擦除建立命令60h啟動,然后輸入確認(rèn)命令D0h,執(zhí)行內(nèi)部擦除過程。這一先建立再執(zhí)行的兩步命令時(shí)序,確保了存儲內(nèi)容不會由外部的干擾而意外擦除,擦除時(shí)間典型值為1.5ms.
3、系統(tǒng)調(diào)試
電路通過模擬接受一組實(shí)時(shí)串行數(shù)據(jù),經(jīng)過FPGA串行數(shù)據(jù)轉(zhuǎn)換為并行數(shù)據(jù),并且存儲到FLASH;再與主機(jī)通信讀回存儲在FLASH中的數(shù)據(jù)[5].它已經(jīng)可以穩(wěn)定的工作在180Mbytes/s的存儲速度,滿足了所需的機(jī)載實(shí)驗(yàn)要求。USB芯片工作在從方式(SlaveFIFO模式),由FPGA控制芯片的讀寫,同步傳輸數(shù)據(jù)。實(shí)測中通過USB回放數(shù)據(jù)的速度為15Mbytes/s.4、結(jié)論
本文設(shè)計(jì)了基于FPGA和FLASH存儲測試系統(tǒng),使FPGA與FLASH各自的優(yōu)點(diǎn)得到了有效的發(fā)揮:本文作者創(chuàng)新點(diǎn):RS-422電平傳輸串行數(shù)據(jù),通過FPGA把串行數(shù)據(jù)轉(zhuǎn)化為并行數(shù)據(jù)存儲到高速大容量的FLASH的存儲系統(tǒng)的具體設(shè)計(jì)和實(shí)施,在保證系統(tǒng)工作性能的情況下簡化了系統(tǒng)設(shè)計(jì),并驗(yàn)證了系統(tǒng)設(shè)計(jì)方案的正確性和可行性,為進(jìn)一步工程化實(shí)現(xiàn)打下了良好的基礎(chǔ),具有一定的工程應(yīng)用價(jià)值。
參考文獻(xiàn):
[1].MAX491datasheethttp:///datasheet/MAX491_859509.html.
[2].DIP14datasheethttp:///datasheet/DIP14_1113917.html.
[3].RS-422datasheethttp:///datasheet/RS-422_584820.html.
[4].Xc2s100datasheethttp:///datasheet/Xc2s100_1097674.html.
[5].CPLDdatasheethttp:///datasheet/CPLD_1136600.html.
[6].MAXIMdatasheethttp:///datasheet/MAXIM_1062568.html.
QICK