軟件定義無線電39

13.8 RFSoC上PYNQ的SDR設計流程

本節中詳細介紹的設計過程可以分為六個獨立的步驟,如圖13.16所示,并在接下來的幾頁中進行討論。

13.8.1 初始設計過程

。在這里,系統設計人員必須考慮許多因素,例如RFDC接收和/或發送的頻率范圍,以及這些信號的帶寬。這一步也應該使用頻率規劃,以確定所需的配置是否會導致任何帶內干擾。這些因素將決定在設計中使用所需的采樣率和時鐘率。例如,如果信號帶寬遠小于RFDC所需的采樣率,則可以使用插值或抽取級來降低PL上的時鐘速率。然而,如果需要大帶寬,則可能需要使用SSR來滿足PL時間限制。

另一個需要考慮的因素是FPGA上IP之間的通信,以及PL和PS之間的通信。Vivado中提供的許多IP都是兼容AXI的,因此對于任何自定義IP也采用兼容AXI的接口往往是有益的。如果要在PS和PL之間傳遞大量數據,則可能需要AXI流 DMA,而對于低帶寬信號,AXI - Lite接口通常就足夠了。

在這個階段考慮如何構建PS軟件以及如何與PL硬件交互是很重要的。AMD為其IP提供了許多可以從PS控制的驅動程序,例如AXI DMA。如果要開發自定義IP,那么可能還需要為它們開發自定義驅動程序。

此外,如果設計需要使用AXI - Lite控制信號,那么PL硬件必須符合AXI - Lite標準并適當地處理它們。

13.8.2 定制IP的開發

下一步是開發和測試在FPGA上運行的定制IP。作者在這個階段的首選工具是模型編寫器和HDL編碼器,兩者都在MATLAB/Simulink環境中運行。使用Simulink使系統設計人員能夠在將IP功能集成到Vivado設計之前快速模擬和測試IP功能,例如,可以利用Simulink源塊為仿真提供適當的刺激,并且可以使用Sink塊來可視化時間和頻域的結果。這兩個工具都能夠在它們生成的IP中合并符合AXI的端口。

如圖13.17所示為HDL Coder設計示例,突出顯示了構成IP核的HDL模型,以及輸入刺激的生成和輸出信號的檢測。

Simulink中的時鐘使用采樣時間(換句話說,采樣周期)的概念,這是采樣率的倒數。因此,采樣時間參數是指IP所需的時鐘速率。

一般情況下,單個時鐘驅動IP的所有接口,設置為匹配所需的采樣率。如果在自定義IP中需要任何速率更改,那么必須注意IP必須由以最高采樣率運行的時鐘驅動,這一點很重要。然后,這些工具在IP內生成其他時鐘,以驅動以較低采樣率運行的塊;所需的采樣率(以及時鐘速率)通常與整數因子相關。

在設計定制IP時,重要的是要考慮輸入和輸出,以及它們如何與更廣泛的設計交互。如前所述,使用AXI標準是值得考慮的,它將允許這些IP與Vivado中其他兼容AXI的IP很好地協同工作。AXI流可用于通過處理鏈傳遞RF數據,而AXI- Lite可用于控制信號,例如啟用和復位。

Simulink提供信號范圍和頻譜分析儀工具,允許系統設計人員在將模型轉換為HDL IP之前測試和驗證模型的功能。頻譜分析儀對于確定信號數據是否被正確處理非常有用,而信號范圍可用于識別軸流接口信號的問題。

13.8.3 自定義IP集成到Vivado,硬件系統設計

一旦開發和測試了自定義IP,就可以將它們導入到Vivado并集成到完整的PL設計中。這一步可能是最關鍵的,因為它要求系統設計人員對底層硬件及其功能有很好的理解。在Vivado中,系統設計人員將MATLAB/Simulink中設計的自定義IP與RF數據轉換器等其他IP之間的接口連接起來;以及PL和PS之間的任何溝通。

此外,這是在設計中設置時鐘速率和采樣速率的地方。必須小心確保每個IP都由正確的時鐘驅動,否則可能會出現意外行為,并且難以調試。本書中的大多數設計都是從三個獨立的時鐘源運行的:(i) PL時鐘,用于驅動AXI- Lite接口;(ii) DAC時鐘,驅動與傳輸路徑相關的IP;(iii) ADC時鐘,它驅動接收路徑上的ip。在某些情況下,可能需要使用時鐘轉換器來生成ip所需的頻率。

創建PL設計的最直接方法,也是作者所采用的方法,是使用Vivado的內置IP Integrator工具。IP集成商允許系統設計人員使用可視化的、基于塊的方法將IP連接在一起。

