AG32 DMAC实现内部MCU与FPGA通信【知识库】

news2025/6/2 9:09:06

一、简介

DMAC是独立于MCU和FPGA之外的外设,连接到AHB总线,可通过寄存器配置实现直接内存存取。通过AHB总线实现MCU与FPGA进行高性能通信。理论最高传输速率可达 bus_clock * 32 = 168MHz * 32 = 5376Mbps = 5.25Gbps,超频到336MHz的形况下,可以翻倍。

二、流控

DMAC可选的流控模式(DMAC_FlowControlTypeDef)有以下几种,流控模式是较为关键的参数,决定了数据流怎么传输、由什么控制:

typedef enum
{
  DMAC_MEM_TO_MEM_DMA_CTRL                          = 0,  // 内存到内存,DMAC控制
  DMAC_MEM_TO_PERIPHERAL_DMA_CTRL                   = 1,  // 内存到外设,DMAC控制 
  DMAC_PERIPHERAL_TO_MEM_DMA_CTRL                   = 2,  // 外设到内存,DMAC控制
  DMAC_PERIPHERAL_TO_PERIPHERAL_DMA_CTRL            = 3,  // 外设到外设,DMAC控制
  DMAC_PERIPHERAL_TO_PERIPHERAL_DST_PERIPHERAL_CTRL = 4,  // 外设到外设,DSI控制
  DMAC_MEM_TO_PERIPHERAL_PERIPHERAL_CTRL            = 5,  // 内存到外设,外设控制
  DMAC_PERIPHERAL_TO_MEM_PERIPHERAL_CTRL            = 6,  // 外设到内存,外设控制
  DMAC_PERIPHERAL_TO_PERIPHERAL_SRC_PERIPHERAL_CTRL = 7,  // 外设到外设,源端外设控制
} DMAC_FlowControlTypeDef;

在这里进行简单说明

  1. 以上配置中所说的内存就是指内部SRAM,外设可以是真实的内部外设比如UART、IIC,也可以是FPGA通过AHB实现的外设或者通过AHB2APB的桥连接实现的APB外设,也可以是通过AHB2HBUS连接的内置hyperRAM(?待定,未测试)。
  2. 如果是FPGA实现的外设,一般使用DMAC_PERIPHERAL_TO_MEM_PERIPHERAL_CTRL/
    DMAC_PERIPHERAL_TO_PERIPHERAL_DMA_CTRL, 可以有4个通道,主要依赖两个信号进行流控,ext_dma_DMACLBREQ用于FPGA告知DMAC可以进行传输,ext_dma_DMACCLR用于DMAC告知FPGA本轮传输结束,可以清除REQ标志。
  3. 针对AHB外设 进行性传输支持最大256长度的突发,但针对APB外设则不支持突发(APB本身不支持)

三、关键函数

SYS_EnableAHBClock(AHB_MASK_DMAC0) ; // 开启时钟
DMAC_Init() // 基本初始化
DMAC_Config(DMAC_ChannelNumTypeDef channel, uint32_t srcAddr, uint32_t dstAddr,
                 DMAC_AddrIncTypeDef srcIncr, DMAC_AddrIncTypeDef dstIncr,
                 DMAC_WidthTypeDef srcWidth, DMAC_WidthTypeDef dstWidth,
                 DMAC_BurstTypeDef srcBurst, DMAC_BurstTypeDef dstBurst,
                 uint32_t transferSize, DMAC_FlowControlTypeDef transferType,
                 uint32_t srcPeripheral, uint32_t dstPeripheral
                 ); // 配置,配置完成后会立刻开始传输。
