在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

使用Zynq SDR套件和Simulink代碼生成工作流程進(jìn)行快速原型設(shè)計(jì)

星星科技指導(dǎo)員 ? 來源:ADI ? 作者:Mike Donovan, Andrei ? 2023-01-08 09:50 ? 次閱讀

作者:Mike Donovan, Andrei Cozma, and Di Pu

本系列文章的前幾部分介紹了 Zynq SDR 快速原型制作平臺,1介紹了使用 MATLABSimulink 開發(fā)可以成功處理和解碼 ADS-B 傳輸?shù)?a href="http://m.xsypw.cn/v/tag/2562/" target="_blank">算法的步驟,2并展示了如何在仿真和從SDR平臺獲取的實(shí)時(shí)數(shù)據(jù)中驗(yàn)證算法。3所有階段的最終目標(biāo)是創(chuàng)建一個(gè)經(jīng)過驗(yàn)證的模型,該模型可以轉(zhuǎn)換為 C 和 HDL 代碼,并準(zhǔn)備好集成到 SDR 平臺的軟件和硬件基礎(chǔ)設(shè)施中。

本系列第 2 部分中討論的 Simulink 模型(“使用 MATLAB 和 Simulink 進(jìn)行模式 S 檢測和解碼”)")2是一個(gè)仿真模型,具有足夠的硬件特定保真度,以驗(yàn)證設(shè)計(jì)是否能夠成功解碼 ADS-B 消息。以該模型為起點(diǎn),將討論在 Zynq SDR 快速原型平臺上運(yùn)行的工作接收器設(shè)計(jì)所需的最后步驟。與本系列前面的文章一樣,開發(fā)此工作設(shè)計(jì)所需的技能包括:熟練掌握 MATLAB 和 Simulink、Zynq 無線電硬件知識以及軟件/硬件集成技能。

本文中要遵循的步驟包括:

將 Simulink 模型劃分為面向 Zynq SoC 上的 FPGA 結(jié)構(gòu)和 ARM 處理系統(tǒng)的函數(shù)。

對 Simulink 模型進(jìn)行設(shè)計(jì)更改,以提高生成的 HDL 代碼的性能。

為 ADS-B 接收器算法生成源 HDL 和 C 代碼。

將生成的源代碼集成到 Zynq 無線電平臺設(shè)計(jì)中。

使用實(shí)時(shí)飛機(jī)信號在目標(biāo)硬件上測試嵌入式設(shè)計(jì)。

在此過程結(jié)束時(shí),將生成一個(gè)經(jīng)過充分驗(yàn)證的SDR系統(tǒng),運(yùn)行從Simulink ADS-B模型自動(dòng)生成的C和HDL代碼,并實(shí)時(shí)接收和解碼實(shí)時(shí)商用飛機(jī)信號。

將模型劃分為硬件和軟件組件

生成實(shí)現(xiàn)代碼過程的第一步是將設(shè)計(jì)劃分為將在 Zynq SoC 的可編程邏輯和 ARM 處理系統(tǒng)上運(yùn)行的功能。

分區(qū)通常從確定設(shè)計(jì)中不同組件的處理要求以及所需的執(zhí)行速率和時(shí)間開始。計(jì)算密集型組件(如數(shù)據(jù)調(diào)制/解調(diào)算法)需要以采樣速率實(shí)時(shí)運(yùn)行,最適合在可編程邏輯中實(shí)現(xiàn)。不太密集的處理任務(wù)(例如數(shù)據(jù)解碼和渲染以及系統(tǒng)監(jiān)視和診斷)更適合軟件實(shí)現(xiàn)。要考慮的其他一些方面包括:操作的數(shù)據(jù)類型和復(fù)雜性以及輸入和輸出數(shù)據(jù)的精度。面向可編程邏輯的所有操作都適用于定點(diǎn)、整數(shù)或布爾數(shù)據(jù)類型。對于更復(fù)雜的運(yùn)算,例如三角函數(shù)或平方根,使用近似值來使用可用的硬件資源有效地實(shí)現(xiàn)它們。所有這些約束都會導(dǎo)致精度損失,如果評估和實(shí)施不當(dāng),可能會對系統(tǒng)功能產(chǎn)生不利影響。但是,面向處理系統(tǒng)的組件可以處理浮點(diǎn)數(shù),并以最高保真度實(shí)現(xiàn)任何復(fù)雜程度的操作,但通常以較慢的執(zhí)行速度為代價(jià)。

以這些約束為指導(dǎo),ADS-B解碼算法的劃分相當(dāng)明顯。ModeS_Simulink_Decode.slx 模型中檢測器模塊中的功能(包括 I/Q 樣本的前端處理一直到校驗(yàn)和計(jì)算)非常適合在 Zynq SoC 的可編程邏輯上實(shí)現(xiàn)(圖 1)。消息位的解碼在修改的緩沖區(qū)和解碼和顯示塊中實(shí)現(xiàn),在處理系統(tǒng)中很容易實(shí)現(xiàn)。

