簡介
在MATLAB或Simulink?中實現(xiàn)信號處理算法之后,合乎邏輯的下一步是利用從實際要使用的SDR硬件平臺獲得的真實數(shù)據(jù)驗證算法的功能。首先是利用從系統(tǒng)獲得的不同輸入數(shù)據(jù)集來驗證算法。這樣做有助于驗證算法的功能,但不能保證算法在其它環(huán)境條件下也能像預期那樣工作,也不能確定對于SDR系統(tǒng)模擬前端和數(shù)字模塊的不同設(shè)置,算法的行為和性能會如何。為了驗證所有這些方面,如果能讓算法在線運行以接收實時數(shù)據(jù)作為輸入,并且調(diào)整SDR系統(tǒng)設(shè)置以實現(xiàn)最佳性能,將是非常有好處的。本系列文章的這一部分討論ADI公司提供的軟件工具,其支持MATLAB和Simulink模型與FMCOMMSx SDR平臺直接互動;此外還會說明如何利用這些工具驗證第二部分所述的ADS-B模型。
MATLAB和Simulink IIO系統(tǒng)對象
ADI公司提供了完整的軟件基礎(chǔ)設(shè)施來支持MATLAB和Simulink模型與FMCOMMSx SDR平臺(其連接到運行Linux的FPGA/SoC系統(tǒng))實時互動。這之所以可能,有賴于IIO System Object?3(系統(tǒng)對象),它設(shè)計用于通過TCP/IP與硬件系統(tǒng)交換數(shù)據(jù),從而發(fā)送(接收)數(shù)據(jù)至(自)目標,控制目標的設(shè)置,并監(jiān)測RSSI等不同目標參數(shù)。圖1顯示了該軟件基礎(chǔ)設(shè)施的基本架構(gòu)以及系統(tǒng)組件之間的數(shù)據(jù)流。
?
圖1. 軟件基礎(chǔ)設(shè)施框圖
IIO系統(tǒng)對象基于MathWorks系統(tǒng)對象規(guī)范4,其公開了數(shù)據(jù)和控制接口,MATLAB/Simulink模型通過這些接口與基于IIO的系統(tǒng)通信。這些接口在一個配置文件中指定,配件文件將系統(tǒng)對象接口鏈接到IIO數(shù)據(jù)通道或IIO屬性。這樣便可實現(xiàn)通用型IIO系統(tǒng)對象,只需修改配置文件,它便能配合任何IIO平臺工作。ADI GitHub庫5提供了一些平臺的配置文件和示例,包括AD-FMCOMMS2-EBZ/AD-FMCOMMS3-EBZ/AD-FMCOMMS4- EBZ/AD-FMCOMMS5-EBZ SDR板和高速數(shù)據(jù)采集板AD-FMCDAQ2-EBZ。IIO系統(tǒng)對象與目標之間的通信是通過libiio服務(wù)器/客戶端基礎(chǔ)設(shè)施來完成。服務(wù)器運行于Linux下的嵌入式目標上,管理目標與本地/遠程客戶端之間的實時數(shù)據(jù)交換。libiio庫是硬件低層細節(jié)的抽象,提供了簡單但完整的編程接口,可用于綁定各種語言(C、C++、C#、Python)的高級項目。
本文接下來將通過一些實際例子說明如何利用IIO系統(tǒng)對象來驗證ADS-B MATLAB和Simulink模型。一個連接到ZedBoard7且運行Analog Devices Linux發(fā)行版的AD-FMCOMMS3-EBZ SDR平臺6用作SDR硬件平臺,以驗證ADS-B信號檢測與解碼算法是否正常工作,如圖2所示。
?
圖2. ADS-B算法驗證的硬件設(shè)置
利用IIO系統(tǒng)對象驗證MATLAB ADS-B算法
為了利用從AD-FMCOMMS3-EBZ SDR平臺獲得的實時數(shù)據(jù)驗證MATLAB ADS-B解碼算法,開發(fā)了一個MATLAB腳本來執(zhí)行如下操作:
根據(jù)用戶輸入計算地球帶
創(chuàng)建并配置IIO系統(tǒng)對象
通過IIO系統(tǒng)對象配置AD-FMCOMMS3-EBZ模擬前端和數(shù)字模塊
利用IIO系統(tǒng)對象從SDR平臺接收數(shù)據(jù)幀
檢測并解碼ADS-B數(shù)據(jù)
顯示解碼的ADS-B信息
構(gòu)建IIO系統(tǒng)對象之后,必須利用SDR系統(tǒng)的IP地址、目標設(shè)備名稱、輸入/輸出通道的大小和數(shù)目對其進行配置。圖3給出了一個創(chuàng)建并配置MATLAB IIO系統(tǒng)對象的例子。
?
圖3. MATLAB IIO系統(tǒng)對象的創(chuàng)建和配置
然后,利用IIO系統(tǒng)對象設(shè)置AD9361屬性并接收ADS-B信號。AD9361屬性基于以下考量而設(shè)置:
?
圖4. MATLAB libiio設(shè)置AD9361屬性
利用基于AD9361的平臺,采樣速率相當容易確定。發(fā)送數(shù)據(jù)速率一般等于接收數(shù)據(jù)速率,最終取決于基帶算法。本例中,解碼算法是針對12.5 MSPS的采樣速率而設(shè)計,AD9361采樣速率據(jù)此設(shè)置。這樣,接收到的樣本便可直接應(yīng)用于解碼算法,無需其它抽取或插值操作。
RF帶寬控制設(shè)置AD9361 RX模擬基帶低通濾波器的帶寬,以提供抗混疊和帶外信號抑制。為了成功解調(diào)收到的信號,系統(tǒng)必須最大程度地提高信噪比 (SNR)。因此,在滿足平坦度和帶外抑制要求的同時,RF帶寬必須設(shè)置得盡可能窄,以使帶內(nèi)噪聲和雜散信號電平最小。如果RF帶寬設(shè)置得較寬,ADC線性動態(tài)范圍就會因為額外的噪聲而縮小。同樣,ADC無雜散動態(tài)范圍也會因為較低的帶外信號抑制而縮小,導致接收器的整體動態(tài)范圍縮小。因此,將RF帶寬設(shè)置為最優(yōu)值對于接收所需的帶內(nèi)信號并抑制帶外信號非常重要。通過觀察接收信號的頻譜,我們發(fā)現(xiàn)4 MHz是一個合適的RF帶寬值。
除了通過RF帶寬屬性設(shè)置AD9361的模擬濾波器之外,我們還可以通過IIO系統(tǒng)對象使能AD9361的數(shù)字FIR濾波器以改善解碼性能,如圖5所示。根據(jù)ADS-B信號的頻譜特性,我們設(shè)計一個數(shù)據(jù)速率為12.5 MSPS、通帶頻率為3.25 MHz、阻帶頻率為4 MHz的FIR濾波器。這樣,我們就能進一步聚焦于目標帶寬。
圖5. 通過libiio使能AD9361的適當FIR濾波器
Adsb.ftr文件包含F(xiàn)IR濾波器的系數(shù),該FIR濾波器利用ADI公司AD9361濾波器向?qū)ATLAB應(yīng)用程序設(shè)計8。此工具不僅能完成通用低通濾波器設(shè)計,還能為信號路徑中的其它級提供幅度和相位均衡。
?
圖6. 利用MATLAB AD9361濾波器向?qū)гO(shè)計的用于ADS-B信號的FIR濾波器
多功能且高度可配置的AD9361收發(fā)器具有多種增益控制模式,適合很多不同的應(yīng)用。IIO系統(tǒng)對象的Gain Mode(增益模式)參數(shù)選擇可用模式之一:manual、slow_attack、hybrid和fast_attack。最常用的模式是manual、slow_attack和fast_attack。Manual增益控制模式允許基帶處理器 (BBP) 控制增益。Slow_attack模式主要用于慢速變化的信號,fast_attack模式主要用于"突發(fā)"開啟和關(guān)閉的波形。增益模式在很大程度上取決于接收信號的強度。如果信號太強或太弱,建議使用manual或slow_attack模式。否則,fast_attack是不錯的選擇。ADS-B信號具有突發(fā)性,因此fast_ attack增益模式可實現(xiàn)最佳效果。這種波形要求使用fast_attack模式,因為其存在前同步碼,并且AGC需要以足夠快的速度響應(yīng)以便捕捉第一位。沒有信號時,啟動時間(增益斜坡下降所需的時間)與衰減時間(提高增益所需的時間)存在差異。目標是快速調(diào)低增益,以便能在第一位看到一個有效的1,但不提高位時間之間的增益。
最后,根據(jù)您對TX_LO_FREQ和RX_LO_FREQ的設(shè)置,該模型有兩種使用方式:使用預先捕捉的數(shù)據(jù)(RF回送)和使用從空中獲得的實時數(shù)據(jù)。
預先捕捉數(shù)據(jù)
這種情況下,我們利用AD-FMCOMMS3-EBZ發(fā)送和接收預先捕捉到的一些ADS-B信號。這些信號保存在一個名為"newModeS"的變量中。
?
圖7. 利用預先捕捉的ADS-B信號定義輸入
這種情況要求TX_LO_FREQ = RX_LO_FREQ,它可以是AD-FMCOMMS3-EBZ支持的任意LO頻率值。預先捕捉的數(shù)據(jù)中有大量ADS-B有效數(shù)據(jù),因此,這是驗證硬件設(shè)置是否合適的好方法。
實時數(shù)據(jù)
這種情況下,我們接收空中的實時ADS-B信號,而不是AD-FMCOMMS3-EBZ發(fā)送的信號。根據(jù)ADS-B規(guī)范,它以1090 MHz的中心頻率發(fā)送,因此,這種情況的要求是:
RX_LO_FREQ=1090 MHz,TX_LO_FREQ遠離1090 MHz,以免產(chǎn)生干擾。
在接收側(cè)使用一根適當?shù)?a target="_blank">天線,它能覆蓋1090 MHz頻段,例如ADS-B雙半波移動天線9;使用調(diào)諧不佳或制作不良的天線會導致空中雷達探測距離不夠。
一切設(shè)置妥當之后,使用如下命令便可運行MATLAB模型:
[rssi1,rssi2]=ad9361_ModeS('ip','data source',channel);
其中,ip為FPGA板的IP地址,data source指定接收信號的數(shù)據(jù)源。目前,該模型支持"預先捕捉"的數(shù)據(jù)源和"實時"數(shù)據(jù)源。 Channel指定信號是利用AD-FMCOMMS3-EBZ的通道1還是通道2進行接收。
例如,發(fā)出以下命令時,系統(tǒng)將通過通道2接收預先捕捉的數(shù)據(jù):
[rssi1,rssi2]=ad9361_ModeS('192.168.10.2','pre-captured',2);
在仿真結(jié)束時,您會得到兩個通道的RSSI值以及下表所示的結(jié)果:
?
圖8. 仿真結(jié)束時顯示的結(jié)果表格
此結(jié)果表格顯示了仿真期間出現(xiàn)的航空器信息。借助適當?shù)奶炀€,此模型利用AD-FMCOMMS3-EBZ能夠捕捉并解碼80英里范圍內(nèi)的航空器信號。S模式消息有兩類(56 μs和112 μs),因此,某些消息包含的信息比其它消息要多。
利用實際ADS-B信號測試此模型時,解碼能否成功,信號強度非常重要,務(wù)必把天線放在對準航空器的良好位置上。接收信號強度可通過查看兩個通道的RSSI值來了解。例如,若通過通道2接收信號,通道2的RSSI應(yīng)顯著高于通道1的RSSI。通過查看頻譜分析儀,可以判斷是否存在有用數(shù)據(jù)。
RF信號質(zhì)量
任何RF信號都需要一個質(zhì)量指標。例如,對于QPSK等信號,我們有誤差矢量幅度 (EVM)。對于ADS-B信號,查看分隔器輸出還不足以獲得正確消息,如圖8所示。我們需要一個指標來定義ADS-B/脈沖位置調(diào)制的質(zhì)量,以便判斷哪種設(shè)置更好。
ModeS_BitDecode4.m函數(shù)中有一個變量diffVals,它就可以用作這樣的指標。此變量是一個112 × 1矢量。對于一條S模式消息中的每個解碼位,它都會顯示該位距離閾值有多遠。也就是說,每個解碼位相對于正確判斷有多少裕量。顯而易見,一個位的裕量越大,解碼結(jié)果的置信度就越高。另一方面,若裕量很小,則意味著判斷處于邊緣區(qū),解碼位很有可能是錯誤的。
下面兩幅圖比較了有和沒有FIR濾波器兩種情況下從ADS-B接收器獲得的diffVals值。注意y軸,我們發(fā)現(xiàn),使用FIR濾波器時,無論處于最高點、最低點還是平均值,diffVals都較大。然而,當沒有FIR濾波器時,幾個位的diffVals都非常接近0,意味著解碼結(jié)果可能不正確。因此,我們可以得出結(jié)論,使用適當?shù)腇IR濾波器可改善解碼的信號質(zhì)量。
?
圖9. 使用FIR濾波器時從ADS-B接收器獲得的diffVals值
?
?
圖10. 無FIR濾波器時從ADS-B接收器獲得的diffVals值
采用IIO系統(tǒng)對象的MATLAB ADS-B算法可從ADI GitHub庫下載10。
利用IIO系統(tǒng)對象驗證Simulink ADS-B算法
Simulink模型基于本系列文章第二部分介紹的模型2。解碼器和解碼模塊直接來自該模型,我們增加了Simulink IIO系統(tǒng)對象以開展信號接收和硬件在環(huán)仿真。
原始模型以采樣時間 = 1且?guī)笮?= 1的設(shè)置工作。然而,Simulink IIO系統(tǒng)對象以緩沖模式工作,它會積累若干樣本,然后進行處理。為了讓原始模型配合系統(tǒng)對象工作,我們在其間增加了兩個模塊:解除緩沖以使幀大小 = 1,轉(zhuǎn)換速率以使采樣時間 = 1。這樣,原始模型便可保持不變。
?
圖11. Simulink模型捕捉和解碼ADS-B信號
Simulink IIO系統(tǒng)對象設(shè)置如下。與MATLAB實例相同,它創(chuàng)建一個系統(tǒng)對象,然后定義與此系統(tǒng)對象相關(guān)的IP地址、設(shè)備名稱、輸入/輸出通道數(shù)目和大小。
?
圖12. Simulink IIO系統(tǒng)對象
與IIO系統(tǒng)對象相對應(yīng),此Simulink模塊的輸入輸出端口通過對象模塊的屬性對話框以及目標ADI SDR平臺特定的配置文件來定義。輸入和輸出端口按數(shù)據(jù)和控制端口分類。數(shù)據(jù)端口以幀處理模式發(fā)送(接收)連續(xù)數(shù)據(jù)緩沖至(自)目標系統(tǒng),而控制端口則用于配置和監(jiān)控不同的目標系統(tǒng)參數(shù)。數(shù)據(jù)端口的數(shù)目和大小通過該模塊的配置對話框進行配置,而控制端口則在配置文件中定義。AD9361屬性設(shè)置所依據(jù)的因素與MATLAB模型所述相同。MATLAB模型運用的所有理論和方法在這里都適用。
根據(jù)您對TX_LO_FREQ和RX_LO_FREQ的設(shè)置,Simulink模型有兩種運行模式:使用預先捕捉的數(shù)據(jù)"DataIn"和使用實時數(shù)據(jù)。以預先捕捉的數(shù)據(jù)為例,在仿真結(jié)束時,我們可以在命令窗口中看到如下結(jié)果:
?
圖13. 使用預先捕捉數(shù)據(jù)的仿真結(jié)束時在命令窗口中顯示的結(jié)果
這里的結(jié)果以文本格式顯示,而不像在MATLAB模型中以表格形式顯示。
采用IIO系統(tǒng)對象的Simulink ADS-B模型可從ADI GitHub庫下載11。11
結(jié)論
本文討論了利用ADI公司提供的libiio基礎(chǔ)設(shè)施進行的硬件在環(huán)仿真。采用這種基礎(chǔ)設(shè)施,便可利用實際信號和硬件驗證MATLAB和Simulink ADS-B信號檢測與解碼算法。屬性設(shè)置高度依賴于應(yīng)用和波形,適合一個波形的設(shè)置并不一定適合另一個波形。這是關(guān)鍵的一步,可確保SDR系統(tǒng)的模擬前端和數(shù)字模塊針對目標算法和波形調(diào)諧妥當,并且算法足夠魯棒,對于不同環(huán)境條件下獲得的實際數(shù)據(jù),它都能像預期的那樣處理。有了經(jīng)過驗證的算法之后,便可開始下一步,即利用MathWorks代碼自動生成工具將算法轉(zhuǎn)換為HDL和C代碼,并將此代碼集成到實際SDR系統(tǒng)的可編程邏輯和軟件當中。本系列文章的下一部分將說明如何生成代碼并將其部署到生產(chǎn)硬件中,還會談?wù)勗撈脚_在機場利用實際ADS-B信號運行所獲得的結(jié)果。這樣便介紹完了SDR系統(tǒng)從原型開發(fā)到生產(chǎn)的所有步驟。
參考文獻
1Andrei Cozma、Di Pu和Tom Hill。"快速通往量產(chǎn)的四個步驟:利用基于模型的設(shè)計開發(fā)軟件定義無線電—第一部分"。模擬對話,第49卷第3期,2015年。
2Mike Donovan、Andrei Cozma和Di Pu。"快速通往量 產(chǎn)的四個步驟:利用基于模型的設(shè)計開發(fā)軟件定義無線電—第二部分"?模擬對話,第49卷第3期,2015年。
3ADI公司。"IIO系統(tǒng)對象"。
4MathWorks。"什么是系統(tǒng)對象?"
5ADI公司,"Mathworks_tools"。GitHub庫
6ADI公司。AD-FMCOMMS3-EBZ用戶指南。
7ZedBoard。
8ADI公司。MATLAB AD9361濾波器設(shè)計向?qū)А?/p>
9。
10采用IIO系統(tǒng)對象源代碼的MATLAB ADS-B算法。
11采用IIO系統(tǒng)對象源代碼的Simulink ADS-B模型。
作者
Di Pu [di.pu@analog.com]是ADI公司系統(tǒng)建模應(yīng)用工程師,負責支持軟件定義無線電平臺和系統(tǒng)的設(shè)計與開發(fā)。她與MathWorks密切合作解決雙方共同客戶的難題。加入ADI公司之前,她于2007年獲得南京理工大學 (NJUST) 電氣工程學士學位,于2009年和2013年分別獲得伍斯特理工學院 (WPI) 電氣工程碩士學位和博士學位。她是WPI 2013年博士論文Sigma Xi研究獎獲得者。
Andrei Cozma[andrei.cozma@analog.com]是ADI公司工程設(shè)計經(jīng)理,負責支持系統(tǒng)級參考設(shè)計的設(shè)計與開發(fā)。他擁有工業(yè)自動化與信息技術(shù)學士學位及電子與電信博士學位。他參與過電機控制、工業(yè)自動化、軟件定義無線電和電信等不同行業(yè)領(lǐng)域的項目設(shè)計與開發(fā)。
評論
查看更多