文獻標識碼: A
文章編號: 0258-7998(2014)09-0037-04
中文引用格式:張凱華,任勇峰,賈興中.基于FPGA的高速數據存儲系統(tǒng)優(yōu)化設計[J].電子技術應用,2014,40(09):37-40.
遙測系統(tǒng)數據記錄裝置是飛行器運作的重要組成部分,其功能是負責接收采編器采集數據并實時存儲,保證數據的完整和準確,也稱為存儲器。在地面測試階段,存儲器主要通過測試電纜和采編器完成數據上傳操作,由工作人員通過上位機軟件進行分析處理;而在飛行測試階段,存儲器在飛行狀態(tài)下記錄數據,落地后通常會遭受沖擊和拉力破壞,對數據的回收工作帶來困難。存儲器數據的高速存儲和工作可靠性問題由此產生。
1 方案設計
根據實際工程應用,LVDS有效數據傳送速率不高于59 MB/s,設計要求存儲器能夠實現(xiàn)LVDS有效數據的可靠存儲及數據回讀功能,存儲容量不小于3 GB。
作為存儲器的核心組成部分,存儲模塊設計由接口電路、中心邏輯控制芯片FPGA、配置芯片PROM、LVDS均衡器、LVDS解碼器、存儲芯片F(xiàn)lash、電源模塊以及60 MHz晶振等構成。LVDS數據經解碼器轉換為并行數據后傳送給FPGA,F(xiàn)PGA對其進行分組,緩存處理,寫入Flash芯片;接口電路則實現(xiàn)存儲器數據的回收;由電源模塊為整個電路提供電源,60 MHz晶振提供工作時鐘。原理框圖如圖1所示。
2 關鍵技術設計
2.1 存儲速率優(yōu)化設計
根據設計要求,存儲模塊接收LVDS有效數據的傳輸速率不高于59 MB/s,要想實現(xiàn)數據準確、完整的存儲,就要求其存儲速率不低于59 MB/s。設計選用三星公司的NAND型Flash存儲芯片K9WBGO8U1M作為存儲介質,單片存儲容量為4 GB。
K9WBGO8U1M芯片由兩片K9WAGO8U1M組成,分別記為chip1和chip2,兩者通過芯片CE1和CE2引腳實現(xiàn)使能控制,當CE1為低電平時,chip1選通,可執(zhí)行內部擦除、讀寫操作,反之亦然。Flash的寫操作過程即實現(xiàn)頁編程的過程,可分為加載和自動編程兩個步驟,加載主要完成指令、地址的下發(fā),自動編程則完成數據的存儲[1]。由于Flash結構的特殊性,采用不同的操作方式,存儲速率都會有所不同,可分為以下幾種:
(1)單平面編程方式:該方式是指在同一時刻只有chip1或者chip2響應命令操作,進行頁編程,在時間上無法同時進行,從而浪費在等待的過程中。其操作流程圖如圖2所示。
(2)交替頁編程方式:該方式是在chip1完成加載并進入頁編程時刻,對chip2進行加載,其好處是實現(xiàn)了時間上的復用,避免因為等待而造成時間浪費。其操作流程圖如圖3所示。
(3)交替雙平面編程方式:Chip的內部存儲空間可劃分為4個plane,每個plane由2 048個塊和4 KB的頁寄存器組成,能夠執(zhí)行單獨擦除和編程操作。在執(zhí)行雙平面編程操作時,必須選擇兩個plane同時進行操作。利用芯片內部不同平面可以單獨進行操作的特性,令chip1中plane0和plane1為第1組,plane2和plane3為第2組,chip2中plane0和plane1為第3組,plane2和plane3為第4組,采用如圖4所示的流水線操作技術[2],各組的加載和頁編程能夠實現(xiàn)連續(xù)操作,大幅度提高了單片F(xiàn)lash的存儲速率。
當第1組加載完成后,頁編程的時間約為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組已經完成頁編程操作,可以繼續(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的設計要求。因此,需要對存儲模塊數據總線進行擴展,采用兩片F(xiàn)lash并行存儲的辦法。該想法的實現(xiàn)對控制單元FPGA的邏輯設計提出更高的要求。
2.2 存儲邏輯優(yōu)化設計
針對存儲模塊數據總線擴展帶來的邏輯控制難題,本設計利用FPGA內部豐富的存儲資源以及VHDL語言的可操作性和高靈活性,在FPGA內部構造雙端口RAM[3],實現(xiàn)數據緩存,提出以下兩種方案:
方案一:利用FPGA內部雙口RAM資源,構造8 KB的緩存FIFO。圖5所示為存儲模塊的邏輯原理框圖。當存儲模塊采集信號有效并進入記錄狀態(tài)時,數據流以60 MB/s的速率寫入緩存。當寫入數據個數大于4 096時,便以30 MB/s速率從緩存中讀出4 096個數,寫入Flash(A)中;同時繼續(xù)判斷緩存中的數是否大于4 096個,若大于,同樣以30 MB/s速率讀出4 096個數寫入Flash(B)中。依次交替循環(huán),利用兩片F(xiàn)lash完成有效數據的寫入過程。
經過多次測試,發(fā)現(xiàn)存儲數據回讀后經常出現(xiàn)某位置4 096 B與前4 096 B幀計數顛倒的情況。分析是由于雙端口RAM為異步操作造成地址補償信號offset的值誤判引起的[4]。雙口RAM寫時鐘是根據LVDS解串出來的恢復時鐘,而讀數時鐘是邏輯控制模塊的120 MHz時鐘,所以RAM讀寫時鐘為異步時鐘。RAM中的讀操作是在地址補償信號offset滿足要求的情況下進行的,而offset的值是在120 MHz時鐘下進行判斷,可能此時寫地址正處于變化狀態(tài),使得寫地址的值不穩(wěn)定,導致offset的誤判,從而出現(xiàn)幀計數顛倒的現(xiàn)象。
方案二:在方案一8 KB RAM之后增加兩個4 KB雙口RAM,構成二級緩存[5]。實現(xiàn)兩級緩存的邏輯原理框圖如圖6所示。對于單路的LVDS信號,數據以60 MB/s的速率寫入一級緩存,當判斷寫入數據大于7 106后,以60 MB/s的速率連續(xù)讀取4 096個數據至二級緩存(A),同時控制Flash(A)模塊對二級緩存(A)中的數據進行判斷,當寫入數據大于10個后,以30 MB/s速率連續(xù)讀取4 096個數并寫入Flash(A)中;同時,如果判斷一級緩存中數據個數大于7 106,同樣以60 MB/s速率連續(xù)讀取4 096個數據,寫入二級緩存(B),當控制Flash(B)模塊判斷二級緩存(B)中數據大于10個后,同樣以30 MB/s速率讀取4 096個數寫入Flash(B)。Flash操作交替進行,實現(xiàn)LVDS有效數據輪流有序地寫入兩片F(xiàn)lash。當執(zhí)行Flash讀操作時,為了保證數據的完整性和正確性,按照寫操作時序依次交替讀出兩片F(xiàn)lash中的數據[6]。
采用方案二的設計,單片F(xiàn)lash的寫入速率達到30 MB/s,進行并行擴展后,使得LVDS數據流同時流入兩片F(xiàn)lash,寫入速率可達60 MB/s,實現(xiàn)了傳輸速率與存儲速率的良好匹配。經過多次測試,回讀數據無異常情況出現(xiàn)。因此,采用第二種設計方案。
存儲模塊一級緩存到二級緩存切換時序如圖7所示。8k_rdclk表示一級緩沖的讀時鐘,8k_data表示一級緩存中讀出的1 B數據,8k_addrb表示一級緩沖讀地址,a4k_wrclk表示二級緩存(A)的寫時鐘,a4k_addra表示二級緩存(A)的寫地址,b4k_wrclk表示二級緩存(B)的寫時鐘,b4k_addra表示二級緩存(B)的寫地址。
圖8所示展示了讀二級緩存寫入Flash時序圖。4k_rdclk為二級緩存4 KB的讀時鐘,4k_data為從4 KB緩存中讀出的數據,4k_addrb為4 KB緩存的讀地址,flash_data為寫入Flash中的數據,we為Flash的寫信號,countbyte為寫入Flash的字節(jié)計數。
2.3 存儲器硬件優(yōu)化設計
由于在飛行試驗過程中,存儲器落地時會受到地面很大的沖擊作用,容易造成內部電路板損壞,因此需要在電路板與機械結構之間填充滿緩沖介質[7]。盡管如此,很多情況下晶振也會不可避免地遭到破壞,直接影響到存儲數據的回收,而飛行試驗的存儲數據對于航天分析具有至關重要的作用。因此在存儲器設計時采用多備份的設計原則,即將采集數據同時灌入甲、乙兩個存儲器,每個存儲器內部分別有兩個存儲體,存儲體之間相互獨立、互為備份,存儲有相同的數據。
存儲器在落地過程中易受到拉力破壞,使其無法再通過測試電纜進行數據回讀。針對存儲器落地時晶振損壞的情況,對存儲模塊的接口電路進行改進設計,增加了備用讀數接口,兩者具有相同的電氣特性。在存儲器落地后通過備用讀數電纜連接地面測試臺,由測試臺提供給存儲器電源和備用讀數時鐘進行數據回讀,實現(xiàn)了存儲數據的可靠回收。備用讀數接口電路設計原理如圖9所示。
3 試驗驗證
對存儲器設計進行改進后,將存儲器、采編器和地面測試臺通過地面電纜連接,模擬飛行器上的數據采集、存儲過程。在數據回收后,由上位機軟件進行分析處理,存儲數據準確無誤,測試數據總量為300 GB。通過備用讀數接口和地面甩辯電纜接口讀出的數據相同,證明設計方案能夠實現(xiàn)采集數據的準確、完整存儲及可靠回收。
本次設計的存儲系統(tǒng)采用Flash的并行存儲技術和交替雙平面編程的方式,在存儲速率方面有很大提高,保證了數據存儲的準確性和完整性。同時多備份和備用讀數接口的設計也提高了存儲器數據回收的可靠性,在數據高速存儲和可靠回收測試領域具有良好的應用前景。
參考文獻
[1] 盛大鵬.基于Flash的高速大容量存儲器的研究[D].北京:中國科學院研究生院,2008.
[2] 車艷霞,任勇峰,劉東海.一種小體積高速數據記錄器的設計與實現(xiàn)[J].自動化與儀表,2011,26(11):9-11.
[3] 白佳俊,孟祥勇,張德平,等.基于W5300和FPGA的實時數據采集系統(tǒng)設計[J].電子技術應用,2013,39(4):19-21.
[4] 馬游春,張濤,李錦明.FPGA集成FIFO在高過載存儲測試系統(tǒng)中的應用[J].儀器儀表學報,2006,27(6):2350-2351.
[5] 胡宏平,胡兵.基于FPGA的雙口RAM在信號采集中的應用[J].微計算機信息,2007(23):223-225.
[6] 甄國涌.雷達視頻回波模擬設備關鍵技術研究[D].太原:中北大學,2009.
[7] 劉飛.小型高速圖像存儲系統(tǒng)的設計[D].西安:西安電子科技大學,2009.