一旦定義了目標(biāo)接口,HDL Workflow Advisor的第2步和第3步便可保持默認(rèn)狀態(tài),然后通過運行步驟4.1(創(chuàng)建項目)來啟動項目生成過程。此步驟的結(jié)果是產(chǎn)生一個Vivado項目,其ADS-B IP內(nèi)核已集成到ADI公司的HDL參考設(shè)計中。圖10顯示了ADS-B IP內(nèi)核與設(shè)計中其余模塊的連接。
圖10. HDL參考設(shè)計中的ADS-B IP連接
從Vivado項目生成位流便可結(jié)束HDL集成過程,但最終目標(biāo)是讓Linux在系統(tǒng)上運行。 為此,在生成位流之后,可按照標(biāo)準(zhǔn)Xilinx SDK第一階段引導(dǎo)加載程序(fsbl)和Linux引導(dǎo)文件創(chuàng)建過程創(chuàng)建一個Linux引導(dǎo)文件。與新創(chuàng)建HDL設(shè)計對應(yīng)的Linux設(shè)備樹和映像文件隨同AD-FMCOMMS3-EBZ BSP發(fā)布。所有文件都必須與SD卡引導(dǎo)分區(qū)上的Linux引導(dǎo)文件一同復(fù)制;引導(dǎo)分區(qū)用于存儲在Xilinx ZC706板上運行ADI公司Linux發(fā)行版所需的全部文件。
C語言代碼平臺部署
將ADS-B HDL IP集成到SDR平臺的HDL設(shè)計并創(chuàng)建Linux SD卡之后,便需要實現(xiàn)用來解碼ADS-B數(shù)據(jù)的軟件應(yīng)用程序。此應(yīng)用程序基于第5部分生成的C代碼,執(zhí)行如下任務(wù):
配置AD9361以接收ADS-B信號。
從ADS-B IP內(nèi)核讀取數(shù)據(jù)。
在讀取的數(shù)據(jù)中檢測有效ADS-B幀。
解碼并顯示ADS-B信息。
實現(xiàn)任務(wù)1和任務(wù)2的最簡單方法是使用libiio庫15提供的功能。此庫提供了接口函數(shù),允許用戶輕松配置AD9361以及接收和發(fā)送數(shù)據(jù)。 配置過程設(shè)置如下系統(tǒng)參數(shù):
LO頻率—1.09 GHz
采樣速率—12.5 MHz
模擬帶寬—4.0 MHz
AGC—快速啟動模式
除上述參數(shù)外,一個數(shù)據(jù)速率為12.5 MSPS、通帶頻率為3.25 MHz、阻帶頻率為4 MHz的數(shù)字FIR濾波器也被加載到AD9361中,確保收到的數(shù)據(jù)僅包含目標(biāo)頻段。該FIR濾波器的系統(tǒng)參數(shù)和設(shè)計方法詳見本系列文章第三部分3所述。
ADS-B IP的輸出數(shù)據(jù)通過DMA模塊傳輸?shù)较到y(tǒng)的DDR存儲器。libiio庫提供如下功能: 將從ADS-B IP獲取的數(shù)據(jù)放置到指定大小的存儲緩沖器中;等待緩沖器填滿;通過指針訪問該緩沖器。 一旦緩沖器填滿,ADS-B解碼算法便可處理數(shù)據(jù)。ADS-B IP內(nèi)核有兩個輸出通道:一個通道對應(yīng)于ADS-B位流,另一個通道指示一個有效數(shù)據(jù)幀在位流中的何處結(jié)束。兩個通道均包含相同的數(shù)據(jù)速率,彼此同步。 有效通道中一個等于1的樣本表示數(shù)據(jù)通道中一個有效幀的最后一位。 通過解析這兩個通道,軟件可以從位流中提取有效的ADS-B數(shù)據(jù)幀,并將數(shù)據(jù)傳送到MATLAB編碼器生成的解碼函數(shù)。當(dāng)計算航空器坐標(biāo)時,解碼函數(shù)利用ADS-B數(shù)據(jù)幀和當(dāng)前位置的經(jīng)緯度作為輸入。當(dāng)前經(jīng)緯度被指定為應(yīng)用程序的參數(shù)。ADS-B解碼數(shù)據(jù)的顯示與Simulink模型相似。
ADS-B數(shù)據(jù)解碼程序是在Linux下利用makefile構(gòu)建。該應(yīng)用程序的源代碼和makefile可在Analog Devices github庫中下載16。
這樣就完成了利用HDL編碼器從ADS-B模型生成的HDL代碼和利用MathWorks MATLAB編碼器生成的C代碼的平臺部署步驟。下一步是驗證系統(tǒng)功能并評估結(jié)果。
系統(tǒng)驗證
為了驗證系統(tǒng)功能,首先要在AD-FMCOMMS3-EBZ板的一個接收端口與一個發(fā)送端口之間建立一個回送連接,并發(fā)送仿真期間使用的相同ADS-B信號。通過接收和解碼此數(shù)據(jù),可以驗證SDR平臺上運行的算法輸出是否與仿真結(jié)果一致。圖11顯示了ADS-B數(shù)據(jù)解碼程序的輸出,結(jié)果與本系列文章第三部分中利用預(yù)先捕捉的數(shù)據(jù)進(jìn)行HDL仿真所獲得的結(jié)果完全相同。 這說明系統(tǒng)運行符合預(yù)期,可以利用實際數(shù)據(jù)進(jìn)行測試。
圖11. 回送結(jié)果
現(xiàn)場實際測試時,SDR接收機放在MathWorks位于美國馬薩諸塞州納蒂克的總部外面,系統(tǒng)解碼的ADS-B信息與飛機實時跟蹤網(wǎng)站(如flightradar24.com)提供的數(shù)據(jù)進(jìn)行對比。結(jié)果證實:在天線的視線范圍內(nèi),系統(tǒng)能夠解碼從飛機收到的數(shù)據(jù)。圖12顯示了系統(tǒng)檢測到的航空器信息與在線飛機跟蹤數(shù)據(jù)的對比情況。可以看到,解碼算法給出了正確的航空器ID、高度、速度和經(jīng)緯度坐標(biāo)。
圖12. 實時數(shù)據(jù)結(jié)果
結(jié)論
本系列文章展示了如何利用基于模型的設(shè)計來實現(xiàn)SDR平臺從仿真到生產(chǎn)的全過程,這是其中的最后一篇。本系列說明了開發(fā)一個"硬件準(zhǔn)備就緒"的ADS-B Simulink模型的所有階段。 我們設(shè)計了一個仿真模型來證明我們能夠解碼記錄到的ADS-B消息,然后利用從SDR硬件平臺獲取的實時數(shù)據(jù)驗證該模型。這不僅驗證了該模型,而且驗證了SDR平臺的模擬前端和數(shù)字接收機信號鏈的設(shè)置。同時,它令我們確信該平臺已調(diào)整好,可用于接收ADS-B信號。然后,我們將該模型劃分為不同的功能,以便在Zynq處理系統(tǒng)和可編程邏輯上運行,并優(yōu)化了該模型以自動生成C和HDL代碼。最后,我們將C和HDL代碼集成到SDR設(shè)計中,并利用實時商業(yè)空中交通數(shù)據(jù)驗證了系統(tǒng)的功能。最終成果是一個設(shè)計流程——使用MathWorks建模和代碼生成工具,并結(jié)合Zynq SDR平臺來創(chuàng)建全面有效的SDR系統(tǒng)。
示例系統(tǒng)說明:相比于傳統(tǒng)設(shè)計方法,基于模型的設(shè)計工作流程與ADI公司的集成RF捷變收發(fā)器可編程無線電硬件AD9361/AD9364 相結(jié)合,可以幫助設(shè)計團隊更快開發(fā)出有效的無線電原型,成本也更低。文中的原型是由筆者在相對較短的時間內(nèi)制作出來的,遇到的障礙極少,使用了如下資源:
在MATLAB和Simulink中能夠創(chuàng)建ADS-B接收機模型,并生成可用的C和HDL源代碼。
HDL Workflow Advisor中的功能,它們使很多軟硬件集成步驟自動完成。
libiio等庫,幫助完成其余集成步驟以便部署SDR原型。
MathWorks和ADI公司提供的產(chǎn)品幫助和技術(shù)支持。
ADS-B是一個相對簡單的標(biāo)準(zhǔn),為通過這種方法構(gòu)建SDR原型提供了一個很好的測試案例。采用基于模型的設(shè)計和Zynq SDR平臺的工程師應(yīng)當(dāng)能夠按照本系列文章所提出的工作流程,開發(fā)出更復(fù)雜、更強大的QPSK、QAM和LTE SDR系統(tǒng)。
參考文獻(xiàn)?
1Di Pu, Andrei Cozma, 和 Tom Hill. "快速通往量產(chǎn)的四個步驟:利用基于模型的設(shè)計開發(fā)軟件無線電,第一部分——ADI/Xilinx SDR快速原型開發(fā)平臺及其能力、優(yōu)勢和工具",模擬對話第49卷第3期。
2Mike Donovan, Andrei Cozma, 和 Di Pu. "快速通往量產(chǎn)的四個步驟:利用基于模型的設(shè)計開發(fā)軟件無線電,第二部分——利用MATLAB和Simulink進(jìn)行S模式檢測和解碼",模擬對話第49卷第4期。
3Di Pu, Andrei Cozma. "快速通往量產(chǎn)的四個步驟:利用基于模型的設(shè)計開發(fā)軟件無線電,第三部分——利用硬件在環(huán)驗證S模式信號解碼算法",模擬對話第49卷第4期。
4Analog Devices GitHub庫。
5HDL編碼器。
6HDL編碼器模塊支持。
7MATLAB編碼器。
8MATLAB工具箱。
9MATLAB代碼生成就緒工具。
10AD-FMCOMMS3-EBZ用戶指南。
11Xilinx Zynq-7000 All Programmable SoC ZC706評估套件。
12AD-FMCOMMS2-EBZ/AD-FMCOMMS3-EBZ/AD-FMCOMMS4-EBZ HDL/AD-FMCOMMS5-EBZ HDL參考設(shè)計。
13Analog Devices BSP for MathWorks HDL Workflow Advisor。
14電路板和參考設(shè)計注冊系統(tǒng)。
15什么是Libiio?
16MathWorks目標(biāo)模型—ADSB。
作者
Mike Donovan是MathWorks公司應(yīng)用工程部門經(jīng)理。他擁有巴克內(nèi)爾大學(xué)電氣工程學(xué)士學(xué)位和康涅狄克大學(xué)電氣工程碩士學(xué)位。加入MathWorks之前,Mike開發(fā)過雷達(dá)和衛(wèi)星通信系統(tǒng),并在寬帶電信行業(yè)工作過。
Andrei Cozma? 是ADI公司工程設(shè)計經(jīng)理,負(fù)責(zé)支持系統(tǒng)級參考設(shè)計的設(shè)計與開發(fā)。 他擁有工業(yè)自動化與信息技術(shù)學(xué)士學(xué)位及電子與電信博士學(xué)位。他參與過電機控制、工業(yè)自動化、軟件定義無線電和電信等不同行業(yè)領(lǐng)域的項目設(shè)計與開發(fā)。
Di Pu是ADI公司系統(tǒng)建模應(yīng)用工程師,負(fù)責(zé)支持軟件定義無線電平臺和系統(tǒng)的設(shè)計與開發(fā)。她與MathWorks密切合作解決雙方共同客戶的難題。加入ADI公司之前,她于2007年獲得南京理工大學(xué)(NJUST)電氣工程學(xué)士學(xué)位,于2009年和2013年分別獲得伍斯特理工學(xué)院(WPI)電氣工程碩士學(xué)位和博士學(xué)位。她是WPI 2013年博士論文Sigma Xi研究獎獲得者。
評論
查看更多