硬件系統設計人員最終會遇到的一個問題是時序關閉,即確保設計能夠支持所需的時鐘速率。對于SDR設計,這可能涉及在接收器的信號處理鏈中較早地抽取信號,或者相反,在發射器的信號處理鏈中較晚地插值。另一個選擇是更改Vivado中的實現策略,它定義了放置和路由的方法。Vivado定義了許多不同的策略,包括一些主要關注定時關閉的策略(通常具有延長的運行時間,但有可能獲得更好的結果)。

13.8.4 PS軟件的開發

在PL設計完成后,就可以開發PS的軟件了。從本書中的各種設計中可以明顯看出,PYNQ是作者在PS上開發軟件的首選框架。使用PYNQ有許多好處,包括對標準IP的良好驅動程序支持,以及為自定義ip創建驅動程序的簡單方法。使用Python還可以快速有效地編寫代碼,從而相對快速地識別PL和PS上的任何問題。此外,Python生態系統包含無數已建立的庫,例如Plotly和SciPy,這使得直接在PS上開發用于可視化和分析信號的代碼變得簡單。

由于其易用性,PYNQ提供了一種快速的方法來確認PL設計是否按預期執行。AXI - Lite寄存器可以使用MMIO庫進行讀寫,RFDC驅動程序可用于配置RF數據轉換器,DMA驅動程序使通過共享內存在PS和PL之間傳遞數據變得簡單。如果數據僅在PL和RFDC之間傳遞,則可能需要在PL上運行集成邏輯分析儀(ILAs)或外部設備(如頻譜分析儀和/或信號發生器)來驗證發送和接收路徑的功能。

13.8.5 調試

正如調試過程中常見的那樣,解決方案通常很簡單,但是確定故障的位置可能非常耗時。幫助這個過程的一個有用工具是Python調試器PDB,它允許用戶設置斷點并有條不紊地逐步執行PS代碼。一旦發現并修復了錯誤,就可以從項目中刪除調試器代碼。

如果確認PS軟件按預期運行,則可能需要重新訪問PL設計階段以解決問題。根據PL設計的大小,生成一個新的比特流可能需要很長時間,因此,PL調試可能是一個耗時的過程,特別是如果需要多次重新生成比特流,以嘗試不同的解決方案。出于這個原因,在進入軟件開發階段之前,廣泛地模擬和測試PL硬件是有益的。

雖然在設計中可能存在許多不同的故障,但根據我們的經驗,在為RFSoC開發系統時可能會出現兩個常見問題。正如本節前面所討論的,不正確的時鐘頻率可能導致不可預測的行為。RFDC通常由外部時鐘基礎設施驅動,因此確保時鐘的正確編程以及它們提供預期的頻率非常重要。

另一個常見問題來自于如何在自定義IP中生成和處理AXI流信號。除了tdata信號外,AXI流IP還可以包含各種其他接口信號,包括tvalid、tready和包結束信號tlast。如果這些信號沒有與tdata信號正確同步,那么沿著信號路徑進一步的IP可能無法正確操作。例如,在設置數據傳輸時,PYNQ DMA驅動程序要求數據包大小具有特定的長度。如果最后一個信號脈沖太早或太晚,指示數據包的結束,這將導致DMA掛起。如果處理不當,trready信號也會出現類似的問題。

13.8.6 項目完成

一旦PS和PL被驗證工作如預期,軟件就可以形式化。這可能包括為自定義IP制作驅動程序,或者(如果適合預期用例)創建刺激或可視化工具,例如本書中的許多設計。在這些設計中廣泛使用的另一種可能性是,將大部分功能抽象為類和函數,然后將它們導入到Notebook中。這使得Jupyter Notebook中的代碼更加精簡,更容易理解。

G Notebook Set G——RFSoC無線電演示器

G.1 無線電系統

01_rfsoc_radio_system.ipynb探索了發射器和接收器的無線電通道,為用戶提供了底層無線電體系結構的概述。這包括研究xrfdc Python包,它負責配置RFSoC的數據轉換器。我們還將使用另一個重要的包xrfclk,它配置RFSoC的時鐘網絡。用戶還將被介紹到無線電儀表板,這是一個圖形用戶界面,控制系統。無線電系統架構示意圖如圖G.1所示。

本手冊介紹了發送端向接收端發送數據時使用的數據幀的結構,它作為一種簡單的通信協議。圖G.2顯示了RFSoC無線電演示器使用的數據幀結構。注意,數據幀有三個主要部分:序言、報頭和有效負載。通常發射機發送一個已知的比特序列(前導),接收器使用同步技術檢測到它。在此之后,諸如幀號、數據標志和幀長度等附加信息將包含在報頭中(稍后將提取這些信息并由接收方用于解釋幀)。有效載荷是指幀所攜帶的數據。

G.2 觀察無線電通道

