《電子技術(shù)應(yīng)用》
您所在的位置:首頁(yè) > 可編程邏輯 > 設(shè)計(jì)應(yīng)用 > 基于FPGA的高速數(shù)據(jù)存儲(chǔ)系統(tǒng)優(yōu)化設(shè)計(jì)
基于FPGA的高速數(shù)據(jù)存儲(chǔ)系統(tǒng)優(yōu)化設(shè)計(jì)
2014年電子技術(shù)應(yīng)用第9期
張凱華,任勇峰,賈興中
中北大學(xué) 電子測(cè)試技術(shù)國(guó)家重點(diǎn)實(shí)驗(yàn)室,山西 太原030051
摘要: 針對(duì)遙測(cè)系統(tǒng)數(shù)據(jù)記錄裝置中數(shù)據(jù)傳輸速率與存儲(chǔ)速率不匹配的問(wèn)題,提出Flash的并行存儲(chǔ)方案,采用交替雙平面的編程方式可以使得存儲(chǔ)器的存儲(chǔ)速率達(dá)到單片F(xiàn)lash最高存儲(chǔ)速率的2倍,即60 MB/s;對(duì)控制單元FPGA內(nèi)部雙端口RAM的邏輯設(shè)計(jì)進(jìn)行改進(jìn),解決了數(shù)據(jù)存儲(chǔ)異常的現(xiàn)象。在數(shù)據(jù)回收方面,提出了多備份的設(shè)計(jì)思想和備用讀數(shù)接口的設(shè)計(jì)方案,已在工程應(yīng)用中得到成功實(shí)踐,驗(yàn)證了該數(shù)據(jù)記錄裝置的可靠性。
中圖分類號(hào): TP302
文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2014)09-0037-04
中文引用格式:張凱華,任勇峰,賈興中.基于FPGA的高速數(shù)據(jù)存儲(chǔ)系統(tǒng)優(yōu)化設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2014,40(09):37-40.
Optimized design of the high-speed storage system based on FPGA
Zhang Kaihua,Ren Yongfeng,Jia Xingzhong
National Key Laboratory for Electronic Measurement Technology,North University of China,Taiyuan 030051,China
Abstract: For the data recording device of telemetry system, it′s a problem that the transmission rate of data can not match the rate of storage. The paper puts forward the parallel storage scheme of Flash. With the interleave two-plane page program mode, the storage rate reaches double of the highest speed of monolithic Flash, namely 60 MB/s. The design of logic control of dual port RAM is improved to solve the problem of the data storage anomaly. In the aspect of data recovery, this paper puts forward the idea of double design and spare reading interface, which has been successful practiced in engineering application,and verified the reliability of the data recording device.
Key words : the parallel storage scheme;FPGA;dual port RAM;logic control;double design

    遙測(cè)系統(tǒng)數(shù)據(jù)記錄裝置是飛行器運(yùn)作的重要組成部分,其功能是負(fù)責(zé)接收采編器采集數(shù)據(jù)并實(shí)時(shí)存儲(chǔ),保證數(shù)據(jù)的完整和準(zhǔn)確,也稱為存儲(chǔ)器。在地面測(cè)試階段,存儲(chǔ)器主要通過(guò)測(cè)試電纜和采編器完成數(shù)據(jù)上傳操作,由工作人員通過(guò)上位機(jī)軟件進(jìn)行分析處理;而在飛行測(cè)試階段,存儲(chǔ)器在飛行狀態(tài)下記錄數(shù)據(jù),落地后通常會(huì)遭受沖擊和拉力破壞,對(duì)數(shù)據(jù)的回收工作帶來(lái)困難。存儲(chǔ)器數(shù)據(jù)的高速存儲(chǔ)和工作可靠性問(wèn)題由此產(chǎn)生。

