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