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