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