FPGA——ZYNQ7020學習日記(PS端)4(開始PS控制VGA顯示)

1.DMA

我們的整體VGA顯示分為幾步:比如先導入VIDEO TIMING CONTROL來做對輸入數據的時序“對齊”,這里開源騷客寫的很詳細,先用了一個虛擬IO(VIO)來作為輸入,導入了一個簡單的RTL模塊(當VTL的使能信號有效時,RGB_DATA_OUT就接收來自VIO的RGB_DATA_IN);

接著,我們要把VIO替換掉為DMA+PS端的模塊(即輸入數據變成了PS端處理過后的,被DMA讀取)

DMA 有兩個 AXI 流端口。一個是 AXI 主流 (M_AXIS_MM2S),對應于?READ?通道。數據將通過 M_AXI_MM2S 端口從內存中讀取,并發送到 M_AXIS_MM2S 端口(并發送到連接到此端口的 IP)。

以下是對VDMA的通俗解釋(來自AI):

VDMA就是視頻數據的"快遞專車",它直接在攝像頭(PL端)和內存(PS端)之間建立一條專用高速公路,讓視頻幀數據不經過CPU就能直達目的地。

寫的很詳細的教程:Tutorial: PYNQ DMA (Part 1: Hardware design) - Learn - PYNQ

另一個對DMA很通俗的解釋視頻:10行代碼,就能讓你真正理解DMA!你用的可能很少,但是在單片機中非常重要!_嗶哩嗶哩_bilibili

2.AXI接口之讀寫DDR

  1. AXI4主控制器:模塊(axi4_rw)作為AXI總線的主設備,主動發起讀寫請求。

  2. DDR訪問:通過HP接口連接到Zynq(從機)的DDR控制器,實現對DDR內存的讀寫。

  3. 控制接口:提供啟動信號(init_axi_txn)、完成標志(txn_done)和錯誤指示(error)。

  4. 無用戶信號AWUSER/ARUSER/WUSER等寬度為0,簡化設計。

用戶信號是什么?

在AXI協議中,用戶信號(如AWUSER,?ARUSER,?WUSER等)是可選的擴展信號,用于在標準AXI通道中傳遞額外的自定義信息。它們不屬于AXI核心協議規范,而是提供給設計者的"擴展槽"。

——內容由AI生成

對著野火的PS文檔直接復現,一個問題是警告:

你把 AXI 接口的 RUSER_WIDTHWUSER_WIDTH 設成了 1 位,但這不符合 AXI 規范,因為數據總線是 32 位(4 字節),而用戶信號寬度必須是“每字節整數倍”的位數。但其實這里我們根本不需要什么用戶位寬,雙擊axi4_rw的ip把后面五個位寬全部修改成0即可解決:

所有m00_axi_*信號連接到Zynq的HP0/HP1等AXI從端口。

當外部邏輯拉高(也就是對應的按鍵消抖模塊的flag有效),m00_axi_init_axi_txn拉高,觸發模塊開始讀寫操作。

總結:axi4_rw模塊是FPGA與Zynq DDR通信的“橋梁”,通過標準化AXI4協議實現高效突發傳輸。編寫者只需觸發init_axi_txn,模塊自動完成地址分配、突發控制、握手響應等復雜操作,極大簡化了DDR交互邏輯設計。

3.ip核配置

對于GP M口,PS端是主;對于HP ,PS端是從。

信號名稱總線類型協議特點典型連接對象
M_AXI_MM2SAXI4-Full存儲器映射,含地址/控制信號DDR內存控制器
M_AXIS_MM2SAXI4-Stream純數據流,無地址信號流處理IP核

S就是Stream的縮寫,表示"流式數據傳輸";攝像頭采集的視頻就是沒有地址的視頻流,CPU無法直接解析無地址的流數據,我們要使用VDMA;

在野火的第17個例程DMA環回讀寫實驗中,由于數據經過DMA之后變成了數據流,與之打交道的也應該是帶有 ?Stream 接口的高速的 AD 或 DA IP 核(比如AXI4_STREAM TO VIDEO OUT),這里我們方便起見選擇了AXI4 ?Stream Data FIFO IP 核來充當這類 IP,這個FIFO起到? 將AXI-Full 總線轉換為 AXI-Stream 總線? ,并且充當一個“流數據池”的作用。其S_AXIS與DMA的M_AXIS_MM2S相連,M_AXIS與DMA的S_AXIS_S2MM相連,非常類似于正負極的連接。