poYBAGO6IXqAUFzlAADIYskjT4A287.png?la=en&imgver=1

圖1.ModeS_Simulink_Decode.slx:FPGA 和 ARM 處理器分區(qū)。

有興趣了解 Simulink 模型的讀者可以在 ADI GitHub 存儲庫中找到這些文件。4

從 Simulink 模型生成 HDL 代碼

模式S解碼器模型中的檢測器模塊(圖2)由幾個(gè)子系統(tǒng)組成:CalcSyncCorr,CalcNF,SyncAndControl,BitProcess,CalcCRC和FameDetect。來自MathWorks的HDL編碼器5用于生成此設(shè)計(jì)的源代碼 HDL 代碼。

pYYBAGO6IXyAfbxCAACZDHB50yc719.png?la=en&imgver=1

圖2.用于生成 HDL 代碼的檢測器塊。

Simulink 模型必須滿足多個(gè)條件才能使用 HDL 編碼器成功生成 HDL 代碼。一些最重要的要求是:

使用支持 HDL 代碼生成的塊。HDL Coder 支持大約 200 個(gè) Simulink 模塊的代碼生成。6在檢測器設(shè)計(jì)中,所有模塊(包括狀態(tài)流圖和數(shù)字濾波器模塊)都支持HDL代碼生成。

使用定點(diǎn)數(shù)據(jù)類型。在檢測器設(shè)計(jì)中,信號使用 12 位、24 位和布爾數(shù)據(jù)類型。12位數(shù)據(jù)類型與ADI公司AD9361收發(fā)器模數(shù)轉(zhuǎn)換器的位寬相匹配。

使用標(biāo)量或矢量信號。矢量信號可用于多通道信號或資源共享。

避免模型中的代數(shù)循環(huán)。HDL 編碼器軟件不支持為存在代數(shù)循環(huán)條件的模型生成 HDL 代碼。

ModeS_Simulink_Decode.slx模型不滿足所有這些條件,因此CalcCRC塊中將接收位與計(jì)算的校驗(yàn)和進(jìn)行比較的部分被移到了檢測器塊之外,并最終在C中實(shí)現(xiàn)。生成的模型 ModeS_ADI_CodeGen.slx 用于生成 HDL 代碼。與手動(dòng)編碼過程相比,只需幾分鐘即可生成數(shù)千行 HDL 代碼。HDL Coder 生成的源代碼有點(diǎn)真實(shí),循環(huán)準(zhǔn)確的 Simulink 模型版本。這是使用基于模型的設(shè)計(jì)的主要生產(chǎn)力提升之一;生成的代碼是 Simulink 模型的準(zhǔn)確翻譯。

此外,代碼設(shè)計(jì)為可讀和可追溯,因此工程師可以輕松地將生成的代碼映射到他們的設(shè)計(jì)模型。這是通過多種方式實(shí)現(xiàn)的(圖3):

模型的層次結(jié)構(gòu)保留在生成的 HDL 代碼文件中。在此示例中,頂級塊名為 Detector.vhd,下一級層次結(jié)構(gòu)的子系統(tǒng)名為 CalcNF.vhd、Bit_Process.vhd 等。

模型中使用的塊名稱、端口名稱、信號名稱、數(shù)據(jù)類型和復(fù)雜性保留在生成的代碼中。

模型和源代碼之間的鏈接允許設(shè)計(jì)人員單擊 Simulink 模型中的塊并自動(dòng)導(dǎo)航到生成的 HDL 代碼。同樣,生成的代碼中存在超鏈接,這些超鏈接將打開 Simulink 模型并突出顯示與該代碼段關(guān)聯(lián)的塊。

poYBAGO6IX2Af9vxAACnhHtXZEk013.png?la=en&imgver=1

圖3.ModeS_ADI_CodeGen.slx 的源 HDL 代碼

優(yōu)化 ADS-B 模型以生成具有更高時(shí)鐘速度的 HDL 代碼

盡管 ModeS_ADI_CodeGen.slx 模型成功生成了 HDL 代碼,但設(shè)計(jì)人員很少不希望改進(jìn)初始結(jié)果。設(shè)計(jì)人員通常需要滿足速度和面積限制,這通常涉及優(yōu)化初始 Simulink 模型以實(shí)現(xiàn)所需的結(jié)果。Simulink 和代碼生成的一個(gè)主要優(yōu)點(diǎn)是,設(shè)計(jì)人員可以在模型中進(jìn)行這些優(yōu)化,運(yùn)行仿真以確保更改不會破壞算法,然后重新生成 HDL 代碼。這通常比更改 HDL 源代碼并可能破壞算法要簡單得多,更不容易出錯(cuò)。

