作者:Di Pu and Andrei Cozma
在 MATLAB 或 Simulink 中實(shí)現(xiàn)任何信號處理算法后,下一個自然步驟是使用從將要運(yùn)行的實(shí)際 SDR 硬件系統(tǒng)獲取的真實(shí)數(shù)據(jù)來驗(yàn)證算法的功能。作為第一步,使用從系統(tǒng)捕獲的不同輸入數(shù)據(jù)集完成算法的驗(yàn)證。這有助于驗(yàn)證算法的功能,但不能保證算法在用于進(jìn)行數(shù)據(jù)捕獲的環(huán)境條件以外的環(huán)境條件下按預(yù)期執(zhí)行,也不能保證SDR系統(tǒng)的模擬前端和數(shù)字模塊的不同設(shè)置的行為和性能。為了驗(yàn)證所有這些方面,如果算法可以在線運(yùn)行以接收實(shí)時(shí)數(shù)據(jù)作為輸入并調(diào)整SDR系統(tǒng)的設(shè)置以獲得最佳性能,則非常有益。本系列文章的這一部分討論了ADI公司提供的軟件工具,這些工具允許MATLAB和Simulink模型與FMCOMMSx SDR平臺進(jìn)行直接交互,并展示了如何使用這些工具驗(yàn)證本系列文章第2部分中介紹的ADS-B模型。
MATLAB 和 Simulink IIO 系統(tǒng)對象
ADI公司提供完整的軟件基礎(chǔ)設(shè)施,使MATLAB和Simulink模型能夠與連接到運(yùn)行Linux的FPGA/SoC系統(tǒng)的FMCOMMSx SDR平臺進(jìn)行實(shí)時(shí)交互。這是可能的,因?yàn)镮IO系統(tǒng)對象?3旨在通過 TCP/IP 與硬件系統(tǒng)交換數(shù)據(jù),以便將數(shù)據(jù)流式傳輸?shù)侥繕?biāo)和從目標(biāo)流式傳輸數(shù)據(jù)、控制目標(biāo)的設(shè)置并監(jiān)視不同的目標(biāo)參數(shù)(如 RSSI)。圖 1 顯示了軟件基礎(chǔ)架構(gòu)的高級架構(gòu)以及系統(tǒng)中組件之間的數(shù)據(jù)流。
圖1.軟件基礎(chǔ)設(shè)施框圖。
IIO 系統(tǒng)對象基于 MathWorks 系統(tǒng)對象規(guī)范4并公開數(shù)據(jù)和控制接口,MATLAB/Simulink 模型通過這些接口與基于 IIO 的平臺進(jìn)行通信。這些接口在配置文件中指定,該文件將系統(tǒng)對象接口鏈接到 IIO 數(shù)據(jù)通道或 IIO 屬性。這使得IIO系統(tǒng)對象的實(shí)現(xiàn)具有通用性,允許它僅通過修改配置文件即可與任何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)對象和目標(biāo)之間的通信是通過libiio服務(wù)器/客戶端基礎(chǔ)結(jié)構(gòu)完成的。服務(wù)器在 Linux 下的嵌入式目標(biāo)上運(yùn)行,并管理目標(biāo)與本地和遠(yuǎn)程客戶端之間的實(shí)時(shí)數(shù)據(jù)交換。libiio庫抽象了硬件的低級細(xì)節(jié),并提供了一個簡單而完整的編程接口,可用于具有各種語言綁定(C,C++,C#,Python)的高級項(xiàng)目。
本文的下一部分提供了有關(guān)如何使用 IIO 系統(tǒng)對象驗(yàn)證 ADS-B MATLAB 和 Simulink 模型的真實(shí)示例。AD-FMCOMMS3-EBZ SDR平臺6連接到 ZedBoard7運(yùn)行ADI公司的Linux發(fā)行版用作SDR硬件系統(tǒng),用于驗(yàn)證ADS-B信號檢測和解碼算法的操作,如圖2所示。
圖2.用于 ADS-B 算法驗(yàn)證的硬件設(shè)置。
使用 IIO 系統(tǒng)對象進(jìn)行 MATLAB ADS-B 算法驗(yàn)證
為了利用從AD-FMCOMMS3-EBZ SDR平臺獲取的實(shí)時(shí)數(shù)據(jù)驗(yàn)證MATLAB ADS-B解碼算法操作,我們開發(fā)了一個MATLAB腳本來執(zhí)行以下操作:
根據(jù)用戶輸入計(jì)算地球區(qū)域
創(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 地址、目標(biāo)設(shè)備名稱以及輸入/輸出通道大小和編號對其進(jìn)行配置。圖 3 提供了有關(guān)如何創(chuàng)建和配置 MATLAB IIO 系統(tǒng)對象的示例。
圖3.MATLAB IIO 系統(tǒng)對象創(chuàng)建和配置。
然后使用IIO系統(tǒng)對象設(shè)置AD9361的屬性并接收ADS-B信號。AD9361的屬性基于以下考慮因素進(jìn)行設(shè)置:
圖4.MATLAB libiio設(shè)置AD9361的屬性。
基于AD9361的平臺的采樣速率非常簡單。發(fā)射數(shù)據(jù)速率通常等于RX數(shù)據(jù)速率,最終取決于基帶算法。在本例中,由于解碼算法設(shè)計(jì)為12.5 MSPS采樣速率,因此AD9361的數(shù)據(jù)速率設(shè)置得相應(yīng)。通過這樣做,接收到的樣本可以直接應(yīng)用于解碼算法,而無需任何額外的抽取或插入操作。
RF帶寬控制設(shè)置AD9361的RX模擬基帶低通濾波器的帶寬,以提供抗混疊和帶外信號抑制。為了成功解調(diào)接收到的信號,系統(tǒng)必須最大化信噪比(SNR)。為此,需要將RF帶寬設(shè)置得盡可能窄,同時(shí)滿足平坦度和帶外抑制規(guī)格,以最大限度地降低帶內(nèi)噪聲和雜散信號電平。如果RF帶寬設(shè)置得比需要的寬,ADC的線性動態(tài)范圍將因額外的噪聲而減小。同樣,ADC的無雜散動態(tài)范圍也會減小,因?yàn)閹庑盘栆种戚^低,導(dǎo)致接收器整體動態(tài)范圍減小。因此,將RF帶寬設(shè)置為最佳值對于接收所需的帶內(nèi)信號和抑制帶外信號至關(guān)重要。通過觀察接收信號的頻譜,我們發(fā)現(xiàn)4 MHz是RF帶寬的合適值。
除了通過RF帶寬屬性設(shè)置AD9361的模擬濾波器外,我們還可以通過IIO系統(tǒng)對象在AD9361上啟用數(shù)字FIR濾波器來提高解碼性能,如圖5所示。根據(jù)ADS-B信號的頻譜特性,設(shè)計(jì)了一種數(shù)據(jù)速率為12.5 MSPS、通帶頻率為3.25 MHz、阻帶頻率為4 MHz的FIR濾波器。這樣,我們可以進(jìn)一步關(guān)注感興趣的帶寬。
圖5.通過 libiio 在 AD9361 上啟用正確的 FIR 濾波器。
Adsb.ftr是一個包含使用ADI公司AD9361濾波器向?qū)ATLAB應(yīng)用程序設(shè)計(jì)的FIR濾波器系數(shù)的文件。8該工具不僅提供通用低通濾波器設(shè)計(jì),還為信號路徑中的其他級提供幅度和相位均衡。
圖6.使用 MATLAB AD9361 濾波器向?qū)?ADS-B 信號設(shè)計(jì)的 FIR 濾波器。
多功能、高度可配置的AD9361收發(fā)器具有多種增益控制模式,可用于各種應(yīng)用。IIO 系統(tǒng)對象的增益模式參數(shù)選擇一種可用模式:手動、slow_attack、混合和fast_attack。最常用的模式是手動、slow_attack和fast_attack。手動增益控制模式允許基帶處理器(BBP)控制增益。Slow_attack模式用于緩慢變化的信號,而fast_attack模式用于“突發(fā)”打開和關(guān)閉的波形。增益模式在很大程度上取決于接收信號的強(qiáng)度。如果信號太強(qiáng)或太弱,建議使用手動模式或slow_attack。否則,fast_attack是一個不錯的選擇。在ADS-B的情況下,由于這些信號的突發(fā)性質(zhì),fast_attack增益模式可提供最佳結(jié)果。Fast_attack模式是該波形的要求,因?yàn)榇嬖谇皩?dǎo)碼,并且AGC需要足夠快的反應(yīng),以便捕獲第一個比特。在沒有信號的情況下,攻擊時(shí)間(降低增益所需的時(shí)間)和衰減時(shí)間(增加增益所需的時(shí)間)之間存在差異。目標(biāo)是快速調(diào)低增益,以便在第一個位上可以看到有效的“1”,但不增加位之間的增益。
最后,根據(jù)您設(shè)置TX_LO_FREQ和RX_LO_FREQ的方式,有兩種使用此模型的方法:使用預(yù)先捕獲的數(shù)據(jù)(RF 環(huán)回)和使用實(shí)時(shí)數(shù)據(jù)。
預(yù)捕獲的數(shù)據(jù)
在這種情況下,我們正在使用 AD-FMCOMMS3-EBZ 發(fā)送和接收一些預(yù)先捕獲的 ADS-B 信號。這些信號保存在一個名為“newModeS”的變量中。
圖7.使用預(yù)先捕獲的 ADS-B 信號定義輸入。
這種情況的要求是使TX_LO_FREQ = RX_LO_FREQ,它可以是AD-FMCOMMS3-EBZ支持的任何LO頻率值。由于預(yù)捕獲數(shù)據(jù)的性質(zhì),其中有大量 ADS-B 有效數(shù)據(jù),因此這是驗(yàn)證硬件設(shè)置是否合適的好方法。
實(shí)時(shí)數(shù)據(jù)
在這種情況下,我們通過空中接收實(shí)時(shí)ADS-B信號,而不是AD-FMCOMMS3-EBZ傳輸?shù)男盘?根據(jù)ADS-B規(guī)范,它是在1090 MHz的中心頻率下傳輸?shù)?,因此這種情況的要求是:
RX_LO_FREQ=1090 MHz,TX_LO_FREQ遠(yuǎn)離1090 MHz以避免干擾。
在接收器側(cè)使用能夠覆蓋 1090 MHz 頻段的適當(dāng)天線,例如 ADS-B 雙 1/2 波移動天線9;使用調(diào)諧不良或制作不良的天線將導(dǎo)致您的空中雷達(dá)范圍不足。
正確設(shè)置好所有內(nèi)容后,為了運(yùn)行 MATLAB 模型,只需使用以下命令:
[rssi1,rssi2]=ad9361_ModeS('ip','data source',channel);
其中 ip 是 FPGA 板的 IP 地址,數(shù)據(jù)源指定接收信號的數(shù)據(jù)源。目前,此模型支持“預(yù)捕獲”和“實(shí)時(shí)”數(shù)據(jù)源。通道指定是使用 AD-FMCOMMS3-EBZ 的通道 1 還是通道 2 接收信號。
例如,以下命令接收通道 2 上預(yù)先捕獲的數(shù)據(jù):
[rssi1,rssi2]=ad9361_ModeS('192.168.10.2','pre-captured',2);
在仿真結(jié)束時(shí),您將獲得兩個通道上的RSSI值,以及如下所示的結(jié)果表:
圖8.模擬結(jié)束時(shí)顯示的結(jié)果表。
此結(jié)果表顯示了模擬期間出現(xiàn)的飛機(jī)的信息。通過適當(dāng)?shù)奶炀€,該型號能夠使用 AD-FMCOMMS3-EBZ 捕獲和解碼 80 英里范圍內(nèi)的飛機(jī)信號。由于有兩種類型的S模式消息(56 μs或112 μs),因此某些消息包含的信息比另一種消息多。
當(dāng)使用真實(shí)世界的ADS-B信號試用此模型時(shí),信號強(qiáng)度對于成功解碼非常重要,因此請確保將天線放置在飛機(jī)的良好視線位置。通過查看兩個通道上的RSSI值,可以看到接收到的信號強(qiáng)度。例如,如果在通道2上接收信號,則通道2的RSSI應(yīng)明顯高于通道1的RSSI。您可以通過查看頻譜分析儀來判斷是否有任何有用的數(shù)據(jù)。
射頻信號質(zhì)量
對于任何RF信號,都需要有一個質(zhì)量指標(biāo)。例如,對于像QPSK這樣的信號,我們有誤差矢量幅度(EVM)。對于 ADS-B 信號,僅查看切片器的輸出以獲取正確的消息是不夠的,如圖 8 所示。我們需要一個指標(biāo)來定義ADS-B/脈沖位置調(diào)制的質(zhì)量,以便我們可以判斷一種設(shè)置是否優(yōu)于另一種設(shè)置。
在 ModeS_BitDecode4.m 函數(shù)中,有一個變量 diffVals,可以用作這樣的度量。此變量是 112 × 1 向量。它顯示一個模式S消息中的每個解碼位,它離閾值有多遠(yuǎn)。換句話說,每個解碼位相對于正確決策有多少裕量。很明顯,位的余量越大,解碼結(jié)果就越可信。另一方面,如果裕量較低,則表示決策在邊界區(qū)域,因此很可能是解碼位錯誤。
以下兩個圖比較了從帶和不帶FIR濾波器的ADS-B接收器獲得的差異值。通過查看 y 軸,我們發(fā)現(xiàn)使用 FIR 濾波器,無論它是在最高點(diǎn)、最低點(diǎn)還是平均值,diffVals 都更大。但是,當(dāng)沒有FIR濾波器時(shí),幾個位的差異非常接近0,這意味著解碼結(jié)果可能是錯誤的。因此,我們能夠驗(yàn)證使用適當(dāng)?shù)腇IR濾波器可以提高解碼的信號質(zhì)量。
圖9.從帶有FIR濾波器的ADS-B接收器獲得的差異值。
圖 10.從不帶FIR濾波器的ADS-B接收器獲得的差異值。
使用 IIO 系統(tǒng)對象的 MATLAB ADS-B 算法可以從 ADI GitHub 存儲庫下載。10
使用 IIO 系統(tǒng)對象進(jìn)行 ADS-B 算法驗(yàn)證
Simulink 模型基于本系列文章第 2 部分中介紹的模型。2檢測器和解碼部分直接來自該模型,我們添加了 Simulink IIO 系統(tǒng)對象,用于在環(huán)路仿真中進(jìn)行信號接收和硬件仿真。
原始模型的采樣時(shí)間 = 1,幀大小 = 1。但是,Simulink IIO 系統(tǒng)對象在緩沖模式下工作 - 它累積大量樣本,然后對其進(jìn)行處理。為了使原始模型與系統(tǒng)對象一起使用,我們在它們之間添加了兩個塊:取消緩沖以使幀大小= 1和速率轉(zhuǎn)換以使采樣時(shí)間= 1。通過這樣做,我們可以保持原始模型完好無損。
圖 11.用于捕獲和解碼 ADS-B 信號的 Simulink 模型。
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模塊的輸入和輸出端口通過對象模塊的屬性對話框以及特定于目標(biāo)ADI SDR平臺的配置文件進(jìn)行定義。輸入和輸出端口分為數(shù)據(jù)端口和控制端口。數(shù)據(jù)端口用于以基于幀的處理模式接收/發(fā)送連續(xù)數(shù)據(jù)的緩沖區(qū),而控制端口用于配置和監(jiān)控不同的目標(biāo)系統(tǒng)參數(shù)。數(shù)據(jù)端口的數(shù)量和大小從塊的配置對話框中配置,而控制端口在配置文件中定義。AD9361的屬性根據(jù)MATLAB模型中引入的相同因素進(jìn)行設(shè)置。MATLAB 模型中采用的所有理論和方法都可以在這里應(yīng)用。
根據(jù)您設(shè)置TX_LO_FREQ和RX_LO_FREQ的方式,此 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 模型中顯示的結(jié)果表。
使用 IIO System Object 的 Simulink ADS-B 模型可從 ADI GitHub 存儲庫下載。
結(jié)論
本文討論了使用ADI公司提供的libiio基礎(chǔ)設(shè)施進(jìn)行硬件在環(huán)仿真。使用此基礎(chǔ)設(shè)施,用于 ADS-B 信號檢測和解碼的 MATLAB 和 Simulink 算法可以使用真實(shí)信號和真實(shí)硬件進(jìn)行驗(yàn)證。由于屬性設(shè)置非常依賴于應(yīng)用程序和波形,因此適用于一個波形的方法不適用于另一個波形。這是確保SDR系統(tǒng)的模擬前端和數(shù)字模塊針對目標(biāo)算法和波形進(jìn)行適當(dāng)調(diào)諧的關(guān)鍵步驟,并且算法足夠魯棒,并且可以處理在不同環(huán)境條件下獲取的真實(shí)數(shù)據(jù),并按預(yù)期工作。有了經(jīng)過驗(yàn)證的算法,現(xiàn)在是時(shí)候進(jìn)入下一步了,其中包括使用 MathWorks 的自動代碼生成工具將算法轉(zhuǎn)換為 HDL 和 C 代碼,并將該代碼集成到實(shí)際 SDR 系統(tǒng)的可編程邏輯和軟件中。本系列文章的下一部分將展示如何生成代碼并將其部署到生產(chǎn)硬件中,并將討論在機(jī)場使用真實(shí)世界的 ADS-B 信號操作平臺所獲得的結(jié)果。這將完成將SDR系統(tǒng)從原型設(shè)計(jì)一直到生產(chǎn)所需的步驟。
審核編輯:郭婷
-
matlab
+關(guān)注
關(guān)注
185文章
2974瀏覽量
230382 -
無線電
+關(guān)注
關(guān)注
59文章
2139瀏覽量
116431 -
Simulink
+關(guān)注
關(guān)注
22文章
533瀏覽量
62378
發(fā)布評論請先 登錄
相關(guān)推薦
評論