?

ADS-B信號實時生成軟件設計與實現

2020-11-17 06:56胡鐵喬任志杰
計算機工程與設計 2020年11期
關鍵詞:參數設置磁盤緩沖區

胡鐵喬,任志杰

(中國民航大學 天津市智能信號與圖像處理重點實驗室,天津 300300)

0 引 言

廣播式自動相關監視(ADS-B)信號源是ADS-B接收機研制過程中不可缺少的測試設備,目前對ADS-B信號源的研究主要有鐘倫瓏等設計的ADS-B接收機自動測試系統[1]和王婷琦等設計的ADS-B信號發生器[2]。上述ADS-B信號源均是采用上位機配合下位機的方式實現,上位機是計算機或帶有顯示終端的嵌入式設備,負責生成已知功率、多普勒頻移的ADS-B數據,下位機是數據編碼、信號調制、數模轉換與上變頻等模塊,根據上位機提供的ADS-B數據生成對應的ADS-B射頻信號。由于這類設備的下位機不僅涉及FPGA和單片機軟件開發,還涉及到PCB電路板硬件設計,導致開發周期太長。此外,該類設備一旦定型,后期增加功能需要涉及硬件層面的改動,導致其可擴展性較差。

本文采用CPU+GPU異構平臺[3],通過計算機編程生成ADS-B數字中頻信號,以Google Earth作為地理信息系統,針對CPU串行執行程序較慢問題,采用CUDA技術利用GPU進行加速來實時生成數字中頻信號,通過DA卡將數字中頻信號轉換為對應頻率的模擬中頻信號。該方法使得DA轉換器盡可能靠近天線端,將更多的任務以軟件編程的方式來實現,以這種方式設計出來的系統涉及到的硬件電路較少,具有高度的靈活性與開放性,僅僅通過軟件編程就可以增加新的功能,使得系統的可擴展性增強。

1 軟件設計方法

ADS-B信號實時生成軟件包括參數設置模塊、信號生成模塊、數據保存模塊和顯示模塊,軟件能夠根據設定的參數生成采樣率為80 MHz的ADS-B數字中頻信號,使用采樣率為80 MHz的DA卡即可將其回放為與設定功率、頻率對應的ADS-B模擬中頻信號。ADS-B信號實時生成軟件框架如圖1所示。

圖1 ADS-B信號實時生成軟件框架

1.1 參數設置模塊

根據軟件功能確定需要設置的參數,其中ADS-B信號參數包括功率和多普勒頻移;航跡參數包括飛機的航跡類型、飛機架數和飛機高度;衛星參數包括星下點坐標、軌道高度和軌道傾角。使用MFC的按鈕、編輯框、組合框等控件類為各個參數添加相應的控件,實現在參數設置界面調整各個參數的功能。

1.2 信號生成模塊

信號生成模塊是ADS-B信號實時生成軟件的核心。根據上述參數設置模塊中航跡設置與衛星設置的參數,可以生成基于KML語法的航跡數據與衛星天線覆蓋范圍數據。根據信號設置設定的參數,可以生成與之對應的ADS-B信號或載波。當信號參數中的功率模擬方式選擇真實功率時,根據當前時刻飛機與接收天線的距離,通過地空通信鏈路損耗模型來計算這一時刻信號的功率;功率模擬方式選擇固定功率時,通過參數設置界面輸入一個固定的功率值,該方式生成的每一條ADS-B信號的功率大小均為設定的功率。當信號參數中的頻移模擬方式選擇真實頻移時,通過多普勒頻移計算公式計算信號的多普勒頻移,該方式模擬的多普勒頻移由當前時刻飛機與接收機天線的徑向速度決定;頻移模擬方式選擇固定頻移時,通過參數設置界面輸入一個固定的頻移值,該方式生成的每一條ADS-B信號的頻移大小均為設定的頻移。最后,將生成的ADS-B基帶信號結合上述得出的功率與頻移,生成ADS-B數字中頻信號或者頻偏和功率與ADS-B數字中頻信號相同的載波。

1.3 數據保存模塊