在這種設(shè)計(jì)中,模型生成的HDL代碼很容易適應(yīng)可用的FPGA結(jié)構(gòu),但以相對較低的時(shí)鐘速率運(yùn)行。這在許多初始設(shè)計(jì)中很常見。HDL Coder 中的內(nèi)置分析工具顯示,模型中的關(guān)鍵路徑從 I/Q 樣本輸入擴(kuò)展到 CalcCRC 子系統(tǒng)中的第一個(gè)寄存器。在設(shè)計(jì)中插入流水線寄存器是提高時(shí)鐘速度的一種常用方法(圖 4)。流水線縮短了信號操作之間的路徑,但代價(jià)是增加了整個(gè)處理的延遲。這種權(quán)衡通常是可以接受的,因?yàn)閷τ诟叩臅r(shí)鐘速率來說,輕微的延遲通常是很小的代價(jià)。

pYYBAGO6IX6ADQxVAACMH0OO7Pw995.png?la=en&imgver=1

圖4.管道寄存器插入到探測器設(shè)計(jì)中。

子系統(tǒng)之間的流水線寄存器有助于提高設(shè)計(jì)的時(shí)鐘速率,但通過為數(shù)字濾波器模塊做出有利的架構(gòu)選擇,可以實(shí)現(xiàn)更好的時(shí)鐘速率。許多 Simulink 模塊都有架構(gòu)選擇,使設(shè)計(jì)人員能夠針對速度或面積優(yōu)化設(shè)計(jì)。對于用于計(jì)算本底噪聲和前導(dǎo)碼相關(guān)性的數(shù)字濾波器(圖5),對輸出乘法器進(jìn)行流水線處理可以縮短數(shù)字濾波器內(nèi)的關(guān)鍵路徑并提高設(shè)計(jì)時(shí)鐘速率。

poYBAGO6IYCAefkOAABArz_IPjM289.png?la=en&imgver=1

圖5.數(shù)字濾波器模塊的 HDL 模塊選擇。

在進(jìn)行這兩個(gè)簡單的流水線更改后,生成的HDL代碼的時(shí)鐘速率超過了140 MHz。對于使用代碼生成工具的工程師來說,這是一個(gè)有用的教訓(xùn):將硬件設(shè)計(jì)原理的一點(diǎn)知識應(yīng)用于代碼生成模型可以對生成的代碼的結(jié)果產(chǎn)生重大影響。進(jìn)一步優(yōu)化此設(shè)計(jì)是可能的,但被認(rèn)為是不必要的,因?yàn)镠DL代碼很容易滿足該設(shè)計(jì)相對簡單的時(shí)序和資源目標(biāo)。

在傳統(tǒng)的無線電設(shè)計(jì)過程中,大部分開發(fā)時(shí)間都花在測試和調(diào)試HDL代碼上。在本示例中使用的基于模型的設(shè)計(jì)方法中,將更多時(shí)間花在開發(fā)仿真和代碼生成模型上。但是,由于生成的源代碼與仿真的驗(yàn)證行為完全匹配,因此大大節(jié)省了開發(fā)時(shí)間;只需在嵌入式硬件上執(zhí)行最少量的調(diào)試。

使用 MATLAB 編碼器生成 C 代碼7

與 HDL 代碼生成類似,必須滿足幾個(gè)條件才能為本設(shè)計(jì)的解碼功能生成 C 代碼。兩個(gè)最重要的要求是:

使用 MATLAB Coder 支持的函數(shù)。MATLAB Coder 支持大多數(shù) MATLAB 語言和各種工具箱,8但您可能會在不知不覺中使用代碼生成不支持的函數(shù)。MATLAB Coder 提供了一些工具,例如代碼準(zhǔn)備工具、9以幫助查找任何不受支持的函數(shù)。

確保聲明 MATLAB 變量后,其大小和類型不會更改。這對于確保在生成的代碼中正確進(jìn)行內(nèi)存分配是必需的。

從 MATLAB 生成 C 代碼的最簡單方法是打開一個(gè)新的 MATLAB Coder 項(xiàng)目,可以從 MATLAB Toolstrip 上的“應(yīng)用程序”選項(xiàng)卡訪問該項(xiàng)目。MATLAB Coder 項(xiàng)目的最終輸出如圖 6 所示。

pYYBAGO6IYGAP6KqAAElp91O7yQ244.png?la=en&imgver=1

圖6.用于 DecodeBits_ADI.m 的 MATLAB Coder 項(xiàng)目

在本項(xiàng)目中,頂級MATLAB函數(shù)為DecodeBits_ ADI.m。用戶需要指定此函數(shù)所需的數(shù)據(jù)類型和大小作為輸入參數(shù)。圖 6 顯示此函數(shù)的輸入?yún)?shù)是 112 個(gè)布爾數(shù)據(jù)位和兩個(gè)雙精度值(以提供用戶當(dāng)前的緯度和經(jīng)度)。DecodeBits_ADI.m 的輸出大小和數(shù)據(jù)類型(例如 *nV 表示北速度,*eV 表示東速度,*alt 表示高度)由 MATLAB Coder 自動(dòng)確定。MATLAB Coder 查找頂級入口點(diǎn)文件 DecodeBits_ADI.m 調(diào)用的所有其他函數(shù),包括 AltVelCalc_ADI.m 和 LatLongCalc_ADI.m,然后生成整個(gè)解碼算法的源代碼。

