DMA内部的block diagram:

DMAC包含一个instruction processing block,来process program code,control DMA transfer.

program code一般放在一个system memory中,DMA通过AXI接口来访问.

DMA内部有一个cache来临时保存instructions,cache的length和depth可配.

该IP DMAC内部可配8个DMA channel,每个channel都支持一个concurrent thread DMA operation.

DMA内部通过round-robin的方式来调度每个channel的thread,来执行.

DMA内部使用variable-length instructions,由1-6byte组成。

当一个thread需要instruction时,首先进行look-up cache,如果 cache hit occur,cache立刻提供数据.

如果cache miss,thread stalled,DMAC 通过AXI master interface进行cache line fill.

当DMA进行load/store instruction,DMA将相应的指令加载到read/write queue.

通过multi First-In-First-Out(MFIFO)进行data buffer.

peripheral request interface支持DMA-capable peripherals connection,

同时提供multiple interrupt outputs/events 来与external processor进行通信.

BUS:

APB bus可以访问到:

1)DMA manager thread/channel thread的状态;

2)issue an instruction;DMAGO----start a dma transaction, DMASEV------signals the occurrence of an event

DMAKILL----Terminates a thread,

3)enable/clear interrupt;

DMA channel进行访问时,AXI的ID号,由channel的号码来决定.

DMA manager进行访问时,AXI的ID号,由channel的总数来决定.

Peripheral request interafce:

支持具备DMA-capable的peripheral.

通过命令DMAWFP来将一个peripheral request interface映射到一个DMA channel.

每一个peripheral interface,DMAC都有一个FIFO来capture peripheral request,这个FIFO的depth表示

可以同时active的request的数量.这个FIFO之后,drready便为0,无效。

dr信号表示peripheral request bus;

da信号表示DMAC acknowledge bus;

valid/ready handshake信号,

drtype表示:request a single transfer/ request a burst transfer/ acknowledge a flush request.(只支持fixed/incrementing address)

不支持wrapping-address的burst传输,不支持unaligned burst传输。

drlast信号表示:DMA transfer sequence的最后一个request.

datype信号表示:complete single transfer/ complete burst transfer/ issue a flush request.

Interrupt interface:

Reset initialization interface:

初始化operating state,当DMA rst之后.

在integration过程中,一些tie-off的值.

boot_manager_ns,唯一的确定DMA manager的security state的信号.

boot_from_pc,rst后,决定DMA进入executing state,由boot_addr提供start address

还是进入Stopped state,由APB interface提供第一个instruction.

boot_irq_ns,使得每个irq signal带有一个security state.

boot_periph_ns,使得每个peripheral req interface带有一个security state.

Operating states:

在rst之后,所有的DMA channel thread都在stopped state.之后根据tie-off的值进行initialization(到Executing state).

虚线外部分,表示都是在AXI传输中的一些可能state.

Using events and interrupt:

可以通过配置寄存器INTEN来控制event-interrupt resource为一个event或者interrupt.

DMAWFE命令与DMASEV命令:

DMAWFE命令先发,thread stall 等待event occur,DMASEV用同样的event number,来重新启动thread.

如果DMASEV已经先发出,在发同一个event number的DMAWFE时,halt execution one aclk cycle, 然后继续执行.

Abort handing

DMAC设计中并没有针对abort的设计,所以发生这种情况时,需要external agent(processor)来进行处理.

通过发出irq_abort来通知processor.

Security usage:

三个对象DMA manager thread/ Events and interrupts/ Peripheral request interfaces.

DNS为0,manager thread在security state时,可以访问security/non-security

DNS为1,manager thread在non-security state时,不能访问security的Events Interrupts和security的Peripheral.

CNS为1,channel thread的security/non_security类似.

