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