伍家香 潘 偉 李 洋
(電子科技大學 成都 610054)
船用雷達是裝在船上用于船舶定位、避讓、狹水道導航的雷達設備。船用雷達顯示系統(tǒng)是雷達的重要組成部分,其主要任務包括:雷達原始數(shù)據(jù)處理及顯示、目標及其相關信息顯示、雷達狀態(tài)控制及人機交互等[1]。在其研制、驗證過程中,大量數(shù)據(jù)需要從采集卡傳輸?shù)絇C 機用于顯示、分析船用雷達系統(tǒng)性能。目前,主要的快速數(shù)據(jù)傳輸方法有:PCI采集卡、SATA 接口、USB 接口以及千兆以太網(wǎng)接口[2]。采用PCI總線方式,通用性好、設備量不大,能夠達到較高的采集速率,但需要將采集卡插在機箱內(nèi)部,使用欠靈活。SATA 接口優(yōu)點是能快速可靠的進行傳輸,但很多PC 機沒有引出SATA 接口,它和PCI總線方式一樣,使用欠靈活。USB 接口體積小且接口通用性好,但協(xié)議開銷很大,不適宜遠距離數(shù)據(jù)傳輸。千兆以太網(wǎng)接口優(yōu)點是協(xié)議開銷小、傳輸距離長。為了保證傳輸通用性及可靠性,本系統(tǒng)采用千兆以太網(wǎng)來實現(xiàn)數(shù)據(jù)傳輸。采集卡數(shù)據(jù)通過以太網(wǎng)發(fā)送出來后,到達PC 機網(wǎng)卡,如何把數(shù)據(jù)從網(wǎng)卡取出用于顯示系統(tǒng)顯示成為本系統(tǒng)要解決的一個重要難題。在網(wǎng)絡應用技術中,網(wǎng)絡監(jiān)聽技術可以抓取網(wǎng)絡上傳輸?shù)臄?shù)據(jù)包[3]。因此,本系統(tǒng)利用網(wǎng)絡監(jiān)聽技術實現(xiàn)數(shù)據(jù)包的捕獲和存儲。
由雷達接收機接收雷達回波信號,經(jīng)轉(zhuǎn)換電路處理后,送入信號處理板進行處理,再傳輸?shù)浇K端計算機進行顯示。如圖1所示,是基于PC 機的雷達顯示系統(tǒng)總體框圖,該系統(tǒng)總共有四個部分:雷達接收機、信號采集轉(zhuǎn)換電路、信號處理電路、終端計算機顯示部分。
在雷達工作時,雷達天線接收和發(fā)射的模擬信號,經(jīng)過A/D 轉(zhuǎn)換進入信號處理板,再經(jīng)過FPGA對雷達的原始信號進行處理,處理后的數(shù)據(jù)通過千兆以太網(wǎng)發(fā)送至PC 機,PC 機完成后期的雷達數(shù)據(jù)處理任務,將最終的目標方位、目標距離、目標速度以及目標航向等信息記錄并顯示,以便于人工觀測。同時接收鍵盤、鼠標等外設的控制信息,產(chǎn)生雷達控制指令實現(xiàn)對雷達的控制。
在PC 端,因所傳輸數(shù)據(jù)速率很高且具有較為固定的格式,所以不采用套接字服務(SOKET),改為在WinPcap 驅(qū)動基礎上發(fā)送或接收自定義的數(shù)據(jù)包。該數(shù)據(jù)包格式繞過TCP 和IP 協(xié)議,對傳統(tǒng)的格式進行大量簡化,它只需設計數(shù)據(jù)物理層與鏈路層,極大地降低了FPGA 端協(xié)議解析的復雜度[4]。
WinPcap 是應用于Windows 平臺的一種可以實現(xiàn)數(shù)據(jù)包捕獲與網(wǎng)絡分析的體系結(jié)構。Windows 平臺的應用程序可以通過WinPcap 直接訪問網(wǎng)絡中的“原始”數(shù)據(jù)包,即沒有被網(wǎng)絡協(xié)議處理、操作系統(tǒng)使用過的數(shù)據(jù)包[5]。WinPcap 可以提供的功能有:捕獲原始數(shù)據(jù)包,即在共享網(wǎng)絡上各主機發(fā)送和接收的數(shù)據(jù)包;在網(wǎng)絡上發(fā)送自定義的數(shù)據(jù)包;在接收到數(shù)據(jù)包發(fā)送到應用程序之前按自定義規(guī)則過濾某些特殊的數(shù)據(jù);收集網(wǎng)絡通信中的統(tǒng)計信息。由于具有上述功能,WinPcap 在網(wǎng)絡信息內(nèi)容掃描、網(wǎng)絡安全工具、流量控制、通信安全日志記錄、網(wǎng)絡信息監(jiān)控、協(xié)議分析及網(wǎng)絡技術等方面有著非常廣泛的應用。目前主流的數(shù)據(jù)包捕獲軟件如Sniffit 嗅探器、Ethereal、Windump 以及ARPSniffer 等都采用了WinPcap 技術。
由于WinPcap 獨立于主機協(xié)議來發(fā)送和接收原始數(shù)據(jù)包。它不能阻塞、過濾和控制其他應用程序數(shù)據(jù)包的發(fā)送與接收,僅僅只是監(jiān)聽共享網(wǎng)絡上的數(shù)據(jù)包。因此利用WinPcap 驅(qū)動程序發(fā)出的數(shù)據(jù)包不含有TCP 頭和IP 頭,只含有MAC 地址及數(shù)據(jù),簡化了FPGA 硬件上的數(shù)據(jù)幀格式解析。
所有類型的以太網(wǎng)都有統(tǒng)一的幀結(jié)構:前同步碼、幀首界定符、目的MAC 地址、源MAC 地址、類型/長度、數(shù)據(jù)和填充、幀校驗序列。采用WinPcap驅(qū)動編程,F(xiàn)PGA 端數(shù)據(jù)幀格式類似802.3 協(xié)議的以太網(wǎng)格式,但沒有TCP 頭和IP 頭等協(xié)議開銷,具體如表1所示。
表1 自定義數(shù)據(jù)幀格式
PC 端收發(fā)網(wǎng)口數(shù)據(jù)包時,前同步碼、幀首界定符、幀校驗由網(wǎng)卡自行處理。FPGA 端處理網(wǎng)口數(shù)據(jù)包,則要按表1 格式處理。
2.1.1 數(shù)據(jù)接收過程
雷達顯示系統(tǒng)的界面是在VC 環(huán)境下進行的。雷達接收機收到雷達信號,經(jīng)過信號轉(zhuǎn)換電路處理后,經(jīng)A/D 轉(zhuǎn)換送到采集板的FPGA 中,在FPGA 中經(jīng)過信號預處理后通過網(wǎng)線發(fā)送到PC 機網(wǎng)卡。本系統(tǒng)一周雷達數(shù)據(jù)分為2048 個方位,每個方位768 個距離點。WinPcap 對數(shù)據(jù)鏈路層進行監(jiān)聽,當有符合用戶要求的數(shù)據(jù)包到達時,WinPcap 接收數(shù)據(jù)包提交給用戶的應用程序,其接收數(shù)據(jù)流程如圖2所示。
圖2 WinPcap 捕獲數(shù)據(jù)包流程
首先是獲取連接的網(wǎng)絡設備列表。WinPcap 通過pcap_findalldevs()函數(shù)實現(xiàn),獲取網(wǎng)絡設備信息后,再使用pcap_open()函數(shù)來打開選定的網(wǎng)絡設備,用戶可以根據(jù)實際要求設定限定條件捕獲符合要求的數(shù)據(jù)包。WinPcap 編譯并設置過濾規(guī)則,然后就可以對數(shù)據(jù)包進行捕獲,當捕獲動作結(jié)束后,需要釋放設備和關閉庫。
2.1.2 數(shù)據(jù)發(fā)送過程
發(fā)送流程如圖3所示,流程前兩步與接收數(shù)據(jù)包相同,第三步初始化數(shù)據(jù)包,用戶根據(jù)自己需要定義和封裝數(shù)據(jù)包。封裝完成后調(diào)pcap_sendpacket()函數(shù)將該數(shù)據(jù)發(fā)送出去,然后釋放網(wǎng)絡設備。FPGA 收到指令后對數(shù)據(jù)包進行解析,然后根據(jù)設定指令對雷達進行控制。
當應用程序收到雷達回波數(shù)據(jù),由于回波數(shù)據(jù)量大并且圖像刷新頻率很高,采用Windows 的GDI繪圖往往達不到速度要求,而且會出現(xiàn)閃爍及丟幀現(xiàn)象[7]。因此采用直接對顯存進行操作的方法,本設計我們采用圖形硬件的軟件接口OpenGL 來完成雷達圖像實時顯示。
本系統(tǒng)不僅要顯示雷達圖像,同時還要對雷達圖像進行處理、對雷達狀態(tài)進行控制??紤]到實際航海雷達界面布局,我們將主窗口分為兩部分:圖像顯示區(qū)、圖像處理與控制區(qū)。圖像顯示區(qū)基于CView 類,顯示雷達原始視頻信號、目標船舶信息,以及方位線、刻度盤、距離環(huán)等輔助信息。圖像處理與控制區(qū)基于CFormView 類,實現(xiàn)對雷達圖像的顯示控制,慢累積、濾波,偏心、余輝顯示、雷達狀態(tài)控制等,如圖4、圖5、圖6所示。
圖3 WinPcap 發(fā)送數(shù)據(jù)包流程
圖4 船用雷達顯示系統(tǒng)界面
圖5 船用雷達原始回波圖
圖6 信號處理后船用雷達回波圖
2.3.1 WinPcap 性能優(yōu)化
提高基于WinPcap 的雷達顯示系統(tǒng)性能是充分發(fā)揮該系統(tǒng)功能的必要條件。從應用開發(fā)的角度考慮,系統(tǒng)結(jié)構設計、緩沖區(qū)的運用、多線程的運用、編程代碼的優(yōu)化等都會一定程度上提高系統(tǒng)整體性能。本系統(tǒng)采用多線程設計,單獨開辟一個線程用于實時讀取網(wǎng)卡數(shù)據(jù)存入內(nèi)存,主線程用于圖像顯示及人機交互。同時通過調(diào)整用戶級緩存來緩解應用程序讀取緩沖區(qū)的數(shù)據(jù)和網(wǎng)絡數(shù)據(jù)到來之間的速度差異。
2.3.2 坐標轉(zhuǎn)換
雷達回波信號為極坐標形式,顯示器顯示信號是通過直角坐標來顯示的。極坐標到直角坐標的轉(zhuǎn)換過程實際上是映射關系。直角坐標點數(shù)在固定大小平面內(nèi)是固定的,而極坐標由于角度與半徑不同卻存在很大的差異,因此這種映射不能一一對應,于是就產(chǎn)生了漏點和重點[8]。本系統(tǒng)采用優(yōu)化查表法來去除漏點和重點,其核心思想是一次尋址得到一個或多個直角坐標的值。同時查找表只記錄了0° ~45°極坐標到直角坐標的轉(zhuǎn)換,其他轉(zhuǎn)換通過映射、查表法和轉(zhuǎn)換處理完成,極大地縮減了查找表存儲空間。
本文重點研究了船用雷達顯示系統(tǒng)中采集卡和PC 機之間高速數(shù)據(jù)傳輸?shù)膶崿F(xiàn),有效降低了船用雷達硬件成本。文中所設計的顯示系統(tǒng)選擇Windows 7 作為系統(tǒng)平臺,利用Visual Studio2010 進行開發(fā),已經(jīng)成功應用于某型船用雷達設備研發(fā)、測試。能夠?qū)崟r、動態(tài)地顯示雷達探測范圍內(nèi)的所有目標,系統(tǒng)穩(wěn)定。
[1]劉玉和.高分辨率雷達顯控系統(tǒng)設計[D].西安:西安電子科技大學,2011.
[2]田聰.雷達信號采集存儲與傳輸系統(tǒng)設計[D].西安:西安電子科技大學,2012.
[3]王力超.基于Winpcap 和Visual C++的局域網(wǎng)監(jiān)聽實驗[J].實驗室研究與探索,2006,12:189-190.
[4]王勝杰,王建.基于千兆以太網(wǎng)的PC 機與FPGA 的高速數(shù)據(jù)傳輸[J].信息技術,2011(8):156-158.
[5]呂雪峰,彭文波,宋澤宇.網(wǎng)絡分析技術揭秘原理、實踐與WinPcap 深入解析[M].北京:機械工業(yè)出版社,2012.
[6]張偉,王韜,潘艷輝.基于WinPcap 的數(shù)據(jù)包捕獲及應用[J].計算機工程與設計,2008,(7):1649-1651.
[7]張鑫.雷達圖像顯示處理[D].大連:大連海事大學,2011.
[8]李宏波,李浩,張可.基于FPGA 的脈沖雷達成像研究與實現(xiàn)[J].火控雷達技術,2011,40(3):61-64.