《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 可編程邏輯 > 設(shè)計應(yīng)用 > 基于FPGA的高速數(shù)據(jù)存儲系統(tǒng)優(yōu)化設(shè)計
基于FPGA的高速數(shù)據(jù)存儲系統(tǒng)優(yōu)化設(shè)計
2014年電子技術(shù)應(yīng)用第9期
張凱華,任勇峰,,賈興中
中北大學(xué) 電子測試技術(shù)國家重點實驗室,山西 太原030051
摘要: 針對遙測系統(tǒng)數(shù)據(jù)記錄裝置中數(shù)據(jù)傳輸速率與存儲速率不匹配的問題,,提出Flash的并行存儲方案,采用交替雙平面的編程方式可以使得存儲器的存儲速率達到單片F(xiàn)lash最高存儲速率的2倍,,即60 MB/s,;對控制單元FPGA內(nèi)部雙端口RAM的邏輯設(shè)計進行改進,解決了數(shù)據(jù)存儲異常的現(xiàn)象,。在數(shù)據(jù)回收方面,,提出了多備份的設(shè)計思想和備用讀數(shù)接口的設(shè)計方案,已在工程應(yīng)用中得到成功實踐,,驗證了該數(shù)據(jù)記錄裝置的可靠性,。
中圖分類號: TP302
文獻標(biāo)識碼: A
文章編號: 0258-7998(2014)09-0037-04
中文引用格式:張凱華,任勇峰,賈興中.基于FPGA的高速數(shù)據(jù)存儲系統(tǒng)優(yōu)化設(shè)計[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

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

1 方案設(shè)計

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

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

jcdl4-t1.gif

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

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

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

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

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

jcdl4-t2.gif

    (2)交替頁編程方式:該方式是在chip1完成加載并進入頁編程時刻,,對chip2進行加載,其好處是實現(xiàn)了時間上的復(fù)用,,避免因為等待而造成時間浪費,。其操作流程圖如圖3所示。

jcdl4-t3.gif

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

jcdl4-t4.gif

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

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

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

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

jcdl4-t5.gif

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

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

jcdl4-t6.gif

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

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

jcdl4-t7.gif

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

jcdl4-t8.gif

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

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

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

jcdl4-t9.gif

3 試驗驗證

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

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

參考文獻

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

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

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

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

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

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

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

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