1 方案設(shè)計(jì)

    根據(jù)實(shí)際工程應(yīng)用,LVDS有效數(shù)據(jù)傳送速率不高于59 MB/s,設(shè)計(jì)要求存儲(chǔ)器能夠?qū)崿F(xiàn)LVDS有效數(shù)據(jù)的可靠存儲(chǔ)及數(shù)據(jù)回讀功能,存儲(chǔ)容量不小于3 GB。

    作為存儲(chǔ)器的核心組成部分,存儲(chǔ)模塊設(shè)計(jì)由接口電路、中心邏輯控制芯片FPGA、配置芯片PROM、LVDS均衡器、LVDS解碼器、存儲(chǔ)芯片F(xiàn)lash、電源模塊以及60 MHz晶振等構(gòu)成。LVDS數(shù)據(jù)經(jīng)解碼器轉(zhuǎn)換為并行數(shù)據(jù)后傳送給FPGA,F(xiàn)PGA對(duì)其進(jìn)行分組,緩存處理,寫入Flash芯片;接口電路則實(shí)現(xiàn)存儲(chǔ)器數(shù)據(jù)的回收;由電源模塊為整個(gè)電路提供電源,60 MHz晶振提供工作時(shí)鐘。原理框圖如圖1所示。

jcdl4-t1.gif

2 關(guān)鍵技術(shù)設(shè)計(jì)

2.1 存儲(chǔ)速率優(yōu)化設(shè)計(jì)

    根據(jù)設(shè)計(jì)要求,存儲(chǔ)模塊接收LVDS有效數(shù)據(jù)的傳輸速率不高于59 MB/s,要想實(shí)現(xiàn)數(shù)據(jù)準(zhǔn)確、完整的存儲(chǔ),就要求其存儲(chǔ)速率不低于59 MB/s。設(shè)計(jì)選用三星公司的NAND型Flash存儲(chǔ)芯片K9WBGO8U1M作為存儲(chǔ)介質(zhì),單片存儲(chǔ)容量為4 GB。

    K9WBGO8U1M芯片由兩片K9WAGO8U1M組成,分別記為chip1和chip2,兩者通過(guò)芯片CE1和CE2引腳實(shí)現(xiàn)使能控制,當(dāng)CE1為低電平時(shí),chip1選通,可執(zhí)行內(nèi)部擦除、讀寫操作,反之亦然。Flash的寫操作過(guò)程即實(shí)現(xiàn)頁(yè)編程的過(guò)程,可分為加載和自動(dòng)編程兩個(gè)步驟,加載主要完成指令、地址的下發(fā),自動(dòng)編程則完成數(shù)據(jù)的存儲(chǔ)[1]。由于Flash結(jié)構(gòu)的特殊性,采用不同的操作方式,存儲(chǔ)速率都會(huì)有所不同,可分為以下幾種:

    (1)單平面編程方式:該方式是指在同一時(shí)刻只有chip1或者chip2響應(yīng)命令操作,進(jìn)行頁(yè)編程,在時(shí)間上無(wú)法同時(shí)進(jìn)行,從而浪費(fèi)在等待的過(guò)程中。其操作流程圖如圖2所示。

jcdl4-t2.gif

    (2)交替頁(yè)編程方式:該方式是在chip1完成加載并進(jìn)入頁(yè)編程時(shí)刻,對(duì)chip2進(jìn)行加載,其好處是實(shí)現(xiàn)了時(shí)間上的復(fù)用,避免因?yàn)榈却斐蓵r(shí)間浪費(fèi)。其操作流程圖如圖3所示。

jcdl4-t3.gif

    (3)交替雙平面編程方式:Chip的內(nèi)部存儲(chǔ)空間可劃分為4個(gè)plane,每個(gè)plane由2 048個(gè)塊和4 KB的頁(yè)寄存器組成,能夠執(zhí)行單獨(dú)擦除和編程操作。在執(zhí)行雙平面編程操作時(shí),必須選擇兩個(gè)plane同時(shí)進(jìn)行操作。利用芯片內(nèi)部不同平面可以單獨(dú)進(jìn)行操作的特性,令chip1中plane0和plane1為第1組,plane2和plane3為第2組,chip2中plane0和plane1為第3組,plane2和plane3為第4組,采用如圖4所示的流水線操作技術(shù)[2],各組的加載和頁(yè)編程能夠?qū)崿F(xiàn)連續(xù)操作,大幅度提高了單片F(xiàn)lash的存儲(chǔ)速率。