DMA-330(二)的更多相关文章

  1. DMA过程分析

    1.1 当我们在应用程序中编写write系统调用,向磁盘中写入数据时,写入请求会先调用底层写函数,将请求先写入内存中的页快速缓存(page cache)中,写入成功则立马返回,真正的写入磁盘操作会延迟 ...

  2. 智能车学习(五)—— dac学习

    一.代码共享: 1.dac.h #ifndef DAC_H_ #define DAC_H_ #include "common.h" // 2.2 DAC控制寄存器0 位定义 #de ...

  3. STM32 HAL库之串口详细篇

    一.基础认识 (一) 并行通信 原理:数据的各个位同时传输 优点:速度快 缺点:占用引脚资源多,通常工作时有多条数据线进行数据传输 8bit数据传输典型连接图: 传输的数据是二进制:11101010, ...

  4. STM32 ADC详细篇(基于HAL库)

    一.基础认识 ADC就是模数转换,即将模拟量转换为数字量 l  分辨率,读出的数据的长度,如8位就是最大值为255的意思,即范围[0,255],12位就是最大值为4096,即范围[0,4096] l  ...

  5. (stm32f103学习总结)—ADC模数转换实验

    一.STM32F1 ADC介绍 TM32F103 系列一般都有 3 个 ADC,这些 ADC 可以独立使用,也可 以使用双重(提高采样率).STM32F1 的 ADC 是 12 位逐次 逼近型的模拟数 ...

  6. 二十二、DMA驱动

    一.DMA简介 DMA(Direct Memory Access,直接内存存取),DMA传输将数据从一个地址空间复制到另外一个地址空间.传输过程由DMA控制器独立完成,它并没有拖延CPU的工作,可以让 ...

  7. 【iCore1S 双核心板_ARM】例程十二:DMA实验——存储器到存储器的传输

    实验原理: DAM(直接存储器访问)传输不需要占用CPU,可以在存储器至存储器实现高速的数据 传输.本实验采用DAM2控制器的数据流0,选用通道0进行数据传输.通过LED的颜色来 判断传输是否成功. ...

  8. xilinx DMA IP核(二) —— 文档阅读

    本笔记不记录DMA的Scatter/Gather特性.DMA上有三种总线:AXI4-LIte(对寄存器进行配置),AXI4-Memory Map(用于与内存交互)和AXI4 Stream(用于与外设交 ...

  9. 【iCore3 双核心板】例程二十七:DMA LAN实验——高速数据传输测速

    实验指导书及代码包下载: http://pan.baidu.com/s/1o7qnCUI iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...

  10. 【GMT43智能液晶模块】例程二十一:DMA LAN实验——高速数据传输测速

    源代码下载链接: 链接:https://pan.baidu.com/s/1wQomZvOUP9_ZslZus_NSIA 提取码:3fmf 复制这段内容后打开百度网盘手机App,操作更方便哦 GMT43 ...

随机推荐

  1. Win7局域网文件共享方法

      右击桌面网络----属性----更改高级共享设置 (注释:查看当前网络 比如:家庭网络.公共网络 等!) "我这里为公共网络"   选择 公共网络---选择以下选项:启动网络发 ...

  2. JavaScript正则表达式(二)

    定义 JavaScript种正则表达式有两种定义方式,定义一个匹配类似 <%XXX%> 的字符串 1. 构造函数 var reg=new RegExp('<%[^%>]+%&g ...

  3. backbone 更新1.1.2

    backbone已经更新到1.1.2,在这里总结一下 我还一直用的1.0的版本,更新确实出现了一些问题 1.1.0  Backbone Views no longer automatically at ...

  4. 转:ASP.NET MVC + EF 更新的几种方式

    1.常用 db.Entry(实体).State = EntityState.Modified;db.SaveChanges(); 2.指定更新 db.Configuration.ValidateOnS ...

  5. 二级c程序设计题(2)

    原文:http://www.cnblogs.com/imaker/p/6128049.html 所属年份:2010.9;2012.3编写函数fun,其功能是:根据以下公式求π的值(要求精度0.0005 ...

  6. offset/client/scroll一些总结

    offset/client/scroll一些总结 1.offset 首先offset共有五个值 1.offsetParent 2.offsetTop 3.offsetLeft 4.offsetWidt ...

  7. [代码片段]读取BMP文件(二)

    #include <stdio.h> #include <stdlib.h> #pragma pack(2) /*定义WORD为两个字节的类型*/ typedef unsign ...

  8. Review of Segmentation for Medical image analysis

    成像方法:X射线,CT,MRI,SPECT,PET等 分割的定义: Image segmentation is a procedure for extracting the region of int ...

  9. 最近在研究电台类app,分享2个源码大家一起讨论

    好像去年有一阵,电台类的app特别火爆,喜马拉雅和蜻蜓FM互相还撕逼.听老罗,听好好说话,都得在电台app里,所以我想研究研究这些app.我没那么多资源,只好从app的开发架构方面去研究. 我看api ...

  10. 开发者必知的8款App快速开发工具

    开发者必知的8款App快速开发工具 “我有一个好创意,就差一个CTO……” “原生APP开发难度大,周期长,成本高,还没上线市场已经被占领了.” “APP版本迭代更新,都是企业的一道难关,没有一个一劳 ...