ZYNQ MPSOC之PL與PS數據交互DMA方式

ZYNQ MPSOC之PL與PS數據交互DMA方式

1 摘要

XILINX ZYNQ 以及 ZYNQ MPSOC主要優勢在于異構 ARM+FPGA。其中非常關鍵的一點使用了 AXI 總線進行高速互聯。而且這個 AXI 總線是開放給我們用戶使用的。在前面的文章中我們詳解了使用了AXI-HP方式PL到PS端進行數據交互。本文主要涉及到DMA訪問方式,實現PL端到PS端數據互訪,并測試在當前數據總線位寬和PL端頻率下DMA方式的帶寬速度。

2 DMA(Direct Memory Access)接口

DMA 是一種高效的數據傳輸技術,廣泛應用于需要大量數據傳輸的計算機系統中。通過允許外設直接訪問內存,DMA 可以顯著提高系統的性能和資源利用率。
(1)DMA 的工作原理
請求 DMA 傳輸:外部設備(如硬盤、網絡適配器或其他外設)通過控制器發出 DMA 請求,表明它需要進行數據傳輸。
?DMA 控制器響應:系統的 DMA 控制器接收到請求后,向 CPU 發送信號,通知它暫時停止處理任務,允許 DMA 控制器接管總線。
?設置傳輸參數:DMA 控制器配置數據傳輸的源地址、目的地址和數據傳輸的大小。
?數據傳輸:DMA 控制器直接從源地址讀取數據并寫入到目的地址。此過程不需要 CPU 的參與,從而提高了效率。
?完成傳輸:當數據傳輸完成后,DMA 控制器向 CPU 發送中斷信號,通知其傳輸已完成,CPU 可以繼續執行其他任務。
在這里插入圖片描述
可以看到 DMA 的數據傳輸經 S_AXI_HP 接口。ZYNQ MPSOC 擁有 4 個S-AXI HP 接口,提供了 ZYNQ 內最大的總帶寬。每一個 HP 接口都包含控制和數據 FIFO。這些 FIFO 為大數據量突發傳輸提供緩沖,讓 HP 接口成為理想的高速數據傳輸接口。
在這里插入圖片描述

(2)DMA 的類型
?Burst Mode DMA:在這種模式下,DMA 控制器在傳輸數據時占用總線,直到傳輸完成。此模式適合于大塊數據傳輸。
?Cycle Stealing DMA:DMA 控制器在每個數據傳輸周期中占用總線的一部分時間,允許 CPU 和 DMA 控制器交替訪問總線。此模式適合于小塊數據傳輸。
?Transparent DMA:DMA 控制器在 CPU 不使用總線時進行數據傳輸,從而不會影響 CPU 的操作。
?Demand Mode DMA:DMA 控制器在設備請求時才進行數據傳輸,適合于不定時的數據傳輸需求。

(3)DMA 的應用場景
?音頻和視頻處理:在音頻和視頻流的傳輸中,DMA 可以實現高效的數據傳輸,減少延遲。
?網絡數據傳輸:網絡適配器通常使用 DMA 將數據包直接傳輸到內存中,提高網絡通信性能。
?大數據量的存儲操作:在硬盤和內存之間進行大規模數據傳輸時,DMA 可以顯著提高傳輸效率。

3 DMA FPGA設計

3.1 block design設計

采用FPGA block design 設計MPSOC DMA接口,頂層通過axis-data-fifo控制寫數據操作,SOC端通過DMA中斷將DMA通道接收的數據緩存至DDR中,完成PL端到PS端DDR的讀寫訪問。
在這里插入圖片描述
在位寬為32bit,PL端頻率為150MHz測試DMA速率如下,可以適當提高PL端時鐘頻率以提高傳輸速度
在這里插入圖片描述

3.2 頂層模塊