在介紹RFSoC無線電設計之后,我們將開始觀察系統運行時的發送和接收無線電管道。這包括通過從發射器和接收器管道的各個階段進行“抽查”來對無線電系統進行實時內省,即在不影響其來源的處理管道的情況下提取內部信號的副本進行分析。然后使用這些信號生成波形以進行可視化(示例圖如圖G.3所示)。可以通過運行02_rfsoc_radio_observe.ipynb開始觀察無線電通道。

我們還將研究兩種數字調制方案的使用:二進制相移鍵控(BPSK)和正交相移鍵控(QPSK)。可以在系統運行期間在BPSK和QPSK之間切換,并繪制接收到的星座圖,理想情況下應該類似于圖G.4所示的星座圖。

G.3 發送和接收:“Hello World!”

首先,打開并運行名為03_rfsoc_radio_helloworld.ipynb的Notebook。這個例子將使用RFSoC無線電系統發送一個“Hello World!”的信息在發射器和接收器之間傳遞。我們將使用三種不同的技術發送此消息。第一個方法使用一個簡單的函數調用來發送“Hello World!”第二種方法使用Python小部件,允許您使用按鈕和文本窗口輕松地輸入和傳輸消息(此應用程序的示例如圖G.5所示)。第三個方法允許您廣播“Hello World!”消息反復使用Python線程庫。

本Notebook Set的最后一部分允許您使用RFSoC無線電演示系統發送和接收圖像。無線電系統重復傳輸圖像,每次成功傳輸后將圖像旋轉90°。在本演示中,您可以選擇BPSK和QPSK調制方案進行傳輸。圖像發送和接收RFSoC演示系統的示例輸出如圖G.6所示。

精彩文章,請關注訂閱號:威視銳科技

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/diannao/76410.shtml
繁體地址,請注明出處:http://hk.pswp.cn/diannao/76410.shtml
英文地址,請注明出處:http://en.pswp.cn/diannao/76410.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

?自動化網絡架構搜索(Neural Architecture Search,NAS)

NAS是一種旨在自動設計神經網絡結構的技術。傳統上,神經網絡的架構設計依賴于專家的經驗和大量的試錯過程,而NAS通過算法自動搜索網絡架構,以發現最適合特定任務的神經網絡設計。 NAS的主要組成部分包括: 搜索空間:定…

Ubuntu 22.04 安裝和運行 EDK2 超詳細教程

Ubuntu 22.04 安裝和運行 EDK2 超詳細教程 適合新手小白,從零開始 🌟 1. 什么是 EDK2? EDK2(EFI Development Kit 2)是一個開源的 UEFI(統一可擴展固件接口)開發環境,主要用于編寫和…

什么是STEP認證

**什么是STEP認證** STEP認證,全稱為“可持續紡織生產認證”(Sustainable Textile Production),是一項由國際環保紡織協會Oeko-Tex提供的權威獨立認證體系。這一認證體系猶如紡織和皮革行業的綠色燈塔,為追求可持續發…

odoo-045 ModuleNotFoundError: No module named ‘_sqlite3‘

文章目錄 一、問題二、解決思路 一、問題 就是項目啟動,本來好好地,忽然有一天報錯,不知道什么原因。 背景: 我是在虛擬環境中使用的python3.7。 二、解決思路 虛擬環境和公共環境直接安裝 sqlite3 都會報找不到這個庫的問題…

[Linux系統編程]進程間通信—system V

進程間通信—system V 1. System V 共享內存(Shared Memory)1.1 共享內存的建立過程1.2 共享內存函數2. System V 消息隊列(Message Queues)3. System V 信號量(Semaphores)4. 總結前言: 之前所提的管道通信是基于文件的,OS沒有做過多的設計工作。 system V 進程間通信…

R語言——獲取數據1

參考資料:學習R 數據的來源可以由很多。R內置有許多數據集,而在其他的附件包中能找到更多的數據。R能從各式各樣的來源中讀取,且支持大量的文件格式。 1、內置的數據集 R的基本分發包有一個datasets,里面全是示例數據集。很多其他…

HTTP 請求方法

HTTP 請求方法 引言 HTTP(超文本傳輸協議)是互聯網上應用最為廣泛的網絡協議之一。它定義了客戶端與服務器之間通信的規則。HTTP請求方法,也稱為HTTP動詞,是客戶端向服務器發送請求時使用的操作類型。本文將詳細介紹HTTP請求方法的概念、分類、常用方法及其在實際應用中的…

python函數裝飾器

python函數裝飾器 聲明:博主并沒有系統學習過python語言,在實際項目中遇到關于python不懂的語法,這里僅作為個人學習積累筆記 1.1 python函數相關基礎 深入了解python函數裝飾器移步:Python 函數裝飾器 下面的筆記來源于上述鏈接…

OpenCV 圖形API(7)用于將笛卡爾坐標(x, y)轉換為極坐標(magnitude, angle)函數cartToPolar()