在設定好衛星參數后,軟件將生成的衛星天線覆蓋范圍數據以KML語法格式保存到KML文件中,用于Google Earth顯示天線覆蓋范圍。在生成當前1 s的ADS-B數字中頻信號之前,軟件將該秒的航跡信息以KML語法保存到KML文件中,用于Google Earth顯示當前時刻飛機航跡。軟件每生成1 s時長的ADS-B數字中頻信號之后便執行一次寫磁盤操作,將緩沖區中的ADS-B數字中頻信號寫入到DAT文件中,當下一秒的信號生成完畢直接將緩沖區中之前的數據覆蓋,這樣只需開辟兩個1 s時長信號占用大小的緩沖區(因為寫磁盤部分用到乒乓操作,所以需要兩個緩沖區),有利于軟件在內存較小的平臺上進行部署。

1.4 顯示模塊

根據ADS-B數據內容,將仿真的飛機以及相關信息顯示在界面中,通過Google Earth COM API將Google Earth嵌入到本系統中作為地理信息系統,以KML文件為媒介實現航跡可視化,使得人機交互更為容易。

1.5 系統工作流程

ADS-B信號實時生成軟件系統流程如圖2所示,該軟件能夠實時完成4個通道ADS-B數字中頻信號的生成與存盤,后續使用DA卡把生成的4個通道數字中頻信號回放為4路模擬中頻信號,經過上變頻器將模擬中頻信號上變頻為1090 MHz的射頻信號。

圖2 ADS-B信號實時生成軟件系統流程

2 關鍵模塊實現方法

2.1 多普勒頻移與功率模擬

飛機距離接收機的遠近會影響飛機廣播的ADS-B信號到達接收機天線端的功率大小,為了模擬接收機天線覆蓋范圍內不同距離的飛機發出的ADS-B信號,本文設計的ADS-B信號模擬軟件可以調節信號的發射功率。在移動通信中特別是高速運動狀態下,發射端與接收端之間徑向速度的改變會使天線接收的信號頻率發生變化,稱為多普勒效應[4],多普勒效應引起的頻移稱為多普勒頻移。飛機與星載ADS-B接收機的相對速度很大,導致信號的多普勒頻移較明顯,因此需要對ADS-B信號的多普勒頻移進行模擬[5]。

2.1.1 直接數字式頻率合成器

直接數字式頻率合成器(direct digital synthesizer)的英文縮寫為DDS,DDS技術是一種經典的頻率合成方法。由于DDS技術采用全數字化實現,便于集成,且性能良好,DDS設備日益受到重視,在通信領域中已得到廣泛的應用[6]。本文中信號功率與頻偏的模擬通過DDS來實現。

DDS由相位累加器、正弦ROM表、DA轉換器及低通濾波器構成。在時鐘脈沖的控制下,相位累加器以頻率控制字K為步長進行累加得到相應的相碼,相碼尋址ROM查找表進行相碼-幅碼變換輸出不同的幅度編碼,再經過DA轉換器得到對應的階梯波,最后經低通波器進行濾波平滑,得到受頻率控制字控制的連續變化的輸出波形。DDS各個變量之間的數學關系如下

(1)

(2)

式中:fout為待生成的信號頻率,fclk為時鐘頻率,N為相位累加器的位寬,K為對應fout的頻率控制字,Δf為頻率分辨率。本文中fclk為80 MHz,N設定為28,由式(2)可知Δf為0.298 Hz。

為了避免ROM查找表耗費存儲資源過多的問題,將相位累加器的高10位用于尋址ROM查找表,這樣ROM查找表也只需要10位就可以存儲正弦波一個周期的信息。

2.1.2 多普勒頻移模擬

本文中的頻移以10 MHz為中心頻率,故由式(1)可以得出10 MHz的頻率控制字K10MHz,引入KDpl作為多普勒頻移的頻率控制字,各變量之間的數學關系如下

(3)

(4)

式中:fDpl為多普勒頻移,軟件執行過程中把通過真實頻移或固定頻移方式模擬的多普勒頻移傳遞給fDpl,將fDpl代入到式(4)可得出KDpl。DDS的相位累加器在時鐘脈沖的驅動下以K10MHz+KDpl的步長進行累加,當相位累加器累加滿時就完成了一個周期動作,該周期對應的頻率就是疊加上多普勒頻移的信號頻率。

通過上述方法可以模擬出由飛機與接收機相對速度導致的多普勒頻移,多普勒頻移模擬關鍵代碼如下:

short Amp_V=GetAmpDat(Amp_dBm);

int tmp1,tmp;

shift_r=phaAddWidth-10;

phase_inc_Dpl=round(DopplerShift*phase_inc_1 Hz);

phase_adder=0;