AXI DMA 的 MM2S/S2MM 兩個通道 → 通過 fabric 中斷號 → 接到 PS 的 GIC → 由 TxIntr_Handler / RxIntr_Handler 處理完成/錯誤事件 → 把全局標志 Tx_Done / Rx_Done / Error 置位 → 主循環里根據標志位做后續動作。

#define RX_INTR_ID XPAR_FABRIC_AXIDMA_0_S2MM_INTROUT_VEC_ID
#define TX_INTR_ID XPAR_FABRIC_AXIDMA_0_MM2MM_INTROUT_VEC_ID

GIC給中斷源分配了中斷號,這兩個宏就是 BSP 在 xparameters.h 里根據我們的硬件設計自動生成的;在 Vivado 里把 AXI-DMA 的 mm2s_introut / s2mm_introut 信號拉到 PS 的 IRQ_F2P[x] 引腳的那一刻,就已經決定了它的中斷號;之后 Vivado 導出 HDF,SDK/Vitis 根據 HDF 生成 xparameters.h,把連線結果翻譯成宏值,軟件直接用即可。

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

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

相關文章

AGX Xavier 搭建360環視教程【補充一:魚眼去畸變(Fisheye Undistortion)】

對每路幀做魚眼去畸變除了用cv::cuda::remap是否有更好的辦法呢?確實 cv::cuda::remap 不是唯一可選項,甚至未必是最高效或最適合實際業務量級的方案。🎯 1?? 去畸變的原理魚眼相機(或者大廣角相機)會把直線拉彎&…

tomato靶機練習

下載完靶機后,直接運行,選擇安裝路徑后將虛擬機的網絡設置為nat模式,設置完成后重啟虛擬機掃描同一網段,查找主機,這里我們使用kali的nmap,既能找到主機,也能查看開啟的端口依次嘗試&#xff0c…

136. Java 泛型 - 下限通配符

文章目錄136. Java 泛型 - 下限通配符 (? super T)**1. 什么是下限通配符 (? super T)&#xff1f;****2. 為什么使用下限通配符&#xff1f;****3. 示例&#xff1a;使用 ? super Integer 允許添加 Integer****? 正確示例****4. 為什么 List<? super Integer> 和 L…

C++23中的std::expected:異常處理

C23中的std::expected:異常處理 眾所周知&#xff0c;C23以前的異常處理是比較麻煩的&#xff0c;尤其是自己要在可能拋出異常的地方&#xff0c;需要自己去捕獲它&#xff0c;比如除數為0的異常、使用std::stoi函數將字符串轉換成int整型數據、處理文件讀寫的異常等等&#x…

處理Electron Builder 創建新進程錯誤 spawn ENOMEM

這個錯誤 spawn ENOMEM 表明系統內存不足&#xff0c;無法為 Electron Builder 創建新進程。以下是一些可能的解決方案&#xff1a;釋放系統內存關閉不必要的程序和服務增加物理內存 (RAM) 或交換空間 (swap)使用 free -h 和 top 命令檢查內存使用情況臨時增加交換空間# 創建一…

discuz安裝使用教程,及網站部署在公網訪問

Discuz!的安裝主要包括環境準備、程序部署和配置管理三個核心步驟?&#xff0c;有條件 的可以使用寶塔面板或云鏡像簡化流程&#xff0c;本地部署無公網IP的配合類似nat123映射公網訪問&#xff0c;當前最新版本為Discuz! Q&#xff08;2025年發布&#xff09;和Discuz! X3.5&…

深入解析C#數字轉換:隱式與顯式轉換的全面指南

—— 數據精度保衛戰中的checked與unchecked秘籍 &#x1f4cc; 核心概念速覽 1. 隱式轉換 自動發生&#xff0c;無數據丟失風險&#xff08;如 int→long&#xff09;遵循"小類型→大類型"路徑&#xff08;見下圖??&#xff09; [圖1&#xff1a;C#隱式數字轉換路…

量子計算可以解決的三個現實問題

今年是量子力學被發現一百周年。這一突破幫助人們認識到&#xff0c;支配我們周圍世界最小層面&#xff08;分子、原子和亞原子粒子&#xff09;的物理定律&#xff0c;與支配我們在日常生活中與物體相互作用方式的物理定律有著根本的不同。量子力學讓我們能夠了解從血液中的新…

Valgrind Memcheck 全解析教程:6個程序說明基礎內存錯誤

Valgrind 是一個強大的動態分析框架&#xff0c;其中的 memcheck 工具用于檢測 C/C 程序中類型不定的內存錯誤&#xff0c;是基礎級內存調試工具的重要選擇。 本文將通過 6 段有意義的錯誤代碼&#xff0c;全面講解 memcheck 的檢測原理和輸出分析&#xff0c;進而幫助學習者托…