jcdl4-t4.gif

    當(dāng)?shù)?組加載完成后,頁(yè)編程的時(shí)間約為200 μs,此時(shí)對(duì)2、3、4組加載,加載時(shí)間大約為tjiazai={2[4 KB×t+7t]+tDBSY}×3=823.2 μs>200 μs;其中,t=1/30 MB/s,tDBSY為1 μs等待時(shí)間。因此第4組完成加載時(shí),第1組已經(jīng)完成頁(yè)編程操作,可以繼續(xù)加載。寫完4組的時(shí)間為T={2[4 KB×t+7t]+tDBSY}×4=1 097.6 μs,則單片F(xiàn)lash采用交替雙平面編程方式的最大存儲(chǔ)速率為4 096×8 B/1 097.6 μs=29.85 MB/s>29.5 MB/s,達(dá)不到59 MB/s的設(shè)計(jì)要求。因此,需要對(duì)存儲(chǔ)模塊數(shù)據(jù)總線進(jìn)行擴(kuò)展,采用兩片F(xiàn)lash并行存儲(chǔ)的辦法。該想法的實(shí)現(xiàn)對(duì)控制單元FPGA的邏輯設(shè)計(jì)提出更高的要求。

2.2 存儲(chǔ)邏輯優(yōu)化設(shè)計(jì)

    針對(duì)存儲(chǔ)模塊數(shù)據(jù)總線擴(kuò)展帶來(lái)的邏輯控制難題,本設(shè)計(jì)利用FPGA內(nèi)部豐富的存儲(chǔ)資源以及VHDL語(yǔ)言的可操作性和高靈活性,在FPGA內(nèi)部構(gòu)造雙端口RAM[3],實(shí)現(xiàn)數(shù)據(jù)緩存,提出以下兩種方案:

    方案一:利用FPGA內(nèi)部雙口RAM資源,構(gòu)造8 KB的緩存FIFO。圖5所示為存儲(chǔ)模塊的邏輯原理框圖。當(dāng)存儲(chǔ)模塊采集信號(hào)有效并進(jìn)入記錄狀態(tài)時(shí),數(shù)據(jù)流以60 MB/s的速率寫入緩存。當(dāng)寫入數(shù)據(jù)個(gè)數(shù)大于4 096時(shí),便以30 MB/s速率從緩存中讀出4 096個(gè)數(shù),寫入Flash(A)中;同時(shí)繼續(xù)判斷緩存中的數(shù)是否大于4 096個(gè),若大于,同樣以30 MB/s速率讀出4 096個(gè)數(shù)寫入Flash(B)中。依次交替循環(huán),利用兩片F(xiàn)lash完成有效數(shù)據(jù)的寫入過(guò)程。

jcdl4-t5.gif

    經(jīng)過(guò)多次測(cè)試,發(fā)現(xiàn)存儲(chǔ)數(shù)據(jù)回讀后經(jīng)常出現(xiàn)某位置4 096 B與前4 096 B幀計(jì)數(shù)顛倒的情況。分析是由于雙端口RAM為異步操作造成地址補(bǔ)償信號(hào)offset的值誤判引起的[4]。雙口RAM寫時(shí)鐘是根據(jù)LVDS解串出來(lái)的恢復(fù)時(shí)鐘,而讀數(shù)時(shí)鐘是邏輯控制模塊的120 MHz時(shí)鐘,所以RAM讀寫時(shí)鐘為異步時(shí)鐘。RAM中的讀操作是在地址補(bǔ)償信號(hào)offset滿足要求的情況下進(jìn)行的,而offset的值是在120 MHz時(shí)鐘下進(jìn)行判斷,可能此時(shí)寫地址正處于變化狀態(tài),使得寫地址的值不穩(wěn)定,導(dǎo)致offset的誤判,從而出現(xiàn)幀計(jì)數(shù)顛倒的現(xiàn)象。

    方案二:在方案一8 KB RAM之后增加兩個(gè)4 KB雙口RAM,構(gòu)成二級(jí)緩存[5]。實(shí)現(xiàn)兩級(jí)緩存的邏輯原理框圖如圖6所示。對(duì)于單路的LVDS信號(hào),數(shù)據(jù)以60 MB/s的速率寫入一級(jí)緩存,當(dāng)判斷寫入數(shù)據(jù)大于7 106后,以60 MB/s的速率連續(xù)讀取4 096個(gè)數(shù)據(jù)至二級(jí)緩存(A),同時(shí)控制Flash(A)模塊對(duì)二級(jí)緩存(A)中的數(shù)據(jù)進(jìn)行判斷,當(dāng)寫入數(shù)據(jù)大于10個(gè)后,以30 MB/s速率連續(xù)讀取4 096個(gè)數(shù)并寫入Flash(A)中;同時(shí),如果判斷一級(jí)緩存中數(shù)據(jù)個(gè)數(shù)大于7 106,同樣以60 MB/s速率連續(xù)讀取4 096個(gè)數(shù)據(jù),寫入二級(jí)緩存(B),當(dāng)控制Flash(B)模塊判斷二級(jí)緩存(B)中數(shù)據(jù)大于10個(gè)后,同樣以30 MB/s速率讀取4 096個(gè)數(shù)寫入Flash(B)。Flash操作交替進(jìn)行,實(shí)現(xiàn)LVDS有效數(shù)據(jù)輪流有序地寫入兩片F(xiàn)lash。當(dāng)執(zhí)行Flash讀操作時(shí),為了保證數(shù)據(jù)的完整性和正確性,按照寫操作時(shí)序依次交替讀出兩片F(xiàn)lash中的數(shù)據(jù)[6]。