由 MATLAB Coder 生成的 C 代碼是 MATLAB 功能到 C 語言的相當(dāng)簡單的翻譯。與HDL代碼生成的情況一樣,MATLAB Coder生成的源代碼是可讀和可追溯的,因此工程師可以輕松識別原始MATLAB代碼和生成的C代碼之間的關(guān)系。此示例中的 C 代碼可以從 MATLAB 命令提示符生成,并由任何 ANSI C 編譯器編譯。

HDL 代碼平臺部署

在將設(shè)計(jì)劃分為將在 Zynq 可編程邏輯和處理系統(tǒng)上運(yùn)行的功能,優(yōu)化 HDL 和 C 代碼生成的設(shè)計(jì),并在仿真中驗(yàn)證優(yōu)化的設(shè)計(jì)是否正常運(yùn)行并符合性能標(biāo)準(zhǔn)后,現(xiàn)在可以將設(shè)計(jì)部署到實(shí)際的 SDR 硬件平臺上,并在實(shí)際條件下驗(yàn)證系統(tǒng)的功能。為此,ADI公司AD-FMCOMMS3-EBZ SDR平臺10連接到賽靈思 ZC706 開發(fā)板11使用運(yùn)行ADI公司的Linux發(fā)行版。

AD-FMCOMMS3-EBZ板隨附ADI公司提供的開源Vivado HDL參考設(shè)計(jì)。12該參考設(shè)計(jì)包含配置和傳輸數(shù)據(jù)所需的所有IP模塊,這些數(shù)據(jù)與AD-FMCOMMS3-EBZ板上的AD9361收發(fā)器之間傳輸數(shù)據(jù)。圖 7 顯示了 HDL 參考設(shè)計(jì)的框圖。

poYBAGO6IYKAH2ceAADW6_FE9lY607.png?la=en&imgver=1

圖7.HDL 參考設(shè)計(jì)框圖。

AD9361 IP內(nèi)核在AD9361收發(fā)器芯片和Zynq器件之間實(shí)現(xiàn)LVDS接收和發(fā)送數(shù)據(jù)接口,以及與設(shè)計(jì)其余部分的數(shù)據(jù)接口。DMA模塊用于AD9361 IP和DDR存儲器之間的高速數(shù)據(jù)傳輸。AD9361 IP模塊的數(shù)據(jù)接口由四條用于接收的數(shù)據(jù)線和四條用于發(fā)送的數(shù)據(jù)線組成,對應(yīng)于AD9361的兩個(gè)接收通道和兩個(gè)發(fā)送通道的I&Q數(shù)據(jù)。每條數(shù)據(jù)線的寬度為 16 位。為了使系統(tǒng)內(nèi)部的數(shù)據(jù)傳輸更加高效,接收和發(fā)送數(shù)據(jù)被打包到由DMA模塊管理的64位寬總線中。封裝和解包模塊用于將AD9361 IP的16位并行數(shù)據(jù)線連接到DMA。

將 ADS-B 模型的 HDL 代碼部署到 SDR 平臺的現(xiàn)有 HDL 基礎(chǔ)設(shè)施中需要?jiǎng)?chuàng)建一個(gè)可以插入數(shù)據(jù)路徑的 IP 核;這樣做是為了實(shí)時(shí)處理接收到的數(shù)據(jù)并將處理后的數(shù)據(jù)傳遞給軟件層。部署過程可能被證明是一項(xiàng)困難且耗時(shí)的任務(wù),因?yàn)樗枰钊肓私?HDL 設(shè)計(jì)的功能以及足夠的 HDL 編程技能。為了簡化這些步驟,MathWorks 在 HDL Coder 中加入了一個(gè)名為 HDL Workflow Advisor 的實(shí)用程序,ADI 公司為 AD-FMCOMMS2-EBZ/AD-FMCOMMS3-EBZ SDR 平臺和 Xilinx ZC706 板提供了板級支持包 (BSP)。13

HDL 工作流顧問可指導(dǎo)用戶完成從 Simulink 模型生成 HDL 代碼所需的步驟。用戶可以從幾種不同的目標(biāo)工作流程中進(jìn)行選擇,包括“ASIC/FPGA”、“FPGA-IN-THE-LOOP”和“IP 核生成”。目標(biāo)平臺選擇包括 Xilinx 評估板、Altera 評估板或 FMCOMMS2/3 ZC706 SDR 平臺。然后,HDL 工作流顧問可以自動(dòng)執(zhí)行代碼生成和目標(biāo)集成過程的其余部分。