for(int i=0;i

{

phase_adder=phase_adder+phase_inc_10MHz+phase_inc_Dpl;

tmp1=round(phase_adder/(pow(2,shift_r)));

tmp=tmp1%1024;

Sin_out[i]=Amp_V*Sin_ROM[tmp];

}

2.1.3 功率模擬

真實功率模擬方式是通過建立地空通信鏈路損耗模型來實現信號功率模擬,根據地空通信鏈路損耗公式可以計算信號到達接收機天線端功率值

Pr=PT+GT+GR-Ld-Ls

(5)

式中:Pr(單位dBm)是ADS-B接收機接收到的信號功率值,PT(單位dBm)是信號發射功率,GT是發射天線增益,設定為3 dB;GR是接收天線增益,設為8 dB;Ld(單位dB)是自由空間傳播損耗,Ls是大氣、云、雨、霧吸收損耗,此外,發射天線、接收天線損耗設為6 dB。

對于自由空間損耗Ld,有公式

Ld=32.44+20lgd+20lgf

(6)

d(單位km)表示發射天線與接收天線的距離,f(單位MHz)表示載波頻率,這里取1090 MHz。這樣就實現在軟件中根據飛機與接收機的距離,模擬出信號經衰減后到達接收機的功率大小。

ADS-B信號實時生成軟件生成的數字中頻信號最終要通過DA卡將其回放為模擬中頻信號。數字中頻信號的存放格式由DA卡決定,以8個通道為例,從通道1到通道8,每通道依次存放8個點(short類型)。DA卡中頻數據格式如圖3所示。

圖3 DA卡中頻數據格式

圖3中每個點都是一個short類型的數值,該數值越大對應回放后的電壓越高。建立分貝毫瓦到電壓的映射表,使用真實功率或者固定功率方式模擬的功率值通過查表的方式可以得到一個介于-32767~32767之間short類型的數值,2.1.2小節代碼段中Amp_V即為查表后的數值,該數值對應經DA卡回放后ADS-B模擬中頻信號的電壓值。

2.2 中頻信號生成

軟件首先生成每駕飛機的航跡數據,包括空中位置、地面位置、空中速度、飛行器身份和類型、飛行器運行狀況、目標狀況與狀態、測試數據共7種類型的數據以及飛機當前發射信號的功率與頻移,并將其存儲到每駕飛機的航跡數據結構體中。根據RTCA-DO260B中規定的各種報文的編碼方法,將以上7種數據編碼為對應的7種ADS-B報文。

一幀基帶ADS-B信號的長度為120 bit,包括由4個前導脈沖構成的8 bit報頭和112 bit的數據域[7]。4個前導脈沖時間起點分別為0.0 μs、1.0 μs、3.5 μs、4.5 μs,每個脈沖持續時長為0.5 μs。數據位采用脈沖位置調制,每個碼元的持續時長為1 μs。在1 μs碼元時長內若前0.5 μs為脈沖,后0.5 μs為零電平,表示碼元為1,若前0.5 μs為零電平,后0.5 μs為脈沖,表示碼元為0,112個碼元構成一條ADS-B報文。由一幀ADS-B基帶信號生成中頻信號程序流程如圖4所示。

圖4 生成一條ADS-B中頻信號程序流程

2.3 CUDA加速

基于通用計算機平臺的ADS-B信號源具有較好的靈活性與可擴展性等優點,但是在CPU上串行執行的程序運行速度太慢,特別是在數據量比較大的場景下這種問題更加明顯[8]。CUDA是NVIDIA公司推出的一種通用并行計算架構,該架構使GPU能夠解決復雜的計算問題[9]。文中將耗時較長的部分利用CUDA技術在GPU上并行化,實現ADS-B中頻信號生成與存盤的實時性。

ADS-B信號實時生成軟件中耗時最多的是信號調制和寫磁盤部分,其中信號調制部分主要是數據的搬移,屬于數據密集型操作,所以對這部分進行數據搬移優化。首先將生成4個通道的ADS-B數據分別存儲在4個長為80000000的數組中,之后將4個數組的數據按照DA卡回放格式搬移到一個數組中用來寫到磁盤。采用CPU完成這項工作時,需要執行80000000*4個數據搬移操作,這種方式耗時長,無法達到實時生成信號的要求。

采用CUDA編程對上面數據搬移部分進行優化,使用GPU強大的并行能力來加速程序的執行。具體步驟如下:

(1)分配顯存空間;

(2)將主機端生成的1 s時長4個通道的ADS-B信號存儲到顯存空間;

(3)配置并啟動核函數,將4個通道的ADS-B信號按照DA卡讀數據格式搬移到一個緩沖區中;

(4)將顯卡緩沖區中搬移后的數據拷貝到主機端寫磁盤緩沖區中。

主機端與設備端交換的數據量比較大導致拷貝占用的時間比較長。CUDA運行時提供了cudaHostAlloc()函數分配頁鎖定內存,GPU可以直接與主機端的物理內存交換數據,使拷貝操作比可分頁內存性能高2倍,頁鎖定內存使用cudaFreeHost()進行內存釋放。

2.4 多線程與乒乓操作

寫磁盤部分采用多線程和乒乓操作技術實現,生成當前秒數據的同時,往磁盤寫上1 s已經生成好的數據,這樣就利用了生成數據與寫磁盤二者中耗時較長的時間隱藏了耗時較短的那部分時間,提升軟件工作的速度。乒乓操作是一種常用于數據流控制的處理方法,特點是創建“緩沖區1”和“緩沖區2”兩個緩沖區,通過輸入數據選擇單元和輸出數據選擇單元按節拍、相互配合的切換,將經過緩沖的數據流不斷傳輸到數據流運算處理模塊[10]。

通過創建WriteDisk1與WriteDisk2兩個線程分別將“緩沖區1”與“緩沖區2”中的數據寫入到磁盤中。為了避免兩個線程在寫磁盤時同時操作文件指針而導致數據競爭問題[11],本文采用互斥鎖來完成兩個線程間的通信[12,13]。當WriteDisk1開始操作文件指針時,會上鎖避免其它線程對該文件指針的操作,WriteDisk1寫磁盤結束后開鎖釋放對文件指針的使用權;同理,當WriteDisk2開始操作文件指針時,會上鎖避免其它線程對該文件指針的操作,WriteDisk2寫磁盤結束后開鎖釋放對文件指針的使用權。

在本文中按1 s為單位生成ADS-B信號,故乒乓操作中的緩沖周期設定為1 s。生成4個通道數據時,每通道數據長度是80000000,故“緩沖區1”和“緩沖區2”的長度是80000000*4。在第1秒時,數據生成完畢后,顯卡將當前1 s的4個通道數據通過并行的方式整合到顯存中一個長度為80000000*4的數組中,通過拷貝函數將顯存內數據拷貝到主機內存“緩沖區1”中并啟動WriteDisk1將“緩沖區1”中的數據寫到磁盤,在WriteDisk1進行寫磁盤時,主線程開始生成第2秒數據,數據生成完畢后,通過拷貝函數將顯存內數據拷貝到主機內存“緩沖區2”中并啟動WriteDisk2將“緩沖區2”中的數據寫到磁盤,在WriteDisk2進行寫磁盤時,主線程開始生成第3秒數據,依次循環下去。

2.5 地圖背景與航跡顯示

Google Earth是谷歌公司旗下的一款虛擬地球軟件,本軟件平臺使用Google Earth作為航跡顯示的地圖背景,通過調用Google Earth COM API將Google Earth嵌入進目標工程。使用CApplicationGE類的GetMainHwnd函數獲取Google Earth的主窗口句柄,使用CApplicationGE類的GetRenderHwnd函數獲取Google Earth的地圖窗口句柄。在分別獲取這兩個窗口句柄之后,將Google Earth的地圖窗口的父容器改變為本軟件的主窗口,并將Google Earth的主窗口隱藏掉,實現了將Google Earth嵌入到本軟件平臺[14]。本軟件平臺周期性的將飛機的位置、速度、高度等信息進行更新并寫到航跡KML文件中,周期性的對航跡KML文件進行加載,實現了飛機航跡的實時更新。在每一次設置波束參數后對波束KML文件進行更新并將其加載到Google Earth中實現對星載接收機天線覆蓋范圍的顯示。

3 實驗結果及分析

ADS-B信號實時生成軟件實驗平臺是Intel Xeon E5-2640 CPU的PC機,GPU采用NVIDIA GeForce GTX TITAN BLACK,操作系統是Windows 7,開發環境是Microsoft Visual Studio 2012加裝CUDA9.0,使用MFC開發人機交互界面。

ADS-B信號實時生成軟件界面包括參數設置菜單欄、快捷工具欄、三維顯示窗體3部分,參數設置菜單欄包括衛星參數設置、航路參數設置、生成航跡等主要功能菜單,快捷工具欄包括開始/停止按鈕、仿真時間控件、地圖放大縮小按鈕等使用頻率較高的一些功能控件,三維顯示窗體用來顯示地圖背景、航跡等內容。軟件啟動界面如圖5所示。

圖5 軟件啟動界面

通過ADS-B信號實時生成軟件中參數設置模塊來設置模擬參數,衛星參數設置為多波束類型,信號通道個數為4,航跡類型設置為繞圈飛行,為了方便觀察,飛機架數設置為每通道50架,內圈外圈各25架,軟件仿真航跡效果如圖6所示。將軟件生成的ADS-B數字中頻信號經過DA卡回放,輸出到示波器觀察信號波形如圖7所示,圖7(a)是截取的一幀完整的ADS-B信號波形,圖7(b)是幀頭局部放大,顯示結果與 2.2節中描述的ADS-B信號特征相符。

圖6 軟件仿真航跡效果

圖7 ADS-B信號波形截圖

為了進一步驗證軟件所生成信號的準確性,將所生成的ADS-B數字中頻信號經過DA卡和上變頻器后通過天線輻射出去,使用Kinetic公司的SBS-3接收機進行接收,經過解碼后的航跡如圖8所示,圖中外面4個圓形航跡為ADS-B信號實時生成軟件所發信號,中心的航跡為天津濱海機場上空真實飛機的航跡。

圖8 SBS-3接收機接收解碼航跡

3.1 功率與頻偏測試

ADS-B信號是脈沖信號,而頻譜分析儀無法直接對脈沖信號進行測量,本軟件具有輸出連續波功能,可以輸出與當前ADS-B信號相同功率與多普勒頻移的載波,這樣就可以使用頻譜分析儀測量載波的功率與頻移獲取ADS-B信號的功率與頻移。

3.1.1 功率測試

當軟件設定發送功率為-60 dBm,多普勒頻移為0 Hz,輸出設定為連續波,將生成的信號經DA卡回放后輸出到頻譜儀,頻譜儀測試功率結果如圖9所示。

圖9 頻譜儀測試功率結果

3.1.2 頻偏測試

當軟件設定發送功率為-60 dBm,多普勒頻移為1000 Hz,輸出設定為連續波,將生成的信號經DA卡回放后輸出到頻譜儀,頻譜儀測試頻偏結果如圖10所示。

圖10 頻譜儀測試頻偏結果

3.2 加速比測試

為了驗證ADS-B信號實時生成軟件生成ADS-B信號的實時性,分別對該軟件的CPU版本與CPU+GPU異構版本進行測試,設定每波束模擬250架飛機,仿真時長設定30 s,使用計時函數計算每秒內生成信號并存盤的耗時,最后求取每秒內生成信號并存盤耗時的平均值,比較兩種版本的軟件生成并存儲不同波束個數ADS-B信號每秒耗時的平均值。兩種軟件版本生成1 s數據耗時平均值對比見表1,當波束數量大于等于2時加速比穩定在6倍左右,當模擬4個波束共1000架飛機時,能夠在1 s內完成當前1 s時長信號的生成與存盤,達到了實時生成ADS-B信號的要求。

表1 兩種軟件版本耗時對比

4 結束語

本文針對當前ADS-B信號源涉及到的硬件系統復雜導致開發周期長、功能可擴展性弱的問題設計開發了ADS-B信號實時生成軟件。本軟件實現了ADS-B信號源的基本功能,一方面采用DDS技術實現了信號功率與多普勒頻移的模擬;另一方面通過CUDA編程和乒乓操作,實現了ADS-B數字中頻信號的實時生成與存儲。此外,通過Google Earth COM API將谷歌地球嵌入到本軟件中作為地理信息系統,增強了人機交互界面的友好性。測試結果表明,通過該方法設計開發的ADS-B信號生成軟件運行效果良好,能夠實時生成并存儲ADS-B數字中頻信號,為進一步擴展為多類型信號生成軟件平臺提供基礎。

猜你喜歡
參數設置磁盤緩沖區
葉臘石聚合成型及其旋轉磁盤的制作方法
它的好 它的壞 詳解動態磁盤
解決Windows磁盤簽名沖突
Windows系統下動態磁盤卷的分析與研究
逃生疏散模擬軟件應用
蟻群算法求解TSP中的參數設置
一類裝配支線緩沖區配置的兩階段求解方法研究
RTK技術在放線測量中的應用
關鍵鏈技術緩沖區的確定方法研究
基于STM32處理器的大棚溫濕度監控系統設計
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合