jcdl4-t6.gif

    采用方案二的設(shè)計(jì),單片F(xiàn)lash的寫入速率達(dá)到30 MB/s,進(jìn)行并行擴(kuò)展后,使得LVDS數(shù)據(jù)流同時(shí)流入兩片F(xiàn)lash,寫入速率可達(dá)60 MB/s,實(shí)現(xiàn)了傳輸速率與存儲(chǔ)速率的良好匹配。經(jīng)過(guò)多次測(cè)試,回讀數(shù)據(jù)無(wú)異常情況出現(xiàn)。因此,采用第二種設(shè)計(jì)方案。

    存儲(chǔ)模塊一級(jí)緩存到二級(jí)緩存切換時(shí)序如圖7所示。8k_rdclk表示一級(jí)緩沖的讀時(shí)鐘,8k_data表示一級(jí)緩存中讀出的1 B數(shù)據(jù),8k_addrb表示一級(jí)緩沖讀地址,a4k_wrclk表示二級(jí)緩存(A)的寫時(shí)鐘,a4k_addra表示二級(jí)緩存(A)的寫地址,b4k_wrclk表示二級(jí)緩存(B)的寫時(shí)鐘,b4k_addra表示二級(jí)緩存(B)的寫地址。

jcdl4-t7.gif

    圖8所示展示了讀二級(jí)緩存寫入Flash時(shí)序圖。4k_rdclk為二級(jí)緩存4 KB的讀時(shí)鐘,4k_data為從4 KB緩存中讀出的數(shù)據(jù),4k_addrb為4 KB緩存的讀地址,flash_data為寫入Flash中的數(shù)據(jù),we為Flash的寫信號(hào),countbyte為寫入Flash的字節(jié)計(jì)數(shù)。

jcdl4-t8.gif

2.3 存儲(chǔ)器硬件優(yōu)化設(shè)計(jì)

    由于在飛行試驗(yàn)過(guò)程中,存儲(chǔ)器落地時(shí)會(huì)受到地面很大的沖擊作用,容易造成內(nèi)部電路板損壞,因此需要在電路板與機(jī)械結(jié)構(gòu)之間填充滿緩沖介質(zhì)[7]。盡管如此,很多情況下晶振也會(huì)不可避免地遭到破壞,直接影響到存儲(chǔ)數(shù)據(jù)的回收,而飛行試驗(yàn)的存儲(chǔ)數(shù)據(jù)對(duì)于航天分析具有至關(guān)重要的作用。因此在存儲(chǔ)器設(shè)計(jì)時(shí)采用多備份的設(shè)計(jì)原則,即將采集數(shù)據(jù)同時(shí)灌入甲、乙兩個(gè)存儲(chǔ)器,每個(gè)存儲(chǔ)器內(nèi)部分別有兩個(gè)存儲(chǔ)體,存儲(chǔ)體之間相互獨(dú)立、互為備份,存儲(chǔ)有相同的數(shù)據(jù)。

   存儲(chǔ)器在落地過(guò)程中易受到拉力破壞,使其無(wú)法再通過(guò)測(cè)試電纜進(jìn)行數(shù)據(jù)回讀。針對(duì)存儲(chǔ)器落地時(shí)晶振損壞的情況,對(duì)存儲(chǔ)模塊的接口電路進(jìn)行改進(jìn)設(shè)計(jì),增加了備用讀數(shù)接口,兩者具有相同的電氣特性。在存儲(chǔ)器落地后通過(guò)備用讀數(shù)電纜連接地面測(cè)試臺(tái),由測(cè)試臺(tái)提供給存儲(chǔ)器電源和備用讀數(shù)時(shí)鐘進(jìn)行數(shù)據(jù)回讀,實(shí)現(xiàn)了存儲(chǔ)數(shù)據(jù)的可靠回收。備用讀數(shù)接口電路設(shè)計(jì)原理如圖9所示。