ADI公司提供的BSP是電路板定義和參考設(shè)計(jì)的集合14為 HDL 工作流顧問提供生成與現(xiàn)有 HDL 參考設(shè)計(jì)兼容的 IP 模塊所需的信息和工具,并將生成的 IP 插入到 HDL 參考設(shè)計(jì)中。圖 8 顯示了如何配置工作流顧問程序以生成 ADS-B 模型的 IP 核。請注意,必須選擇面向ADI公司AD-FMCOMMS3-EBZ SDR平臺和Xilinx ZC706板的IP核生成工作流程。

pYYBAGO6IYSANNgfAAA3vphFiRg345.png?la=en&imgver=1

圖8.工作流顧問程序配置。

下一步是配置 IP 和參考設(shè)計(jì)之間的接口。在輸入端,模型接受原始I&Q樣本;這將模型的輸入端口直接連接到AD9361接收器數(shù)據(jù)端口。在模型的所有輸出信號中,此階段唯一感興趣的是數(shù)據(jù)、frame_valid和bit_clk信號。數(shù)據(jù)和frame_valid寬度為16位,由bit_clk信號計(jì)時(shí)。這些信號可以連接到BSP的“DUT Data x Out”接口,這意味著它們將直接訪問DMA模塊;然后可以將數(shù)據(jù)傳輸?shù)紻DR,軟件層可以訪問DDR。bit_clk信號連接到“DUT 數(shù)據(jù)有效輸出”BSP 接口并控制 DMA 采樣速率。圖 9 顯示了必須如何配置 HDL 接口。

poYBAGO6IYWAHCx3AABM5ERmZsQ105.png?la=en&imgver=1

圖9.HDL 接口配置。

定義目標(biāo)接口后,HDL 工作流顧問程序的步驟 2 和步驟 3 可以保留為其默認(rèn)狀態(tài),并且可以通過運(yùn)行步驟 4.1(創(chuàng)建項(xiàng)目)來啟動(dòng)項(xiàng)目生成過程。這一步驟的結(jié)果是一個(gè)Vivado項(xiàng)目,該項(xiàng)目將ADS-B IP內(nèi)核集成到ADI公司的HDL參考設(shè)計(jì)中。圖10顯示了ADS-B IP核與設(shè)計(jì)中其余模塊之間的連接。

poYBAGO6IYaAAPulAAA0jNoS5u4688.png?la=en&imgver=1

圖 10.HDL 參考設(shè)計(jì)中的 ADS-B IP 連接。

從 Vivado 項(xiàng)目生成比特流結(jié)束了 HDL 集成過程,但最終目標(biāo)是讓 Linux 在系統(tǒng)上運(yùn)行。為此,在生成比特流后,可以按照標(biāo)準(zhǔn)的 Xilinx SDK 第一階段引導(dǎo)加載程序 (fsbl) 和 Linux 引導(dǎo)文件創(chuàng)建流程創(chuàng)建 Linux 引導(dǎo)文件。與新創(chuàng)建的HDL設(shè)計(jì)相對應(yīng)的Linux設(shè)備樹和圖像文件與AD-FMCOMMS3-EBZ BSP一起分發(fā)。所有文件必須與 SD 卡引導(dǎo)分區(qū)上的 Linux 引導(dǎo)文件一起復(fù)制;用于在賽靈思 ZC706 板上存儲運(yùn)行 ADI Linux 發(fā)行版所需的所有文件。

C 代碼平臺部署

現(xiàn)在,ADS-B HDL IP 已集成到 SDR 平臺的 HDL 設(shè)計(jì)中,并且創(chuàng)建了 Linux SD 卡,是時(shí)候?qū)崿F(xiàn)解碼 ADS-B 數(shù)據(jù)的軟件應(yīng)用程序了。此應(yīng)用程序基于第 5 節(jié)中生成的 C 代碼,并執(zhí)行以下任務(wù):

將AD9361配置為接收ADS-B信號。

從 ADS-B IP 核讀取數(shù)據(jù)。

檢測讀取數(shù)據(jù)中的有效 ADS-B 幀。

解碼并顯示 ADS-B 信息。

實(shí)現(xiàn)任務(wù) 1 和任務(wù) 2 的最簡單方法是使用 libiio 庫提供的功能。15該庫提供接口功能,使用戶能夠輕松配置AD9361以及接收和發(fā)送數(shù)據(jù)。配置序列設(shè)置以下系統(tǒng)參數(shù):

LO 頻率 — 1.09 GHz

采樣率 — 12.5 MHz

模擬帶寬 — 4.0 MHz

AGC - 快速攻擊模式

除上述參數(shù)外,AD9361還加載了一個(gè)數(shù)據(jù)速率為12.5 MSPS、通帶頻率為3.25 MHz、阻帶頻率為4 MHz的數(shù)字FIR濾波器,以確保接收的數(shù)據(jù)僅包含目標(biāo)頻段。本系列文章的第3部分介紹了該FIR濾波器的系統(tǒng)參數(shù)和設(shè)計(jì)方法。3

