zynq中dma与axi4总线
为什么在zynq中dma和axi联系这么密切?通过上面的介绍我们知道zynq中基本是以axi总线完成相关功能的:
图4‑34连接 ps 和 pl 的 axi 互联和接口的构架
在zynq中,支持axi-lite,axi4和axi-stream三种总线,但ps与pl之间的接口却只支持前两种,axi-stream只能在pl中实现,不能直接和ps相连,必须通过axi-lite或axi4转接。ps与pl之间的物理接口有9个,包括4个axi-gp接口和4个axi-hp接口、1个axi-acp接口。
xilinx提供的从axi到axi-stream转换的ip核有:axi-dma,axi-datamover,axi-fifo-mm2s以及axi-vdma等
axi-dma:实现从ps内存到pl高速传输高速通道axi-hpaxi-stream的转换
axi-fifo-mm2s:实现从ps内存到pl通用传输通道axi-gpaxi-stream的转换
axi-datamover:实现从ps内存到pl高速传输高速通道axi-hpaxi-stream的转换,只不过这次是完全由pl控制的,ps是完全被动的。
axi-vdma:实现从ps内存到pl高速传输高速通道axi-hpaxi-stream的转换,只不过是专门针对视频、图像等二维数据的。
除了上面的还有一个axi-cdma ip核,这个是由pl完成的将数据从内存的一个位置搬移到另一个位置,无需cpu来插手。
上面的ip是完成总线协议转换,如果需要做某些处理(如变换、迭代、训练……),则需要生成一个自定义stream类型ip,与上面的stream接口连接起来,实现数据输入输出。用户的功能在自定义stream类型ip中实现。
综上,在zynq中dma和axi是不可分割的两者,所以介绍dma也是必须的。
1.1.1dma简介
dma是一种内存访问技术,允许某些计算机内部的硬件子系统可以独立的直接读写内存,而不需要cpu介入处理,从而不需要cpu的大量中断负载,否则,cpu需要从来源把每一片段的数据复制到寄存器,然后在把他们再次写回到新的地方,在这个时间里,cpu就无法执行其他的任务。
dma是一种快速数据传送方式,通常用来传送数据量较多的数据块。使用dma时,cpu向dma控制器发送一个存储器传输请求,这样当dma控制器在传输的时候,cpu执行其他的操作,传输完成时dma以中断的方式通知cpu。
dma传输过程的示意图为:
图4‑35dma传输过程的示意图
dma的传输过程为:
1、为了配置用dma传输数据到存储器,处理器(cortex-a9)发出一条指令。
2、dma控制器把数据从外设传输到存储器或者从存储器传输到存储器,从而较少cpu处理的事务量。
3、输出传输完成后,向cpu发出一个中断通知dma传输可以关闭。
为了发起传输事务,dma控制器必须得到以下信息:
(1)、源地址——数据被读出的地址
(2)、目的地址——数据被写入的地址
(3)、传输长度——应传输的字节数
我们可以理解,无论是程序控制方式还是中断控制方式,数据的传输都必须经过处理器。而在一个嵌入式微处理器为主控的应用系统中,当有大量数据在存储器和外设之间传输时,采用程序控制方式显然不合适,但是若采用中断控制方式,会造成中断次数过于频繁,不仅速度上不去,还需要处理器及时干预进行处理,大大降低了工作的效率。
然而,使用dma的好处就是它不需要cpu的干预而直接服务外设,这样cpu就可以去处理别的事务,从而提高系统的效率,对于慢速设备,其作用只是降低cpu的使用率,但对于高速设备,它不只是降低cpu的使用率,而且能大大提高硬件设备的吞吐量。因为对于这种设备,cpu直接供应数据的速度太低。因cpu只能一个总线周期最多存取一次总线,而且对于处理器,它不能把内存中a地址的值直接搬到b地址。它只能先把a地址的值搬到一个寄存器,然后再从这个寄存器搬到b地址。也就是说,对于处理器,要花费两个总线周期才能将a地址的值送到b地址。而dma就不同了,一般系统中的dma都有突发(burst)传输的能力,在这种模式下,dma能一次传输几个甚至几十个字节的数据,所以使用dma能使设备的吞吐能力大为增强。
鉴于上面的优势,系统中使用dma是必要的,能够提高数据吞吐量,减轻了cpu的负担,使得整个系统的性能得到提高。
说了这么多优点,那么dma缺点是什么呢?dma传送期间cpu被挂起,部分或完全失去对系统总线的控制,这可能会影响cpu对中断请求的及时响应与处理。因此,在一些小系统或速度要求不高、数据传输量不大的系统中,一般并不用dma方式。因为dma允许外设直接访问内存,从而形成对总线的独占。这在实时性强的硬实时系统嵌入式开发中将会造成中断延时过长。
dmac为dma控制器
dma传送虽然脱离cpu的控制,但并不是说dma传送不需要进行控制和管理。通常是采用dma控制器来取代cpu,负责dma传送的全过程控制。目前dma控制器都是可编程的大规模集成芯片。
图4‑36dmac结构
dma控制器是内存储器同外设之间进行高速数据传送时的硬件控制电路,是一种实现直接数据传送的专用处理器,它必须能取代在程序控制传送中由cpu和软件所完成的各项功能。它的主要功能是:
(1)dmac同外设之间有一对联络信号线--外设的dma请求信号dreq以及 dmac向外设发出的dma响应信号dack;(如下图)
(2)dmac在接收到dreq后,同cpu之间也有一对联络信号线--dmac向cpu 发出总线请求信号(hold或busrq),cpu在当前总线周期结束后向dmac发出总线响应信号(hlda或busak),dmac接管对总线的控制权,进入dma操作方式;
(3)能发出地址信息,对存储器寻址,并修改地址指针,dmac内部必须有能自动加1或减1的地址寄存器;
(4)能决定传送的字节数,并能判断dma传送是否结束。dma内部必须有能自动减1的字计数寄存器,计数结束产生终止计数信号;
(5)能发出dma结束信号,释放总线,使cpu恢复总线控制权;
(6)能发出读、写控制信号,包括存储器访问信号和i/o访问信号。dmac内部必须有时序和读写控制逻辑。
图4‑37dmac在dma中的作用示意图(一)
图4‑38dmac在dma中的作用示意图(二)
原文标题:zynq中dma与axi4总线-dma简介
文章出处:【微信公众号:fpga之家】欢迎添加关注!文章转载请注明出处。
重点介绍有关汽车用SiC技术
中图科技等第三代半导体企业加速资本化进程 后摩尔时代行业未来可期
探究一下俄罗斯的网红Wi-Fi天线的工作原理
霍金神预言:人工智能在未来会成为人类的威胁,人们现在已经离不开它!
CC1101RGPR CC2541F256RHAR CC1125RHBR CC1120RHBR CC2640R2FRHBR
ZYNQ中DMA与AXI4总线
高通推出Wi-Fi 7商用解决方案 AMD合作推出Wi-Fi 6E模块
融合CDN行为分析动态加速解决方案
机器人要走入智能家居还需突破什么?
西部数据宣布受损工厂已恢复生产 损失达3.4亿美元
自制一个100W的快充电源
线性马达在烟草加工、配送硬核设备中的应用
区块链数字资产交易系统搭建币币合约交易所开发
PCBA加工贴片元器件与插件元器件有什么区别?
实现数字显示的关键是通过A/D转换装置把连续变化的模拟量变换成什么?
Gartner预测未来三年全球半导体资本支出将保持连续增长
为什么Apple Watch S4国行取消了ECG心电图详细原因分析
智能电表怎么看,新电表怎么算电费
三星S21系列首发高通第二代3D超声波指纹识别技术
频谱分配标准化的延迟性可能会在一定程度上阻碍5G固定无线接入市场