操作系統:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 編程語言:C11 算法描述 計算二維向量的大小和角度。 cartToPolar 函數計算每個二維向量 (x(I), y(I)) 的大小、角度,或同時計算兩者: magnitude…

什么是向量搜索Vector Search?

🧠 向所有學習者致敬! “學習不是裝滿一桶水,而是點燃一把火。” —— 葉芝 我的博客主頁: https://lizheng.blog.csdn.net 🌐 歡迎點擊加入AI人工智能社區! 🚀 讓我們一起努力,共創…

搜索工具Everything下載安裝使用教程(附安裝包)

文章目錄 前言一、搜索工具Everything介紹二、搜索工具Everything使用步驟1.軟件下載2.版本選取3.啟動軟件4.文件搜索 前言 本教程將詳細為您介紹 Everything 的下載、安裝與使用方法,助您快速上手,充分利用這款工具的強大功能,告別文件查找…

element-plus中,Upload上傳組件的使用 + 后端處理

目錄 一. 案例一&#xff1a;用戶更換個人頭像 1.前端實現 2.后端實現 ①引入阿里云oss的依賴 ②編寫AliOSSUtils工具類 ③編寫controller層 ④編寫service層 ⑤編寫mapper層 3.效果展示 4.重點理解 結語 一. 案例一&#xff1a;用戶更換個人頭像 1.前端實現 <…

HarmonyOS-ArkUI Rcp模塊類關系梳理

前言 本文重點解決的是&#xff0c;按照官網學習路徑學習Tcp模塊內容時&#xff0c;越看越混亂的問題。仿照官網案例&#xff0c;書寫代碼時&#xff0c;產生的各種疑惑。比如&#xff0c;類與類之間的關系&#xff0c;各種配置信息究竟有多少&#xff0c;為什么越寫越混亂。那…

【云計算物理網絡】數據中心網絡架構設計

云計算的物理基礎&#xff1a;數據中心網絡架構設計 一、技術背景&#xff1a;從“三層架構”到“云原生網絡”二、技術特點&#xff1a;云數據中心網絡的四大支柱三、技術細節&#xff1a;CLOS架構的實現挑戰四、未來方向&#xff1a;從“連接設備”到“感知服務”結語&#x…

window11 通過cmd命令行安裝 oh my zsh 的教程

步驟 1&#xff1a;安裝 WSL 2 和 Ubuntu 1. 以管理員身份打開 CMD wsl --install -d Ubuntu此命令會自動安裝 WSL 2 和 Ubuntu 發行版。 安裝完成后重啟系統。 初始化 Ubuntu 在開始菜單中打開 Ubuntu&#xff0c;設置用戶名和密碼。 步驟 2&#xff1a;在 WSL 的 Ubunt…

gdb 調試命令記錄

啟動調試 gdb ./待調試的程序 #不帶參數 (gdb) run #帶參數 gdb --args ./your_program arg1 arg2 arg3 (gdb) run arg1 arg2 arg3 #圖形化代碼界面 (gdb) layout src基礎調試命令 命令縮寫作用run [args]r運行程序&#xff08;可帶命令行參數&#xff09;break <locatio…

STM32F103低功耗模式深度解析:從理論到應用實踐(上) | 零基礎入門STM32第九十二步

主題內容教學目的/擴展視頻低功耗模式什么是低功耗&#xff0c;模式介紹&#xff0c;切換方法。為電池設備開發做準備。 師從洋桃電子&#xff0c;杜洋老師 &#x1f4d1;文章目錄 一、低功耗模式概述1.1 為什么需要低功耗模式&#xff1f;1.2 基本實現原理 二、低功耗模式的本…

JavaScript instanceof 運算符全解析

JavaScript instanceof 運算符全解析 核心語義: 判斷一個對象(object)是否屬于某個構造函數(constructor)或類的實例,基于原型鏈(prototype chain)實現類型檢測。 一、JavaScript 中的基礎用法 1. 語法結構 object instanceof constructor 返回值:布爾值(true/fal…

電腦基礎之word基礎操作

word是常用的辦公軟件之一&#xff0c;用于文檔編輯&#xff0c;如合同/報告撰寫、論文等?。 一、簡介 word文檔最早由微軟推出&#xff0c;通過Microsoft Office Word軟件創建和編輯。由于涉及版權付費問題&#xff0c;大多數個人使用盜版軟件。后來金山出了WPS office免費軟…

深度解析Python代碼中的廣告信息提取與JSON處理

哈嘍,大家好,我是木頭左! 在當今數字化時代,廣告無處不在,而從廣告中提取關鍵信息并進行處理則成為了一項重要的技能。本文將深入剖析一段Python代碼,該代碼旨在從給定的JSON格式字符串中提取廣告相關信息,并對其進行解析和處理。通過這段代碼,將展示如何運用Python的j…