ADS-B IP 的輸出數(shù)據(jù)通過 DMA 塊傳輸?shù)较到y(tǒng)的 DDR 內(nèi)存中。libiio庫提供以下功能:將從ADS-B IP獲取的數(shù)據(jù)放置到指定大小的內(nèi)存緩沖區(qū)中;等待緩沖區(qū)被填充;通過指針訪問緩沖區(qū)。緩沖區(qū)填滿后,ADS-B 解碼算法可以處理數(shù)據(jù)。ADS-B IP 核有兩個(gè)輸出通道:一個(gè)通道對應(yīng)于 ADS-B 比特流,另一個(gè)通道指示有效數(shù)據(jù)幀在比特流中的結(jié)束位置。兩個(gè)通道包含相同的數(shù)據(jù)速率,并且彼此同步。有效通道中等于“1”的樣本表示數(shù)據(jù)通道中有效幀的最后一位。通過解析兩個(gè)通道,軟件可以從比特流中提取有效的ADS-B數(shù)據(jù)幀,并將數(shù)據(jù)傳遞給MATLAB Coder生成的解碼函數(shù)。解碼功能在計(jì)算飛機(jī)坐標(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ù)解碼應(yīng)用程序是在 Linux 下使用 makefile 構(gòu)建的。該應(yīng)用程序的源代碼和生成文件可在ADI公司的github存儲庫中找到。16

這樣就完成了使用 MathWorks 的 HDL Coder 和 MATLAB Coder 從 ADS-B 模型生成的 HDL 和 C 代碼的平臺部署步驟。下一步是驗(yàn)證系統(tǒng)的功能并評估結(jié)果。

系統(tǒng)驗(yàn)證

要驗(yàn)證系統(tǒng)的功能,首先在AD-FMCOMMS3-EBZ板的一個(gè)接收端口和一個(gè)發(fā)射端口之間創(chuàng)建一個(gè)環(huán)回連接,并傳輸仿真期間使用的相同ADS-B信號。通過接收和解碼這些數(shù)據(jù),可以驗(yàn)證在SDR平臺上運(yùn)行的算法的輸出是否與仿真結(jié)果相匹配。圖 11 顯示了 ADS-B 數(shù)據(jù)解碼應(yīng)用程序的輸出;結(jié)果與使用預(yù)捕獲數(shù)據(jù)的HIL仿真系列文章第3部分中所示的結(jié)果相同。這提供了系統(tǒng)按預(yù)期運(yùn)行并準(zhǔn)備好與實(shí)際數(shù)據(jù)一起使用的信心。

pYYBAGO6IYiAYAZCAAAaaGakv4E776.png?la=en&imgver=1

圖 11.環(huán)回結(jié)果。

在實(shí)際的現(xiàn)場測試中,SDR接收器被放置在馬薩諸塞州內(nèi)蒂克的MathWorks總部外,并與系統(tǒng)解碼的ADS-B信息與飛機(jī)實(shí)時(shí)跟蹤網(wǎng)站(如 flightradar24.com)提供的數(shù)據(jù)進(jìn)行比較。據(jù)觀察,該系統(tǒng)能夠解碼從天線視線內(nèi)的飛機(jī)接收的數(shù)據(jù)。圖12顯示了系統(tǒng)檢測到的飛機(jī)信息與在線飛機(jī)跟蹤數(shù)據(jù)之間的比較;解碼算法顯示正確的飛機(jī) ID、高度、速度和緯度/經(jīng)度坐標(biāo)。

poYBAGO6IYqAJ5ToAAHbPQgwNms892.jpg?la=en&imgver=1

pYYBAGO6IYuATQO7AAA1C1oI4SA823.png?la=en&imgver=1

數(shù)字。12 實(shí)時(shí)數(shù)據(jù)結(jié)果。

結(jié)論

本文總結(jié)了由四部分組成的系列文章,展示了如何使用基于模型的設(shè)計(jì)將 SDR 系統(tǒng)從仿真一直帶到生產(chǎn)。該系列介紹了開發(fā)“硬件就緒”ADS-B Simulink 模型的所有階段。我們設(shè)計(jì)了一個(gè)仿真模型來證明我們可以解碼記錄的ADS-B消息,然后使用從SDR硬件平臺獲取的實(shí)時(shí)數(shù)據(jù)驗(yàn)證模型。這不僅驗(yàn)證了模型,還驗(yàn)證了SDR平臺對模擬前端和數(shù)字接收器鏈的設(shè)置;這也讓我們有信心,該平臺已針對接收 ADS-B 信號進(jìn)行了適當(dāng)調(diào)整。之后,我們將模型劃分為在 Zynq 處理系統(tǒng)和可編程邏輯上運(yùn)行的功能,并優(yōu)化模型以自動(dòng)生成 C 和 HDL 代碼。最后,我們將 C 和 HDL 代碼集成到 SDR 設(shè)計(jì)中,并通過實(shí)時(shí)商業(yè)空中交通驗(yàn)證了系統(tǒng)的功能。最終結(jié)果是一個(gè)設(shè)計(jì)過程,該過程使用 MathWorks 的建模和代碼生成工具以及 Zynq SDR 平臺來創(chuàng)建功能齊全的 SDR 系統(tǒng)。

