基于FPGA的超高速雷達實時采集存儲系統(tǒng)
摘要:采用服務(wù)器作為采集主控設(shè)備,利用多個硬盤組成磁 盤陣列作為存儲設(shè)備,并制作了一塊基于FPGA的超高速雷達信號采集PCI卡。系統(tǒng)以FPGA為采集的核心控制芯片,并在FPGA內(nèi)部實現(xiàn)了64位/66MHz的PCI接口邏輯,無需專用接口芯片,簡化了電路板設(shè)計,提高了系統(tǒng)的靈活性。該系統(tǒng)數(shù)據(jù)傳輸總速率可高達528MB/s,實時流盤速度可達150MB/s,存儲容量可擴展至1000GB以上。
在超高速數(shù)據(jù)采集方面,F(xiàn)PGA(現(xiàn)場可編程門陣列)有著單片機和DSP所無法比擬的優(yōu)勢。FPGA時鐘頻率高,內(nèi)部時延小,目前器件的最高工作頻率可達300MHz;硬件資源豐富,單片集成的可用門數(shù)達1000萬門;全部控制邏輯由硬件資源完成,速度快,效率高;組成形式靈活,可以集成外圍控制、譯碼和接口電路。
實時流盤一直是數(shù)據(jù)采集技術(shù)的最大瓶頸,它直接制約了采集存儲設(shè)備的實時存儲能力。為此,可考慮利用多個硬盤組成RAID陣列(廉價冗余磁盤陣列)[1-2]。RAID的初衷主要是為大型服務(wù)器提供高端的存儲功能和冗余的數(shù)據(jù)安全。RAIID把多塊獨立的硬盤(物理硬盤)按不同方式組合起來形成一個硬盤組(邏輯硬盤),從而提供比單個硬盤更高的存儲性能,提供冗余的技術(shù)。
1 總體方案
本文設(shè)計并實現(xiàn)了一種超高速的雷達信號采集存儲系統(tǒng),其工作原理框圖如圖1所示。
本系統(tǒng)采用服務(wù)器作為采集主控設(shè)備,利用多個硬盤組成磁盤陣列作為存儲設(shè)備。從以前的使用情況看,在普通主板上集成RAID控制器,采用IDE硬盤組成RAID0陣列情況下,硬盤陣列實測的讀寫速度可達40MB/s;在使用SCSI硬盤和Adaptec公司的RAID卡情況下,實測速度可達70 MB/s;在使用SATA硬盤和3WARE公司的RAID卡情況下,實測速度可達150 MB/s,且最新的SATA硬盤容量大、價格便宜;若采用12個160GB的SATA硬盤,則容量能達到驚人的1920GB。無論從還是從價格上,采用SATA硬盤組成SATA RAID磁盤陣列都是一種比較理想的選擇。
由于采用64位/66MHz接口的PCI卡,其總線數(shù)據(jù)傳輸速率為普通32位/33 MB/s接口的PCI卡的四倍,總速率可高達538 MB/s。此方案比較適合超高速雷達信號的實時采集與實時存盤,采用RAID磁盤陣列后流盤速度得到了較大的提高,明顯改善了數(shù)據(jù)傳輸與數(shù)據(jù)存盤之間速度不匹配這一瓶頸問題。
2 硬件設(shè)計
系統(tǒng)硬件總體設(shè)計考慮到系統(tǒng)的通用性、可擴展性以及數(shù)據(jù)傳輸、終端處理的需要,選用通過64位/66MHz的PIC局部總線與主機(服務(wù)器)進行實時數(shù)據(jù)交換,有利于實現(xiàn)系統(tǒng)的模塊化設(shè)計和集成,提高了數(shù)據(jù)的靈活處理能力。PCI插卡實際硬件結(jié)構(gòu)如圖2所示。
FPGA采用Xilinx(賽靈思)公司的10萬門FPGA芯片XC2S100E,其配置芯片的Xilinx公司的1Mbits容量PROM芯片XC18V01,以主動串行方式對FPGA進行上電配置。AD、DA分別為ADI(模擬儀器)公司12位高速模數(shù)轉(zhuǎn)換芯片AD9224與14位高速數(shù)模轉(zhuǎn)換芯片AD9764。SRAM采用Cypress Semiconductor(塞普拉斯半導(dǎo)體)公司的256K×16bits SRAM芯片CY7C1041。
設(shè)計中利用FPGA實現(xiàn)64位/MHz的PCI接口邏輯,進行實時信號采集和傳輸控制。由于FPGA具有層次化的存儲器系統(tǒng),其基本邏輯功能埠可以配置成16×1、16×2或32×1的同步RAM,或16×1的雙端口同步RAM,因此可以在FPGA內(nèi)部配置高雙口RAM作為信號傳輸?shù)臄?shù)據(jù)緩沖器。同時,為了節(jié)省FPGA的內(nèi)部邏輯資源,在FPGA外圍配置了適當(dāng)?shù)腟RAM用來存儲數(shù)據(jù)。
3 軟件設(shè)計
3.1 FPGA程序設(shè)計
3.1.1 FPGA內(nèi)部功能模塊分析
FPGA內(nèi)置多個功能部件,主要包括雷達信號采集控制模塊與PCI接口邏輯模塊。FPGA內(nèi)部功能組成原理圖如圖3所示。
FPGA作為系統(tǒng)總的控制樞紐,參與了系統(tǒng)具體任務(wù)的實現(xiàn)。內(nèi)部功能模塊的工作過程為:首先采集控制模塊通過對AD轉(zhuǎn)換電路的時序控制將雷達視頻信號轉(zhuǎn)換成數(shù)字信號并暫存于FPGA內(nèi)部雙口RAM中,然后再將雙口RAM中的數(shù)據(jù)通過PCI接口邏輯模塊送往計算機。
3.1.2 采集控制模塊程序設(shè)計
本系統(tǒng)要求能夠在普通顯示器上對采集的雷達視頻回波信號進行長時間的實時顯示。同時在顯示過程中,可對任意區(qū)域設(shè)置采集方位和距離波門,將采集的數(shù)據(jù)實時存儲在磁盤陣列上。系統(tǒng)工作流程如圖4所示。
采集卡與計算機之間的數(shù)據(jù)交換以FPGA內(nèi)部配置的高速雙口RAM作為數(shù)據(jù)傳輸?shù)木彌_器,采用兩片雙口RAM乒乓切換的方式進行數(shù)據(jù)傳輸[3]。具體方法為:在FGPA內(nèi)部配置兩片8K×32bits的雙口RAM,采集開始時,將采集數(shù)據(jù)往第一片雙口RAM中寫,當(dāng)?shù)谝黄p口RAM寫滿時,采集控制模塊產(chǎn)生乒乓切換信號,數(shù)據(jù)自動存入第二片雙口RAM中,同時以DMA方式將第一片雙口RAM中的采集數(shù)據(jù)傳送給計算機,如此輪換交替。這樣DMA傳輸和接收A/D數(shù)據(jù)可以同時進行,而DMA的速率遠大于A/D采集速率,從而有效地避免數(shù)據(jù)丟失。
3.1.3 PCI接口邏輯模塊程序設(shè)計
為了實現(xiàn)PCI總線各控制信號間的時序關(guān)系,可以根據(jù)具體的交易設(shè)計相應(yīng)的狀態(tài)機。以目標(biāo)設(shè)備I/O寫為例:當(dāng)幀有效信號(FRAME#)有效(低電平)時標(biāo)志著一次交易的開始,C/BE#[3:0]為“0011”表明此交易為I/O寫,同時AD[63:0]上的數(shù)據(jù)為此次交易的I/O地址。如果此I/O地址與設(shè)備配置寄存器中I/O基地址寄存器(Base Address Register)的值相同,目標(biāo)設(shè)備通過使DESEL#有效來聲時這次交易。作為主設(shè)備,在FRAME#、I/O地址和C/BE#有效后在AD[63:0]上驅(qū)動要傳輸?shù)臄?shù)據(jù)、在C/BE#上驅(qū)動字節(jié)使能、同時使能目標(biāo)準(zhǔn)備好信號IRDY#,直到檢測到目標(biāo)設(shè)備有效的DRDY#信號,此次交易中的主設(shè)備和目標(biāo)設(shè)備停止驅(qū)動各種信號。而目標(biāo)設(shè)備在準(zhǔn)備好接收數(shù)據(jù)后就可以使能DRDY#,此后目標(biāo)設(shè)備檢測到IRDY#時可以根據(jù)具體的字節(jié)使能C/BE#[3:0]將AD[63:0]總線上的數(shù)據(jù)進行鎖存,從而完成整個交易[4]。此交易的狀態(tài)圖如圖5所示。
本系統(tǒng)利用VHDL編程在FPGA中實現(xiàn)了64位/66MHz的PCI接口邏輯,其中實現(xiàn)的功能包括:配置空間讀寫、目標(biāo)設(shè)備I/O映射與內(nèi)存映射端口讀寫和主設(shè)備DMA控制。實際調(diào)試中,DMA傳輸?shù)乃矔r傳輸速率可達132Mbps,其連續(xù)傳輸速率也可達100 Mbps。
3.3 驅(qū)動程序設(shè)計
3.2.1 DriverWorks生成驅(qū)動程序框架
NuMega公司的Driver Studio是一套為簡化Windows應(yīng)用程序和設(shè)備驅(qū)動程序的開發(fā)、調(diào)試及測試工具包。其中有WDM和WINNT的驅(qū)動程序開發(fā)軟件DriverWin9X(Windows95和Windows98)的虛擬設(shè)備驅(qū)動程序(VxD)的VtoolsD。
DriverWorks以面向?qū)ο螅∣OP)的方式,將編寫WDM及WINNT驅(qū)動程序所需的對內(nèi)核模式訪問及硬件的訪問封裝成類。DriverWorks是基于VC++的,它生成標(biāo)準(zhǔn)的VC工程,只要將所建的工程在VC下編譯,就可以生成最終的設(shè)備驅(qū)動程序。
3.2.2 VC++二次開發(fā)設(shè)備驅(qū)動程序
DriverWorks向?qū)闪藘蓚€類:一個是設(shè)備驅(qū)動程序類,另一個是設(shè)備對象類。驅(qū)動程序類主要完成WDM的DriverEntry和AddDevice例程。設(shè)備對象類就是與硬件對應(yīng)的功能設(shè)備對象(FDO)類,與硬件交互的例程都是針對此類的。
DriverWorks生成驅(qū)動程序框架,根據(jù)具體功能,用戶還需在VC++工程下添加自己的代碼。常用的功能有:IO映射端口訪問、內(nèi)存映射端口訪問和中斷處理。DriverWorks將編寫WDM驅(qū)動程序所需的對內(nèi)核模式訪問及硬件的訪問封裝成類,其中,KpciConfiguration類用于實現(xiàn)對PCI設(shè)備配置空間的訪問,KioRange類用于實現(xiàn)對I/O映射端口的訪問,KmemoryRange類用于實現(xiàn)對內(nèi)存映射端口的訪問,KdmaAdapter、KdmaTransfer和KcommonDmaBuffer類用于實現(xiàn)DMA操作,Kinterrupt類用于實現(xiàn)中斷處理操作。
3.3 應(yīng)用程序設(shè)計
3.3.1 應(yīng)用程序與驅(qū)動程序之間的通信
在Windows中,應(yīng)用程序?qū)崿F(xiàn)與WDM通信的過程是:應(yīng)用程序先用CreateFile函數(shù)打開設(shè)備,然后用DeviclIoControl與WDM兩種情況,當(dāng)應(yīng)用程序退出時,用CloseHandle關(guān)閉設(shè)備。
驅(qū)動程序有時需要主動通知上層應(yīng)用程序執(zhí)行某個操作,以實現(xiàn)硬件響應(yīng)的實時性。這可以通過在應(yīng)用程序中創(chuàng)建一個事件,將該事件句柄放入輸入緩沖區(qū)中,通過函數(shù)DeviceIoControl傳給驅(qū)動程序,并創(chuàng)建一個線程來守候該事件被激活。
3.3.2用戶界面程序設(shè)計
用戶程序主要完成雷達視頻信號的采集參數(shù)設(shè)置、采集數(shù)據(jù)的實時顯示和實時存盤。采集工作過程如下:首先通過用戶程序?qū)Σ杉瘏?shù)進行設(shè)置并通過計算機PCI接口發(fā)往PCI卡的FPGA中,F(xiàn)PGA則根據(jù)這些參數(shù)控制雷達視頻信號的采集;然后用戶可以點擊“開始”按鈕啟動采集過程,可以在P顯和A顯坐標(biāo)下觀察采集的目標(biāo)回波信號,同時將采集的雷達回波數(shù)據(jù)以二進制格式實時保存在磁盤陣列上,供Matlab等軟件進一步分析使用。
目前,本系統(tǒng)已對某型艦載警戒搜索雷達成功地進行了實際外場數(shù)據(jù)采集。圖6為P顯和A顯坐標(biāo)下采集到的真實雷達視頻回波信號。實驗表明這個系統(tǒng)完全滿足所提出的指標(biāo)要求,能夠做到大容量高速連續(xù)采集,且穩(wěn)定可靠,測得的數(shù)據(jù)能夠真實地反映目標(biāo)與環(huán)境的特性,可用于檢驗各種目標(biāo)檢測、識別、跟蹤算法。
本系統(tǒng)可用于超高速雷達信號處理機中,利用大容量FPGA可直接對AD轉(zhuǎn)換后的雷達中頻信號進行高速實時處理,處理結(jié)果可通過PCI總線高速傳輸?shù)接嬎銠C內(nèi)存中,同時利用高速、大容量磁盤陣列進行實時的海量數(shù)據(jù)存盤。
評論