DMA-330(二)
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(二)的更多相关文章
- DMA过程分析
1.1 当我们在应用程序中编写write系统调用,向磁盘中写入数据时,写入请求会先调用底层写函数,将请求先写入内存中的页快速缓存(page cache)中,写入成功则立马返回,真正的写入磁盘操作会延迟 ...
- 智能车学习(五)—— dac学习
一.代码共享: 1.dac.h #ifndef DAC_H_ #define DAC_H_ #include "common.h" // 2.2 DAC控制寄存器0 位定义 #de ...
- STM32 HAL库之串口详细篇
一.基础认识 (一) 并行通信 原理:数据的各个位同时传输 优点:速度快 缺点:占用引脚资源多,通常工作时有多条数据线进行数据传输 8bit数据传输典型连接图: 传输的数据是二进制:11101010, ...
- STM32 ADC详细篇(基于HAL库)
一.基础认识 ADC就是模数转换,即将模拟量转换为数字量 l 分辨率,读出的数据的长度,如8位就是最大值为255的意思,即范围[0,255],12位就是最大值为4096,即范围[0,4096] l ...
- (stm32f103学习总结)—ADC模数转换实验
一.STM32F1 ADC介绍 TM32F103 系列一般都有 3 个 ADC,这些 ADC 可以独立使用,也可 以使用双重(提高采样率).STM32F1 的 ADC 是 12 位逐次 逼近型的模拟数 ...
- 二十二、DMA驱动
一.DMA简介 DMA(Direct Memory Access,直接内存存取),DMA传输将数据从一个地址空间复制到另外一个地址空间.传输过程由DMA控制器独立完成,它并没有拖延CPU的工作,可以让 ...
- 【iCore1S 双核心板_ARM】例程十二:DMA实验——存储器到存储器的传输
实验原理: DAM(直接存储器访问)传输不需要占用CPU,可以在存储器至存储器实现高速的数据 传输.本实验采用DAM2控制器的数据流0,选用通道0进行数据传输.通过LED的颜色来 判断传输是否成功. ...
- xilinx DMA IP核(二) —— 文档阅读
本笔记不记录DMA的Scatter/Gather特性.DMA上有三种总线:AXI4-LIte(对寄存器进行配置),AXI4-Memory Map(用于与内存交互)和AXI4 Stream(用于与外设交 ...
- 【iCore3 双核心板】例程二十七:DMA LAN实验——高速数据传输测速
实验指导书及代码包下载: http://pan.baidu.com/s/1o7qnCUI iCore3 购买链接: https://item.taobao.com/item.htm?id=524229 ...
- 【GMT43智能液晶模块】例程二十一:DMA LAN实验——高速数据传输测速
源代码下载链接: 链接:https://pan.baidu.com/s/1wQomZvOUP9_ZslZus_NSIA 提取码:3fmf 复制这段内容后打开百度网盘手机App,操作更方便哦 GMT43 ...
随机推荐
- php---将数组转化为数组对象
例子:array(1){ [0]=>array( 'id'=>111, 'name'=>'aaaa' ) } 由上面的例子转化成下面对象,怎么转化?急急 急 谢谢array(1) { ...
- pch找不到pod里头文件
1. 问题描述 将文件用pod管理起来后,pod install成功,而且这些文件也可以搜索得到,但是pch文件里import的头文件找不到,而这些头文件又确确实实在你的pod项目下. 2. 解决办法 ...
- mongoDB 安装配置
1. 配置文件: 建立配置文件 :mongodb.conf dbpath=D:\mongoDb\data\db #配置数据库目录路径,预先手动创建db目录 logpath=D:\mongoDb\dat ...
- Emiller's Advanced Topics In Nginx Module Development
Emiller的Nginx模块开发指南 By Evan Miller DRAFT: August 13, 2009 (changes) 翻译:Kongch @2010年1月5日 0:04am -- 2 ...
- 删除Checkout with Multiple Addresses
如果选择No,您的客户在结账时只可以输入一个收货地址,订单的货物都会送到这个地址.如果您选择Yes,您的客户将可以选择发货到多个地址,在购物车中的Proceed to Checkout按钮下面将会出现 ...
- Codeforces Round #376 (Div. 2) C. Socks---并查集+贪心
题目链接:http://codeforces.com/problemset/problem/731/C 题意:有n只袜子,每只都有一个颜色,现在他的妈妈要去出差m天,然后让他每天穿第 L 和第 R 只 ...
- JS之tagNaem和nodeName
nodeName是节点的属性,tagName是元素的属性.元素是节点的子集.不是任何节点都有tagName的,比如文本节点,仅有nodeName属性. 这个和css中的倾斜和斜体的关系是一样的.不是所 ...
- Java学习-005-初学常用的几个经典循环控制源代码
最近一段时间公司 App 改版,一直处在需求评审.代码评审.测试计划.测试用例.用例评审.用例执行.缺陷管理.测试总结的循环中,因而博客也好久没有更新了.虽然工作确实忙了点,但是也是自己懒惰了,从今天 ...
- Android Annotations 注解例子
1.AndroidAnnotations官网: http://androidannotations.org/ (也许你需要FQ) 2.eclipse中使用androidannotations的配置方法 ...
- 在Fedora8上安装jdk-7u25-linux-i586.rpm的步骤
按:我们身处一个信息爆炸的年代,当有事不决时,打开搜索引擎瞬息间就能得到海量的答案.但是,这未必会让你的问题迎刃而解,因此很多“答案”会把你引向错误的方向,浪费你的时间.希望搜索引擎能有所改进,对明确 ...