本示例系統(tǒng)表明,與傳統(tǒng)設(shè)計(jì)方法相比,基于模型的設(shè)計(jì)工作流程與ADI公司AD9361/AD9364集成RF捷變收發(fā)器?可編程無線電硬件相結(jié)合,可以幫助設(shè)計(jì)團(tuán)隊(duì)更快、更便宜地開發(fā)工作無線電原型。這個(gè)原型是由作者在相對較短的時(shí)間內(nèi)以最小的障礙構(gòu)建的,并利用了以下資源:

能夠在 MATLAB 和 Simulink 中構(gòu)建 ADS-B 接收器模型,該模型可以生成可用的 C 和 HDL 源代碼。

HDL 工作流顧問中的功能,可自動(dòng)執(zhí)行許多硬件/軟件集成步驟。

庫(如 libiio),用于協(xié)助部署 SDR 原型的其余集成步驟。

MathWorks 和 ADI 提供的產(chǎn)品幫助和技術(shù)支持。

ADS-B 是一個(gè)相對簡單的標(biāo)準(zhǔn),它提供了一個(gè)很好的測試用例來演示這種構(gòu)建 SDR 原型的方法。采用基于模型的設(shè)計(jì)和 Zynq SDR 平臺的工程師應(yīng)該能夠按照本系列文章中介紹的工作流程開發(fā)更復(fù)雜、更強(qiáng)大的基于 QPSK、QAM 和 LTE 的 SDR 系統(tǒng)。

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 編碼器
    +關(guān)注

    關(guān)注

    45

    文章

    3673

    瀏覽量

    135308
  • 接收器
    +關(guān)注

    關(guān)注

    14

    文章

    2482

    瀏覽量

    72253
  • Simulink
    +關(guān)注

    關(guān)注

    22

    文章

    536

    瀏覽量

    62718