DMAC_WaitChannel(DMAC_ChannelNumTypeDef channel) ; // 等待传输完成
DMAC_ClearChannelIntTC(DMAC_ChannelNumTypeDef channel); // 清除中断标志位
DMAC_IsEnabledChannel(DMAC_ChannelNumTypeDef channel); // 查询通道是否开启/活动,和ZYNQ类似,可以while等待(DMAC_WaitChannel的实现方式),也可以异步查询
DMAC_WaitedTransfer(DMAC_ChannelNumTypeDef channel, uint32_t srcAddr, uint32_t dstAddr,
                         DMAC_AddrIncTypeDef srcIncr, DMAC_AddrIncTypeDef dstIncr,
                         DMAC_WidthTypeDef srcWidth, DMAC_WidthTypeDef dstWidth,
                         DMAC_BurstTypeDef srcBurst, DMAC_BurstTypeDef dstBurst,
                         uint32_t transferSize, DMAC_FlowControlTypeDef transferType,
                         uint32_t srcPeripheral, uint32_t dstPeripheral
                         ); // 配置并等待传输完成

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2393936.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

webrtc初了解

1. webrtc的简介 一、WebRTC 是什么? Web Real-Time Communication(网页实时通信),是浏览器原生支持的实时音视频通信技术,无需安装插件或客户端,可直接在浏览器之间实现点对点(P2P&#xff09…

[STM32学习笔记(九)]CubeMX项目使用系统定时器SysTick的中断服务函数进行定时

有很多文章说明了由于HAL_Delay()函数的本质是系统定时器计数,通过全局变量uwTick的不断增加实现的比较延迟。调用HAL_Delay()函数会阻塞其他工作,因此在外设ISR进程调用该延迟时,要特别小心。 因此,现在考虑,既然系统…

将ipynb文件转换为markdown格式文件

文章目录 将ipynb文件转换为markdown格式文件nbconvert 包安装nbconvert 使用 将ipynb文件转换为markdown格式文件 有时候,我们需要把Jupyter notebook的.ipynb格式文件转换为markdown格式.md,便于使用。 那么,我们可以通过安装nbconvert包&a…

Vulnhub_Zico2_wp

一、信息收集 1、主机发现 arp-scan -l 2、端口扫描 nmap -sS -sV 192.168.66.144 nmap -p- -Pn -sC -sV -n 192.168.66.144 whatweb -v 192.168.66.144 这里开放了3个端口,先80端口拿去目录,然后测试下22端口有没有什么未授权之类的,然后…

【玩转腾讯混元大模型】腾讯混元大模型AIGC系列产品深度体验

【玩转腾讯混元大模型】腾讯混元大模型AIGC系列产品深度体验 腾讯推出的系列AI产品:混元大模型、大模型图像创作引擎、大模型视频创作引擎、腾讯元宝,共同构成了一个强大的AI生态系统;凭借腾讯自研的大规模预训练技术和先进的自然语言处理、计…

Attention Is All You Need论文阅读笔记

Attention is All You Need是如今机器学习研究者必读的论文,该文章提出的Transformer架构是如今很多机器学习项目的基础,说该文章极大推动了机器学习领域的研究也不为过。 但这么重要,也是必读的文章对初学者来说其实并不友好,很多…

如何制作全景VR图?

全景VR图,特别是720度全景VR,为观众提供一种沉浸式体验。 全景VR图能够捕捉场景的全貌,还能将多个角度的图片或视频无缝拼接成一个完整的全景视角,让观众在虚拟环境中自由探索。随着虚拟现实(VR)技术的飞速…

Flask与PostgreSQL交互教程

目录 1. 项目结构2. 环境准备2.1 安装依赖2.2 使用Docker启动PostgreSQL 3. 数据库配置3.1 环境变量配置3.2 数据库连接配置 4. 定义数据库模型5. 实现API接口5.1 创建用户5.2 获取所有用户5.3 获取单个用户5.4 更新用户5.5 删除用户 6. 运行应用7. API测试7.1 创建用户7.2 获取…

XJTU-SY轴承振动数据集的json自封装

1.最终形式的形式 不用再去翻文档找对应的故障类型,采样率等信息了,所有的信息自包含在.json文件里,15个测试例,一个测试例对应一整个.json文件。 {"dataset": {"name": "XJTU-SY_Bearing_Datasets&quo…

Spring AI 系列2: Advisors增强器简介

一、Advisors简介 1.1 Advisors定义 Advisors 是在 AI 应用程序中处理请求和响应的拦截器。我们可以使用它们为提示流程设置额外的功能。例如,可以建立聊天历史、排除敏感词或为每个请求添加额外的上下文。 Spring AI的Advisor,本质上是一个拦截…

通过Func实现飞书应用通知消息加急处理

前言 在现代企业运作中,及时响应告警信息对保障系统的稳定性和业务的连续性至关重要。随着业务的数字化转型,越来越多的企业依赖于复杂的技术架构,这使得故障和异常事件的及时处理变得愈发重要。传统的告警通知方式往往存在响应不及时、信息…

【目标检测】【AAAI-2022】Anchor DETR

Anchor DETR: Query Design for Transformer-Based Object Detection 锚点DETR:基于Transformer的目标检测查询设计 论文链接 代码链接 摘要 在本文中,我们提出了一种基于Transformer的目标检测新型查询设计。此前的Transformer检测器中&am…

智慧工厂整体解决方案

该方案围绕智能工厂建设,阐述其基于工业 4.0 和数字化转型需求,通过物联网、大数据、人工智能等技术实现生产自动化、数据化管理及联网协同的特点。建设步骤包括评估现状、设定目标、制定方案、测试调整、实施计划及持续改进,需整合 MES、ERP 等软件系统与传感器、机器人等硬…

秋招Day12 - 计算机网络 - TCP

详细说一下TCP的三次握手机制 TCP的三次握手机制是为了在两个主机之间建立可靠的连接,这个机制确保两端的通信是同步的,并且在开始传输数据前,双方都做好了要通信的准备。 说说SYN的概念? SYN 是 TCP 协议中用来建立连接的一个标…

vueflow

自定义节点&#xff0c;自定义线&#xff0c;具体细节还未完善&#xff0c;实现效果&#xff1a; 1.安装vueflow 2.目录如下 3. index.vue <script setup> import { ref } from vue import { VueFlow, useVueFlow } from vue-flow/core import { Background } from vue-…

LearnOpenGL-笔记-其十一

Normal Mapping 又到了介绍法线贴图的地方&#xff0c;我感觉我已经写了很多遍了... 法线贴图用最简单的话来介绍的话&#xff0c;就是通过修改贴图对应物体表面的法线来修改光照效果&#xff0c;从而在不修改物体实际几何形状的前提下实现不同于物体几何形状的视觉效果。 因…

openppp2 -- 1.0.0.25225 优化多线接入运营商路由调配

本文涉及到的内容&#xff0c;涉及到上个发行版本相关内容&#xff0c;人们在阅读本文之前&#xff0c;建议应当详细阅读上个版本之中的VBGP技术相关的介绍。 openppp2 -- 1.0.0.25196 版本新增的VBGP技术-CSDN博客 我们知道在现代大型的 Internet 网络服务商&#xff0c;很多…

详细到用手撕transformer下半部分

之前我们讨论了如何实现 Transformer 的核心多头注意力机制&#xff0c;那么这期我们来完整地实现整个 Transformer 的编码器和解码器。 Transformer 架构最初由 Vaswani 等人在 2017 年的论文《Attention Is All You Need》中提出&#xff0c;专为序列到序列&#xff08;seq2s…

【Sqoop基础】Sqoop生态集成:与HDFS、Hive、HBase等组件的协同关系深度解析

目录 1 Sqoop概述与大数据生态定位 2 Sqoop与HDFS的深度集成 2.1 技术实现原理 2.2 详细工作流程 2.3 性能优化实践 3 Sqoop与Hive的高效协同 3.1 集成架构设计 3.2 数据类型映射处理 3.3 案例演示 4 Sqoop与HBase的实时集成 4.1 数据模型转换挑战 4.2 详细集成流程…

MySQL + CloudCanal + Iceberg + StarRocks 构建全栈数据服务

简述 在业务数据快速膨胀的今天&#xff0c;企业对 低成本存储 与 实时查询分析能力 的需求愈发迫切。 本文将带你实战构建一条 MySQL 到 Iceberg 的数据链路&#xff0c;借助 CloudCanal 快速完成数据迁移与同步&#xff0c;并使用 StarRocks 完成数据查询等操作&#xff0c…