`timescale 1 ps / 1 ps
module system_wrapper();reg [31:0]S_AXIS_tdata;wire S_AXIS_tlast;wire S_AXIS_tvalid = 1'b1; wire pl_clk0;wire s_axis_aclk;wire s_axis_aresetn;wire [3:0]S_AXIS_tkeep;wire S_AXIS_tready;wire [0:0]gpio_rtl_tri_o;wire [0:0]peripheral_aresetn;assign S_AXIS_tkeep = 4'b1111;  
assign s_axis_aclk =  pl_clk0;
assign s_axis_aresetn = peripheral_aresetn&&gpio_rtl_tri_o;always@(posedge pl_clk0)beginif(s_axis_aresetn == 1'b0)beginS_AXIS_tdata <= 0;endelse beginif(S_AXIS_tready&&S_AXIS_tdata<511)S_AXIS_tdata <= S_AXIS_tdata + 1'b1; else if(S_AXIS_tready)S_AXIS_tdata <= 0;  endendassign  S_AXIS_tlast = (S_AXIS_tdata == 511)&&S_AXIS_tready&&S_AXIS_tvalid;system system_i(.S_AXIS_tdata(S_AXIS_tdata),.S_AXIS_tkeep(S_AXIS_tkeep),.S_AXIS_tlast(S_AXIS_tlast),.S_AXIS_tready(S_AXIS_tready),.S_AXIS_tvalid(S_AXIS_tvalid),.gpio_rtl_tri_o(gpio_rtl_tri_o),.peripheral_aresetn(peripheral_aresetn),.pl_clk0(pl_clk0),.s_axis_aclk(s_axis_aclk),.s_axis_aresetn(s_axis_aresetn));
endmodule

4 SOC設計

4.1 硬件導出

在工程中導出硬件平臺及bit文件
在這里插入圖片描述
生成VITIS工程
在這里插入圖片描述)

4.2 PSU_A53控制代碼

#include "dma_intr.h"
#include "ttc_intr.h"
#include "sys_intr.h"
#include "xgpio.h"
volatile u32 RX_success;
volatile u32 TX_success;volatile u32 RX_ready=1;
volatile u32 TX_ready=1;
int Tries = NUMBER_OF_TRANSFERS;
int i;
int Index;
u8 *TxBufferPtr= (u8 *)TX_BUFFER_BASE;
u8 *RxBufferPtr= (u8 *)RX_BUFFER_BASE;
u8 Value=0;
float speed_tx;
float speed_rx;
static XGpio Gpio;
XAxiDma AxiDma;
XScuGic Intc; //GIC
#define AXI_GPIO_DEV_ID	        XPAR_AXI_GPIO_0_DEVICE_IDint axi_dma_test()
{int Status;char speed_r[100];TxDone = 0;RxDone = 0;Error = 0;xil_printf( "----DMA Test----\r\n");XTtcPs_Start(&

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

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

相關文章

枚舉法——C++算法【淚光2929】

前言 "打牢基礎,萬事不愁" .C的基礎語法的學習."學以致用,邊學邊用",編程是實踐性很強的技術,在運用中理解,總結. 引入 枚舉在成熟框架中,用得還挺多的.枚舉可以讓程序更容易理解 之前寫過一篇關于枚舉的帖子--- 白話編程---數據篇(4)枚…

HarmonyOS NEXT應用開發-Notification Kit(用戶通知服務)notificationManager.cancelAll

1.notificationManager.cancelAll 支持設備Phone2in1TabletCarWearable cancelAll(callback: AsyncCallback<void>): void 取消當前應用所有已發布的通知。使用callback異步回調。 系統能力&#xff1a;SystemCapability.Notification.Notification 示例&#xff1a; …

Mac 創建QT按鈕以及一些操作

在創建QT項目好 后我們打開mainwindow.cpp&#xff0c;下面所示的代碼都是在這個cpp文件里面因為它是窗口的入口函數 #include "mainwindow.h" #include "ui_mainwindow.h" #include<QPushButton>//按鈕的頭文件MainWindow::MainWindow(QWidget *pa…

開源協議全解析:類型、選擇與法律風險規避指南

[TOC] 在當今開源軟件主導的技術生態中&#xff0c;開源協議&#xff08;Open Source License&#xff09;是決定項目能否被商業使用、二次開發的關鍵法律文件。據統計&#xff0c;GitHub上超過70%的項目使用某種形式的開源協議&#xff0c;但其中近30%存在協議兼容性問題。本…

TM1668芯片學習心得一

一、TM1668 是一種帶鍵盤掃描接口的LED&#xff08;發光二極管顯示器&#xff09;驅動控制專用電路&#xff0c;內部集成有MCU 數字接口、數據鎖存器、LED 高壓驅動、鍵盤掃描等電路。本產品性能優良&#xff0c;質量可靠。主要應用于VCR。 學習鏈接 二、 三、顯示寄存器的地址…

時空特征如何融合?LSTM+Resnet有奇效,SOTA方案預測準確率超91%

LSTM有著不錯的時序信息提取能力&#xff0c;ResNet有著不錯的空間特征信息提取能力。如果現在有時空特征融合的創新需求&#xff0c;我們是否能將LSTM和ResNet兩者的優點融合起來呢&#xff1f; 隨著這個思路下去&#xff0c;LSTM ResNet混合模型橫空出世&#xff0c;在各個…

[PRO_A7] SZ501 FPGA開發板簡介

SZ501 FPGA開發板簡介 概述 SZ501 FPGA開發板是專為高性能FPGA設計、快速原型開發和復雜應用調試打造的先進開發平臺。搭載Xilinx Artix-7系列XC7A100T FPGA芯片&#xff0c;SZ501提供卓越的邏輯運算能力和靈活的接口支持&#xff0c;廣泛適用于通信、信號處理、嵌入式系統及…

企業微信jdk 授權 記錄

1、npm install wecom/jssdk 2、index.html 引入 <script src"https://wwcdn.weixin.qq.com/node/open/js/wecom-jssdk-2.0.2.js"></script> 3、創建js import * as ww from "wecom/jssdk"; /*** 獲取企業微信jdk局方法----------------…

Android13增加第三方類實現加入到系統

1、將需要的添加包放在/frameworks/base/core/java/com目錄下&#xff0c;比如devmgr/devicemgr/DeviceMgr.java package com.devmgr.devicemgr; import android.content.Context; public class DeviceMgr {private volatile static DeviceMgr instance null;private Context…

計算機網絡核心知識點全解析(面試通關版)

一、網絡體系結構&#xff1a;從OSI到TCP/IP的分層設計 1.1 七層模型與四層模型對比 OSI七層模型核心功能TCP/IP四層對應典型協議生活類比應用層為應用程序提供服務&#xff08;如文件傳輸、郵件、Web瀏覽&#xff09;應用層HTTP、FTP、SMTP、DNS快遞面單信息&#xff08;收件…

AI圖稿生成訂單管理系統

讓設計生產“零誤差、全自動、秒響應” 一、核心價值&#xff1a;重構設計到生產的效率革命 效率提升70% 告別人工排版&#xff0c;AI自動復用歷史稿件模板&#xff0c;單次設計永久沉淀為可調用資產&#xff1b; 印刷文件生成速度達20萬張/分鐘&#xff0c;滿足電商大促、…

TwinCAT數據類型,%MX,%MD這些特殊符號

在 TwinCAT&#xff08;Beckhoff PLC 編程環境&#xff09;中&#xff0c;%MX、%MD 等符號是 IEC 61131-3 標準的地址表示法&#xff0c;用于直接訪問 PLC 的物理 I/O 或內存區域。這些符號通常用于 變量聲明 或 直接尋址&#xff0c;特別是在 TwinCAT 2 和 傳統 PLC 編程 中較…

基于UNet算法的農業遙感圖像語義分割——補充版

前言 本案例希望建立一個UNET網絡模型&#xff0c;來實現對農業遙感圖像語義分割的任務。本篇博客主要包括對上一篇博客中的相關遺留問題進行解決&#xff0c;并對網絡結構進行優化調整以適應個人的硬件設施——NVIDIA GeForce RTX 3050。 本案例的前兩篇博客直達鏈接基于UNe…

Compose筆記(二十一)--AnimationVisibility

這一節主要了解一下Compose的AnimationVisibility,AnimatedVisibility 是 Jetpack Compose 里用于實現組件可見性動畫效果的組件&#xff0c;借助它能讓組件在顯示和隱藏時帶有平滑的過渡動畫&#xff0c;從而提升用戶體驗。現總結如下: API 1. visible 含義&#xff1a;這是一…

基于 HT 構建 2D 智慧倉儲可視化系統的技術解析

在當今數字化時代&#xff0c;倉儲管理對于企業的運營效率和成本控制愈發關鍵。圖撲軟件&#xff08;Hightopo&#xff09;憑借其強大的 HT for Web 產品&#xff0c;打造出 2D 智慧倉儲可視化平臺&#xff0c;為倉儲管理帶來了全新的技術解決方案。 HT 是一款基于 WebGL、can…

HTML ASCII 編碼詳解

HTML ASCII 編碼詳解 引言 HTML&#xff08;HyperText Markup Language&#xff09;是一種用于創建網頁的標準標記語言。在HTML中&#xff0c;字符的表示方式非常重要&#xff0c;因為它直接影響到網頁內容的顯示效果。ASCII編碼作為一種基本的字符編碼方式&#xff0c;在HTM…

pinia-plugin-persistedstate的使用

pinia持久化存儲的使用 安裝 npm install pinia-plugin-persistedstate 注冊 import { createPinia } from pinia import piniaPluginPersistedstate from pinia-plugin-persistedstateconst pinia createPinia() pinia.use(piniaPluginPersistedstate)export default pinia …

Vue:el-table-tree懶加載數據

目錄 一、出現場景二、具體使用三、修改時重新加載樹節點四、新增、刪除重新加載樹節點 一、出現場景 在項目的開發過程中&#xff0c;我們經常會使用到表格樹的格式&#xff0c;但是猶豫數據較多&#xff0c;使用分頁又不符合項目需求時&#xff0c;就需要對樹進行懶加載的操…

ChipCN IDE KF32 導入工程后,無法編譯的問題

使用ChipON IDE for KungFu32 導入已有的工程是時&#xff0c;發現能夠編譯&#xff0c;但是點擊&#xff0c;同時選擇硬件調試時 沒有任何響應。查看工程調試配置時&#xff0c;發現如下問題&#xff1a; 沒有看到添加有啟動配置&#xff0c;說明就是這里的問題了(應該是IDE的…

前端筆記-Element-Plus

結束了vue的基礎學習&#xff0c;現在進一步學習組件 Element-Plus部分學習目標&#xff1a; Element Plus1、查閱官方文檔指南2、學習常用組件的使用方法3、Table、Pagination、Form4、Input、Input Number、Switch、Select、Date Picker、Button5、Message、MessageBox、N…