文獻(xiàn)標(biāo)識(shí)碼: A
文章編號(hào): 0258-7998(2014)09-0072-03
相控陣?yán)走_(dá)是一種多功能、高性能的雷達(dá),具有多功能、多目標(biāo)、遠(yuǎn)距離、高數(shù)據(jù)率、高可靠性及自適應(yīng)能力強(qiáng)等優(yōu)點(diǎn)[1]。隨著計(jì)算機(jī)和集成電路等相關(guān)技術(shù)的發(fā)展,相控陣?yán)走_(dá)在地基、?;⒖栈约疤旎玫搅藦V泛的應(yīng)用。隨之而來(lái)的是,數(shù)據(jù)記錄的速率和容量也需要相應(yīng)提升。
而近年來(lái)存儲(chǔ)技術(shù)發(fā)展得很快,自2001年SATA1.0標(biāo)準(zhǔn)提出,如今SATA接口協(xié)議第三代已經(jīng)達(dá)到了6.0 Gb/s[2]。新一代的SSD(Solid State Disk)基于Nand Flash存儲(chǔ)技術(shù)提供了超過(guò)了200 MB/s傳輸帶寬以及更低的功耗[3]。這些都為相控陣?yán)走_(dá)的數(shù)據(jù)高速大容量存儲(chǔ)提供了支持。本文針對(duì)傳統(tǒng)記錄回放系統(tǒng)的兩種架構(gòu),設(shè)計(jì)并實(shí)現(xiàn)了一種通用的記錄回放系統(tǒng),由FPGA控制SATA IP核實(shí)現(xiàn)相控陣?yán)走_(dá)天線陣面數(shù)據(jù)的高速存儲(chǔ)。
1 問(wèn)題的提出
傳統(tǒng)典型的高速數(shù)據(jù)記錄回放系統(tǒng)一般采用兩種架構(gòu),即PCIE總線和自定義Flash存儲(chǔ)陣列架構(gòu)。PCIE總線架構(gòu)框圖如圖1所示。
CPU模塊通過(guò)PCIE總線接收采集模塊的數(shù)據(jù)放入內(nèi)存,然后再經(jīng)由PCIE總線將內(nèi)存中的數(shù)據(jù)送給RAID控制模塊,完成一次記錄操作。在操作過(guò)程中,數(shù)據(jù)流兩次經(jīng)過(guò)內(nèi)存,采集模塊和RAID控制模塊共享PCIE總線,兩個(gè)模塊分時(shí)通過(guò)PCIE總線傳輸數(shù)據(jù)。這種架構(gòu)的記錄回放系統(tǒng)有以下缺陷:(1)PCIE對(duì)于系統(tǒng)來(lái)說(shuō),只用到了50%效率;(2)系統(tǒng)記錄回放速度受限于PCIE總線的傳輸速度。
自定義Flash存儲(chǔ)陣列架構(gòu)框圖如圖2所示。該系統(tǒng)為一個(gè)獨(dú)立模塊,把Flash芯片分成多個(gè)組,通過(guò)擴(kuò)展Flash的位寬、深度提高記錄速度和存儲(chǔ)容量。FPGA將數(shù)據(jù)通過(guò)Flash的數(shù)據(jù)線、地址線存到Flash陣列里。這種架構(gòu)的記錄回放系統(tǒng)有以下缺陷:(1)存儲(chǔ)接口不是基于標(biāo)準(zhǔn)的傳輸存儲(chǔ)協(xié)議,而且受限于Flash芯片類(lèi)型,使得系統(tǒng)的通用性與擴(kuò)展性受限;(2)一般自定義接口規(guī)范用于滿足某種特定雷達(dá)的指標(biāo),一旦指標(biāo)發(fā)生變化,或者不能滿足雷達(dá)系統(tǒng)性能提升的要求,硬件就需要重新設(shè)計(jì),造成一定的資源浪費(fèi)。
2 問(wèn)題的解決思路
根據(jù)以上的對(duì)比,可以將兩者優(yōu)點(diǎn)結(jié)合起來(lái),提出一種新的記錄回放系統(tǒng)結(jié)構(gòu)。最直接的方式就是在自定義Flash存儲(chǔ)陣列系統(tǒng)中,選用標(biāo)準(zhǔn)的存儲(chǔ)協(xié)議接口代替自定義接口。目前,主流的存儲(chǔ)協(xié)議有IDE、SCSI、SATA等。IDE和SCSI屬于并行接口,在高速的數(shù)據(jù)傳輸存儲(chǔ)中,并行傳輸?shù)拇a間串?dāng)_等問(wèn)題會(huì)使誤碼率大大提高,而串行接口協(xié)議就很好地解決了這些問(wèn)題,該協(xié)議已經(jīng)相對(duì)成熟;SATA二代支持3 Gb/s的傳輸帶寬,并且其結(jié)構(gòu)簡(jiǎn)單,易于開(kāi)發(fā)[2]。圖3為SATA陣列記錄回放系統(tǒng)框圖。
本設(shè)計(jì)中,在FPGA內(nèi)部實(shí)現(xiàn)SATA硬盤(pán)的讀寫(xiě)操作。為了提高記錄回放速度,在FPGA里還實(shí)現(xiàn)了RAID0功能,對(duì)多個(gè)硬盤(pán)并行讀寫(xiě)。系統(tǒng)的存儲(chǔ)容量和記錄速度可根據(jù)配置硬盤(pán)的數(shù)量靈活調(diào)整,大大增強(qiáng)了通用性和可擴(kuò)展性。
3 實(shí)現(xiàn)
FPGA內(nèi)部的SATA硬盤(pán)控制設(shè)計(jì)是記錄回放系統(tǒng)的核心。系統(tǒng)選用Xilinx公司的Viretx-5的FPGA芯片,芯片型號(hào)為XC5VSX50T。芯片內(nèi)部集成的GTP可以滿足SATA2.0協(xié)議中要求的3.0 Gb/s的數(shù)據(jù)傳輸速率。本系統(tǒng)實(shí)現(xiàn)了兩路SATA硬盤(pán)的并行讀寫(xiě),下面對(duì)該設(shè)計(jì)進(jìn)行詳細(xì)闡述。
3.1 SATA硬盤(pán)控制
使用SATA IP核實(shí)現(xiàn)硬盤(pán)的讀寫(xiě)操作。IP符合SATA協(xié)議要求,采用3層設(shè)計(jì),即物理層、鏈路層和傳輸層。應(yīng)用層邏輯開(kāi)發(fā)基于傳輸層。傳輸層包含兩個(gè)接口,控制接口和數(shù)據(jù)接口。控制接口實(shí)現(xiàn)對(duì)IP內(nèi)部的寄存器操作;數(shù)據(jù)接口采用FIFO技術(shù),為用戶提供讀寫(xiě)數(shù)據(jù)通道。應(yīng)用層對(duì)IP核的寄存器進(jìn)行控制,實(shí)現(xiàn)對(duì)硬盤(pán)的DMA數(shù)據(jù)傳輸,表1列出了寄存器的詳細(xì)信息。
系統(tǒng)采用DMA傳輸對(duì)硬盤(pán)進(jìn)行數(shù)據(jù)讀寫(xiě)。圖4給出了應(yīng)用層中一次DMA操作的流程圖。圖5和圖6分別為在DMA操作過(guò)程中寄存器讀寫(xiě)和數(shù)據(jù)傳輸時(shí)序圖。
3.2 RAID0控制
為了提高記錄回放速度,需要使用多個(gè)硬盤(pán)組成陣列。本系統(tǒng)在FPGA內(nèi)部開(kāi)發(fā)了兩個(gè)硬盤(pán)并行讀寫(xiě)的RAID0控制功能模塊,設(shè)計(jì)原理如圖7所示。通過(guò)擴(kuò)展位寬的方式實(shí)現(xiàn)兩個(gè)硬盤(pán)的同步讀寫(xiě)。
3.3 數(shù)據(jù)管理
傳統(tǒng)的數(shù)據(jù)記錄回放系統(tǒng)直接以文件形式記錄數(shù)據(jù),文件形式的數(shù)據(jù)可以在操作系統(tǒng)下方便靈活地訪問(wèn),但受到文件系統(tǒng)對(duì)文件的管理約束,記錄過(guò)程中的數(shù)據(jù)不一定連續(xù)存儲(chǔ)在硬盤(pán)的連續(xù)邏輯塊地址上[7]。在該記錄系統(tǒng)中,數(shù)據(jù)是順序存儲(chǔ)到硬盤(pán)中的,可以在一定程度上提高記錄系統(tǒng)的帶寬。因此采用了自定義的文件系統(tǒng),將磁盤(pán)的存儲(chǔ)空間分為管理區(qū)、標(biāo)識(shí)區(qū)和數(shù)據(jù)區(qū)。數(shù)據(jù)區(qū)存放實(shí)際的數(shù)據(jù);管理區(qū)存放的是記錄的文件的信息,一般包括數(shù)據(jù)的存儲(chǔ)位置信息、長(zhǎng)度信息及數(shù)據(jù)到文件的映射信息;標(biāo)識(shí)區(qū)是標(biāo)記磁盤(pán)的空間使用情況。圖8為自定義文件系統(tǒng)結(jié)構(gòu)示意圖。
該記錄回放系統(tǒng)的數(shù)據(jù)管理可以分為三個(gè)步驟,首先要?jiǎng)澐趾糜脖P(pán)中管理區(qū)、標(biāo)識(shí)區(qū)和數(shù)據(jù)區(qū)的容量,構(gòu)建好文件系統(tǒng)的框架;然后把經(jīng)過(guò)記錄的數(shù)據(jù)順序地存放在數(shù)據(jù)區(qū);最后在一個(gè)文件記錄結(jié)束后,把文件的位置、大小、文件的標(biāo)識(shí)符等相關(guān)信息添加到管理區(qū)和標(biāo)識(shí)區(qū)。
在每次記錄開(kāi)始前要先遍歷管理區(qū)中的標(biāo)識(shí)區(qū),根據(jù)標(biāo)識(shí)區(qū)的值來(lái)獲得記錄的起始地址。根據(jù)系統(tǒng)的設(shè)計(jì),記錄的數(shù)據(jù)都是放在數(shù)據(jù)區(qū)的,如果標(biāo)識(shí)區(qū)表明數(shù)據(jù)區(qū)為空,那這次記錄的起始地址就是數(shù)據(jù)區(qū)的起始地址,一般情況下是要緊接著上一個(gè)文件的結(jié)束地址來(lái)存儲(chǔ)。如果數(shù)據(jù)區(qū)被寫(xiě)滿,會(huì)提示是否要清空磁盤(pán)的數(shù)據(jù),包括數(shù)據(jù)區(qū)中存儲(chǔ)的數(shù)據(jù)和管理區(qū)中存儲(chǔ)的文件的相關(guān)信息。記錄時(shí),數(shù)據(jù)被順序存放到數(shù)據(jù)區(qū)。記錄結(jié)束時(shí),要將文件的信息寫(xiě)到管理區(qū)相應(yīng)的位置,當(dāng)然管理區(qū)也是順序讀寫(xiě)的,同時(shí)要更新標(biāo)識(shí)區(qū)的標(biāo)識(shí),以便下次記錄時(shí)計(jì)算數(shù)據(jù)記錄的起始地址。
4 系統(tǒng)性能測(cè)試
在對(duì)該記錄回放系統(tǒng)進(jìn)行測(cè)試時(shí),選用兩塊Intel 公司的固態(tài)硬盤(pán)作為存儲(chǔ)介質(zhì),型號(hào)為SSDSA2SH064G1GC,單盤(pán)標(biāo)稱(chēng)的讀速率為250 MB/s,寫(xiě)速率為170 MB/s,容量為64 GB,在Xilinx ISE 14.6中的Chip Scope來(lái)觀察波形。在實(shí)際測(cè)試中,每個(gè)盤(pán)一次讀寫(xiě)256個(gè)扇區(qū),最后測(cè)得平均記錄速率為292 MB/s,回放速率為340 MB/s。同時(shí)經(jīng)過(guò)數(shù)據(jù)比對(duì),記錄回放的數(shù)據(jù)沒(méi)有出現(xiàn)錯(cuò)誤。圖9和圖10分別為讀寫(xiě)硬盤(pán)時(shí)的波形圖。
針對(duì)相控陣?yán)走_(dá)天線陣面?zhèn)鹘y(tǒng)記錄回放系統(tǒng)的不足,實(shí)現(xiàn)了一種通用性好、集成度高的SATA陣列記錄回放系統(tǒng)。系統(tǒng)基于FPGA實(shí)現(xiàn)對(duì)SATA硬盤(pán)的讀寫(xiě),既滿足了對(duì)數(shù)據(jù)存儲(chǔ)速率帶寬的要求,而且不用重新繪制電路板,就可以應(yīng)用在不同型號(hào)的雷達(dá)上。本系統(tǒng)實(shí)現(xiàn)了RAID0功能,兩個(gè)硬盤(pán)并行讀寫(xiě),平均記錄速率為292 MB/s,回放速率為340 MB/s。同時(shí),采用自定義的文件管理系統(tǒng),結(jié)構(gòu)簡(jiǎn)單,便于管理。為了實(shí)現(xiàn)更高的速率,可以在目前實(shí)現(xiàn)的兩路硬盤(pán)并行讀寫(xiě)擴(kuò)展為8路硬盤(pán)同時(shí)讀寫(xiě),這也是本文的下一步工作。
參考文獻(xiàn)
[1] 胡善清,劉峰,龍騰.相控陣?yán)走_(dá)光纖傳輸系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)[J].光通信技術(shù),2006(5):27-30.
[2] 唐純杰.SATA協(xié)議分析及其FPGA實(shí)現(xiàn)[D].長(zhǎng)沙:湖南大學(xué),2009.
[3] 王超,劉偉,張德聰.基于SATA的嵌入式直接存儲(chǔ)系統(tǒng)[J].計(jì)算機(jī)工程,2012,38(12):232-235.
[4] 王超,劉偉.基于文件系統(tǒng)的高速數(shù)據(jù)記錄系統(tǒng)[J].北京理工大學(xué)學(xué)報(bào),2010,30(5):543-547.
[5] 張樂(lè)峰,徐安林,胡衛(wèi)東.一種通用的雷達(dá)回波記錄系統(tǒng)設(shè)計(jì)方法[J].數(shù)據(jù)采集與處理,2009(24):272-276.
[6] Xilinx,Inc..Virtex-5 FPGA serial ATA generation 2 protocol standard[Z].2007.
[7] 張昆帆.高速數(shù)據(jù)采集和存儲(chǔ)[J].現(xiàn)代雷達(dá),2004,26(4):14-16.
[8] 周雙喜.基于FPGA的高速數(shù)據(jù)記錄系統(tǒng)的研究[D].成都電子科技大學(xué),2010.