收藏 人收藏

    評論

    相關(guān)推薦

    ADI發(fā)布首款同步射頻收發(fā)器快速原型制作套件AD-FMCOMMS5-EBZ

    Analog Devices, Inc. (NASDAQ: ADI)近日發(fā)布業(yè)界首款軟件定義無線電(SDR)快速原型制作套件AD-FMCOMMS5-EBZ,它采用兩片2 x 2 AD9
    發(fā)表于 08-07 22:53

    利用基于模型的設(shè)計(jì)開發(fā)軟件定義無線電,通往量產(chǎn)的四步

    算法https://ezchina.analog.com/message/32429#32429第四步——如何利用Zynq SDR套件Simulink
    發(fā)表于 02-29 16:51

    MATLAB和Simulink算法原型如何在FPGA上適配?

    執(zhí)行代碼覆蓋率分析。在該工作流程中,Simulink設(shè)計(jì)驗(yàn)證工具可針對模型覆蓋率生成一套測試用例。HDL驗(yàn)證工具自動(dòng)使用這一套測試用例運(yùn)行ModelSim/Questa,收集
    發(fā)表于 09-04 09:26

    在FPGA上建立MATLAB和Simulink算法原型的四種最佳方法

    設(shè)計(jì)補(bǔ)丁)。由于自動(dòng)HDL代碼生成流程比手工編碼快,工程師得以把節(jié)省下來的時(shí)間投入到詳細(xì)設(shè)計(jì)階段,生成更優(yōu)質(zhì)的定點(diǎn)算法。與手動(dòng)的工作流程相比
    發(fā)表于 05-04 07:00

    Simulink是什么?Simulink工作流程是怎樣進(jìn)行的?

    Simulink是什么?Simulink有哪些功能?如何去使用SimulinkSimulink工作流程是怎樣
    發(fā)表于 07-09 06:16

    淺析MATLAB和Simulink嵌入式視覺應(yīng)用

    嵌入式視覺是什么?嵌入式視覺是指將圖像處理和計(jì)算機(jī)視覺應(yīng)用到嵌入式系統(tǒng)。嵌入式視覺開發(fā)工作流程的主要環(huán)節(jié)包括視覺算法的算法設(shè)計(jì)、系統(tǒng)建模、協(xié)作和部署。工程師使用 MATLAB 和 Simulink
    發(fā)表于 12-04 08:00

    使用USRP E310和MATLAB和Simulink進(jìn)行原型設(shè)計(jì)和測試軟件定義的無線電

    使用USRP E310和MATLAB和Simulink進(jìn)行原型設(shè)計(jì)和測試軟件定義的無線電(SDR)系統(tǒng)通信系統(tǒng)工具箱?支持包USRP?嵌入式系列收音機(jī)使您可以使用MATLAB?和
    發(fā)表于 12-21 07:56

    Simulink 自動(dòng)代碼生成原理分享

    介紹代碼生成的時(shí)候,第一步就是選擇目標(biāo)【Target Selection】,Matlab已經(jīng)自帶了不少目標(biāo)系統(tǒng),例如ert.tlc。 如果你安裝了NIVeriStand或其他快速原型產(chǎn)
    發(fā)表于 05-31 11:19

    快速原型SIMULINK模型的代碼自動(dòng)生成

    快速原型仿真是實(shí)時(shí)仿真的一種,它處于產(chǎn)品研發(fā)的算法設(shè)計(jì)階段與具體實(shí)現(xiàn)階段之間,是產(chǎn)品研制過程中一個(gè)重要環(huán)節(jié)。本文介紹了在快速原型系統(tǒng)中如何利用MATLAB/
    發(fā)表于 04-17 22:16 ?69次下載

    Zynq SDR快速原型開發(fā)平臺上進(jìn)行研發(fā)

    本系列文章的前幾部分介紹了Zynq SDR快速原型開發(fā)平臺1,說明了利用MATLAB和Simulink開發(fā)算法以成功處理和解碼ADS-B傳輸
    發(fā)表于 11-17 05:38 ?4331次閱讀

    采用Zynq SDR套件的DDS HLS IP

    ADI公司在Embedded World 2015上展示了采用Zynq SDR套件的DDS HLS IP
    的頭像 發(fā)表于 11-30 06:44 ?3379次閱讀

    業(yè)界首款采用射頻收發(fā)器SDR快速原型制作套件

    業(yè)界首款SDR快速原型制作套件采用兩片2 × 2 AD9361射頻收發(fā)器,基于Xilinx? Zynq?-7000 SoC開發(fā)平臺,可簡化并
    的頭像 發(fā)表于 06-14 06:12 ?3100次閱讀

    在FPGA上部署5G NR無線通信:MATLAB與Simulink工作流程

    電子發(fā)燒友網(wǎng)站提供《在FPGA上部署5G NR無線通信:MATLAB與Simulink工作流程.pdf》資料免費(fèi)下載
    發(fā)表于 09-14 09:42 ?0次下載
    在FPGA上部署5G NR無線通信:MATLAB與<b class='flag-5'>Simulink</b><b class='flag-5'>工作流程</b>

    在FPGA上部署5G NR無線通信:MATLAB與Simulink工作流程

    電子發(fā)燒友網(wǎng)站提供《在FPGA上部署5G NR無線通信:MATLAB與Simulink工作流程.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 11:24 ?1次下載
    在FPGA上部署5G NR無線通信:MATLAB與<b class='flag-5'>Simulink</b><b class='flag-5'>工作流程</b>

    simulink自動(dòng)生成ROS代碼

    當(dāng)我們用simulink完成控制程序的搭建后,我們期望下一次可以直接對ROS進(jìn)行控制,而不是每次都需要啟動(dòng)matlab和simulink,因此我們可以使用simulink
    的頭像 發(fā)表于 11-15 17:53 ?918次閱讀
    <b class='flag-5'>simulink</b>自動(dòng)<b class='flag-5'>生成</b>ROS<b class='flag-5'>代碼</b>
    主站蜘蛛池模板: bt天堂资源在线官网bt | 国产美女主播在线观看 | 六月婷婷网| 人人爽天天爽夜夜爽曰 | 俺来也久久 | 天天综合网在线 | 欧美猛操 | 欧美三级视频网站 | 日本在线观看高清不卡免v 日本在线观看永久免费网站 | 国产天天操 | 狠狠操狠狠操 | 国产在线观看福利 | 91极品视频在线观看 | 99久久99久久久精品齐齐鬼色 | 天堂网2014av| 夜夜cao| 男人j桶女人j免费视频 | 亚洲国产成人在人网站天堂 | 美女被视频网站在线看九色 | 四虎精品免费永久在线 | 久久狠狠躁免费观看 | 日韩美女奶水喂男人在线观看 | 免费看欧美一级特黄a大片 免费看欧美一级特黄a大片一 | 特色一级黄色片 | 日本不卡一区二区三区在线观看 | 欧美一级艳片视频免费观看 | 免费高清成人啪啪网站 | 久久久久免费观看 | 中文字幕有码视频 | 色免费在线 | 国产情侣露脸 | 亚洲国产情侣偷自在线二页 | 黄色片香蕉视频 | 四虎在线观看免费永久 | 激情福利网 | 色偷偷7777www人 | 高清欧美一级在线观看 | 亚洲资源在线视频 | 狠狠干天天爱 | 免费观看做网站爱 | 五月综合色婷婷影院在线观看 |