基于FPGA的高速大容量FLASH存儲
1、引言
數字電路應用越來(lái)越廣泛,傳統通用的數字集成芯片已經(jīng)難以滿(mǎn)足系統的功能要求,隨著(zhù)系統復雜程度的提高,所需通用集成電路的數量呈爆炸性增值,使得電路的體積膨大,可靠性難以保證 [1]。因而出現了現場(chǎng)可編程門(mén)陣列 (FPGA)和復雜可編程邏輯器件 (CPLD)。在我國 20世紀 90年代以前,測試系統采用磁帶記錄,效率和安全保障性不高;隨之出現的是遙測技術(shù),但在傳輸數據的過(guò)程中會(huì )出現誤差;接著(zhù)是靜態(tài)存儲器,它讀、寫(xiě)方便,但是存儲的數據會(huì )因為斷電而丟失,所以,不利于數據長(cháng)時(shí)間保存;目前,閃存的問(wèn)世,NOR和 NAND是現在市場(chǎng)上兩種主要的非易失閃存技術(shù),它有存儲容量大、體積小、可靠性高等優(yōu)點(diǎn),測試系統會(huì )逐步向這個(gè)方向發(fā)展。
2、設計思想
2.1核心芯片選擇
(1)接受芯片選擇 MAX491
此芯片為 RS-422/485擴展芯片,為 DIP14封裝。MAX491有兩個(gè)控制端,如果兩個(gè)控制端由微處理器的一個(gè) I/O口控制,則總線(xiàn),兩線(xiàn)制,半雙工工作。如果兩個(gè)控制端單獨控制,則總線(xiàn)為 RS-422總線(xiàn),四線(xiàn)制,全雙工工作。 MAX491采用+5V電源供電,當供電電流僅有 500uA時(shí),傳輸速率卻能達到 2.5Mbits/s。它的內部有一個(gè)傳輸線(xiàn)驅動(dòng)器和一個(gè)傳輸線(xiàn)接收器,因此可以采用全雙工工作。
(2)FPGA采用Spartan-II系列Xc2s100
Spartan-II系列Xc2s100有著(zhù)豐富的觸發(fā)器和 LUT(Look-Up-Table),非常適合復雜時(shí)序邏輯的設計。FLASH采用SAMSUNG公司的 NANDFLASH芯片K9F8G08,接口寬度 8位。每個(gè)芯片含8192個(gè)數據塊,一個(gè)塊分為64頁(yè),每頁(yè)大小為 (2K+64)Bytes,其中64Bytes為空閑區,存儲容量為8Gbit。它以頁(yè)為單位進(jìn)行讀寫(xiě),以塊為單位擦除、命令、數據、地址共用同一總線(xiàn),具有硬件數據保護功能。
2.2 MAX491設計時(shí)需要注意的問(wèn)題
(1)RS-422傳輸線(xiàn)上匹配的一些說(shuō)明:理論上,在每個(gè)接收數據信號的中點(diǎn)進(jìn)行采樣時(shí),只要反射信號在開(kāi)始采樣時(shí)衰減到足夠低就可以不考慮匹配。但這在實(shí)際上難以掌握,美國 MAXIM公司有篇文章提到一條經(jīng)驗性的原則可以用來(lái)判斷在什么樣的數據速率和電纜長(cháng)度時(shí)需要進(jìn)行匹配:當信號的轉換時(shí)間(上升或下降時(shí)間)超過(guò)電信號沿總線(xiàn)單向傳輸所需時(shí)間的 3倍以上時(shí)就可以不加匹配。
一般終端匹配采用終接電阻方法,RS-422在總線(xiàn)電纜的遠端并接電阻,終接電阻一般在 RS-422網(wǎng)絡(luò )中取 100Ω,這種匹配方法簡(jiǎn)單有效,但有一個(gè)缺點(diǎn),匹配電阻要消耗較大功率,對于功耗限制比較嚴格的系統不太適合;
另外一種比較省電的匹配方式是 RC匹配;
還有一種采用二極管的匹配方法。
(2)RS-422的接地問(wèn)題
RS-422傳輸網(wǎng)絡(luò )的接地是很重要的,因為接地系統不合理會(huì )影響整個(gè)網(wǎng)絡(luò )的穩定性,尤其是在工作環(huán)境比較惡劣和傳輸距離較遠的情況下,對于接地的要求更為嚴格。 RS-422盡管采用差分平衡傳輸方式,但對整個(gè) RS-422網(wǎng)絡(luò ),必須有一條低阻的信號地。一條低阻的信號地將兩個(gè)接口的工作地連接起來(lái),使共模干擾電壓 VGPD被短路。這條信號地可以是額外的一條線(xiàn)(非屏蔽雙絞線(xiàn)),或者是屏蔽雙絞線(xiàn)的屏蔽層。這是最通常的接地方法。
(3)RS-422的網(wǎng)絡(luò )失效保護
RS-422標準都規定了接收器門(mén)限為± 200mV。這樣規定能夠提供比較高的噪聲抑制能力,當接收器 A電平比B電平高+200mV以上時(shí),輸出為正邏輯,反之,則輸出為負邏輯。但由于第三態(tài)的存在,即在主機在發(fā)端發(fā)完一個(gè)信息數據后,將總線(xiàn)置于第三態(tài),這帶來(lái)了一個(gè)問(wèn)題:接收器輸出狀態(tài)不確定。如果接收機的輸出為 0V,網(wǎng)絡(luò )中從機將把其解釋為一個(gè)新的啟動(dòng)位,并試圖讀取后續字節,由于永遠不會(huì )有停止位,產(chǎn)生一個(gè)幀錯誤結果,不再有設備請求總線(xiàn),網(wǎng)絡(luò )陷于癱瘓狀態(tài)。除上述所述的總線(xiàn)空閑會(huì )造成兩線(xiàn)電壓差低于 200mV的情況外,開(kāi)路或短路時(shí)也會(huì )出現這種情況。故應采取一定的措施避免接收器處于不確定狀態(tài)。
(4)RS-422的瞬態(tài)保護
由于傳輸線(xiàn)對高頻信號而言就是相當于電感,因此對于高頻瞬態(tài)干擾,接地線(xiàn)實(shí)際等同于開(kāi)路。這樣的瞬態(tài)干擾雖然持續時(shí)間短暫,但可能會(huì )有成百上千伏的電壓。實(shí)際應用環(huán)境下還是存在高頻瞬態(tài)干擾的可能。一般在切換大功率感性負載如電機、變壓器、繼電器等或閃電過(guò)程中都會(huì )產(chǎn)生幅度很高的瞬態(tài)干擾,如果不加以適當防護就會(huì )損壞 RS-422通信接口,對于這種瞬態(tài)干擾可以采用隔離或旁路的方法加以防護。方法有隔離保護方法和旁路保護方法。
2.3 FPGA內部編程設計
采用MAX491串行接收實(shí)時(shí)數據,并通過(guò) Xc2s100串行數據轉換為并行數據,并控制存儲到FLASH中,在這個(gè)過(guò)程中,最關(guān)鍵的是對 Spartan-II系列Xc2s100內部編程,內部模塊包括異步串行通信模塊和控制FLASH存儲、讀數和擦除模塊[2]。
(1)異步串行通信模塊[3](如圖2) UART 發(fā)送模塊(如圖 2中的 send) 發(fā)送器每隔 16個(gè) CLK16時(shí)鐘周期輸出 1位,次序遵循 1位起始位、 8位數據位(假定數據位為 8位)、1位校驗位(可選)、 1位停止位;
何時(shí)通過(guò) UART發(fā)送數據由 CPU控制,也就是說(shuō) CPU要接受數據必須判斷當前是否可寫(xiě),如果不判這個(gè)條件,接受的數據會(huì )出錯。
數據的發(fā)送是由微處理器控制,微處理器給出信號,發(fā)送模塊根據此信號將并行
數據 din[7..0]通過(guò)移位寄存器轉換為串行數據至串行數據輸出端 Txd。 UART 接收模塊(如圖2中的receive)
串行數據幀和接收時(shí)鐘是異步的,發(fā)送來(lái)的數據由邏輯 1’變?yōu)檫壿嫛?0’可以視為一個(gè)數據幀的開(kāi)始。
接收器先要捕捉起始位,確定 rxd輸入由 1到0,邏輯 0需要8個(gè)CLK16時(shí)鐘周期,才是正常的起始位,然后在每隔 16個(gè)CLK16時(shí)鐘周期采樣接收數據(也可以為其它數),將串行數據 din通過(guò)移位寄存器發(fā)送串行數據至并行數據輸出端 dout[7..0],放入存儲器件。在數據發(fā)送過(guò)程中用輸出信號 fifowr作為標志信號,當一幀數據發(fā)送完畢時(shí),fifowr信號為0,通知CPU在下個(gè)時(shí)鐘裝入新數據。
評論