Vue3 實現 Excel 文件導入導出功能

在Vue 3中實現Excel文件的導入和導出功能&#xff0c;你可以使用一些流行的JavaScript庫&#xff0c;如SheetJS&#xff08;也稱為xlsx&#xff09;來處理Excel文件。以下是實現這一功能的基本步驟&#xff1a;1. 安裝SheetJS首先&#xff0c;你需要安裝xlsx庫。在你的Vue項目中…

CS231n-2017 Lecture2圖像分類筆記

圖像分類問題定義&#xff1a;在已有固定的分類標簽集合的前提下&#xff0c;能夠對輸入的圖像進行識別處理&#xff0c;從集合中找到該圖像所對應的標簽。對于計算機而言&#xff0c;圖像并非直觀的圖像&#xff0c;而是一個的像素集合&#xff0c;對于每個像素&#xff0c;其…

Typecho博客Ajax評論功能實現全攻略

文章目錄 Typecho實現Ajax評論功能的完整指南 引言 一、技術選型與準備工作 1.1 技術棧分析 1.2 環境準備 二、前端實現方案 2.1 基礎HTML結構 2.2 JavaScript處理邏輯 三、后端處理實現 3.1 創建插件處理Ajax請求 3.2 錯誤處理增強 四、安全性考慮 4.1 CSRF防護 4.2 輸入過濾 …

【計算機考研(408)- 數據結構】樹與二叉樹

樹與二叉樹 樹的定義及相關概念 樹是n&#xff08;n≥0&#xff09;個結點的有限集合&#xff0c;n 0時&#xff0c;稱為空樹&#xff0c;這是一種特殊情況。在任意一棵非空樹中應滿足&#xff1a; 1&#xff09;有且僅有一個特定的稱為根的結點。 2&#xff09;當n > 1時…

MacOS:如何利用終端來操作用戶

MacOS&#xff1a;如何利用終端來操作用戶MacOS&#xff1a;如何利用終端來操作用戶1. 創建用戶并賦予管理員權限步驟&#xff1a;2. 取消用戶的管理員權限解釋&#xff1a;3. 查看組成員查看 admin 組成員&#xff1a;查看 users 組成員&#xff1a;4. 其他常見的用戶管理命令…

基于SpringBoot+MyBatis+MySQL+VUE實現的醫療掛號管理系統(附源碼+數據庫+畢業論文+答辯PPT+項目部署視頻教程+項目所需軟件工具)

摘 要 在如今社會上&#xff0c;關于信息上面的處理&#xff0c;沒有任何一個企業或者個人會忽視&#xff0c;如何讓信息急速傳遞&#xff0c;并且歸檔儲存查詢&#xff0c;采用之前的紙張記錄模式已經不符合當前使用要求了。所以&#xff0c;對醫療掛號信息管理的提升&#x…

學成在線項目

黑馬程序員學成在線項目學習過程記錄 解決跨域問題

Shell腳本-grep工具

一、前言在 Linux/Unix 系統中&#xff0c;grep 是一個非常強大且常用的文本搜索工具&#xff0c;它可以幫助我們快速從文件或標準輸入中查找匹配特定模式的內容。無論是查看日志、調試腳本&#xff0c;還是進行自動化數據提取&#xff0c;grep 都扮演著至關重要的角色。本文將…

深入解析Ext2文件系統架構

要在硬盤上存儲文件&#xff0c;必須先將硬盤格式化為特定類型的文件系統。文件系統的主要功能就是組織和管硬盤中的文件。在Linux系統中&#xff0c;最常見的文件系統是Ext2系列&#xff0c;其早期版本為Ext2&#xff0c;后續又發展出Ext3和Ext4。雖然Ext3和Ext4對Ext2進行了功…

商業秘密保護:從法律理論到企業實戰

作者&#xff1a;邱戈龍、柯堅豪深圳商業秘密律師廣東長昊律師事務所在商業競爭中&#xff0c;商業秘密就像企業的"隱形護城河"。從法律角度看&#xff0c;它的保護路徑經歷了三次重要升級&#xff1a;從最初的"合同約定"到后來的"財產保護"&…

AI產品經理面試寶典第36天:AI+旅游以及行業痛點相關面試題的指導

一、AI如何解決旅游行業核心痛點? 面試官提問: "請結合具體案例說明AI在旅游行業的應用價值,以及它如何解決傳統旅游服務的痛點?" 你的回答: 以騰訊"一部手機游云南"為例,AI技術通過四大核心體系重構旅游體驗: 數字身份體系:通過人臉識別與用戶…