jcdl4-t9.gif

3 試驗(yàn)驗(yàn)證

    對(duì)存儲(chǔ)器設(shè)計(jì)進(jìn)行改進(jìn)后,將存儲(chǔ)器、采編器和地面測(cè)試臺(tái)通過(guò)地面電纜連接,模擬飛行器上的數(shù)據(jù)采集、存儲(chǔ)過(guò)程。在數(shù)據(jù)回收后,由上位機(jī)軟件進(jìn)行分析處理,存儲(chǔ)數(shù)據(jù)準(zhǔn)確無(wú)誤,測(cè)試數(shù)據(jù)總量為300 GB。通過(guò)備用讀數(shù)接口和地面甩辯電纜接口讀出的數(shù)據(jù)相同,證明設(shè)計(jì)方案能夠?qū)崿F(xiàn)采集數(shù)據(jù)的準(zhǔn)確、完整存儲(chǔ)及可靠回收。

    本次設(shè)計(jì)的存儲(chǔ)系統(tǒng)采用Flash的并行存儲(chǔ)技術(shù)和交替雙平面編程的方式,在存儲(chǔ)速率方面有很大提高,保證了數(shù)據(jù)存儲(chǔ)的準(zhǔn)確性和完整性。同時(shí)多備份和備用讀數(shù)接口的設(shè)計(jì)也提高了存儲(chǔ)器數(shù)據(jù)回收的可靠性,在數(shù)據(jù)高速存儲(chǔ)和可靠回收測(cè)試領(lǐng)域具有良好的應(yīng)用前景。

參考文獻(xiàn)

[1] 盛大鵬.基于Flash的高速大容量存儲(chǔ)器的研究[D].北京:中國(guó)科學(xué)院研究生院,2008.

[2] 車艷霞,任勇峰,劉東海.一種小體積高速數(shù)據(jù)記錄器的設(shè)計(jì)與實(shí)現(xiàn)[J].自動(dòng)化與儀表,2011,26(11):9-11.

[3] 白佳俊,孟祥勇,張德平,等.基于W5300和FPGA的實(shí)時(shí)數(shù)據(jù)采集系統(tǒng)設(shè)計(jì)[J].電子技術(shù)應(yīng)用,2013,39(4):19-21.

[4] 馬游春,張濤,李錦明.FPGA集成FIFO在高過(guò)載存儲(chǔ)測(cè)試系統(tǒng)中的應(yīng)用[J].儀器儀表學(xué)報(bào),2006,27(6):2350-2351.

[5] 胡宏平,胡兵.基于FPGA的雙口RAM在信號(hào)采集中的應(yīng)用[J].微計(jì)算機(jī)信息,2007(23):223-225.

[6] 甄國(guó)涌.雷達(dá)視頻回波模擬設(shè)備關(guān)鍵技術(shù)研究[D].太原:中北大學(xué),2009.

[7] 劉飛.小型高速圖像存儲(chǔ)系統(tǒng)的設(shè)計(jì)[D].西安:西安電子科技大學(xué),2009.

此內(nèi)容為AET網(wǎng)站原創(chuàng),未經(jīng)授權(quán)禁止轉(zhuǎn)載。