dma控制器由什么组成

控制/MCU

1813人已加入

描述

  DMA既可以指内存和外设直接存取数据这种内存访问的计算机技术,又可以指实现该技术的硬件模块(对于通用计算机PC而言,DMA控制逻辑由CPU和DMA控制接口逻辑芯片共同组成,嵌入式系统的DMA控制器内建在处理器芯片内部,一般称为DMA控制器,DMAC)。

  值得注意的是,通常只有数据流量较大(kBps或者更高)的外设才需要支持DMA能力,这些应用方面典型的例子包括视频、音频和网络接口。

  DMAC可以在两种模式下运行:无描述符存取模式和描述符存取模式。模式的选取由DCSRx[NODESCFETCH]位决定。同样在同一时间内,不同的通道里可以分别使用这两种模式。通道在转换运行模式之前必须停止数据处理。如果出现错误,则通道停留在停止状态,等待程序处理。

  (1)无描述符存取模式

  在无描述符存取模式下,DDADRx被保留。程序不可以向DDADRx中写入数据,并且必须加载DSADRx、DTADRx和DCMDx寄存器。当运行位被设置,DMAC立刻运行以传输数据。无描述符存取在数据传输的开始时被执行。

  一个典型的无描述符存取操作顺序如下。

  1)复位后,通道处于未初始化状态。

  2)设置DCSR[RUN]位为0,设置DCSR[NODESCFETCH]位为1。

  3)程序将源地址写入DSADR寄存器,将目标地址写入DTADR寄存器,将命令写入DCMD寄存器。

  4)向DCSR[RUN]位中写入1,然后无描述符存取被执行。

  5)通道等待数据传输请求。

  6)通道传输数据,数据量由DCMD[SIZE]和DCMD[LENGTH]较小者决定。

  7)在DCMD[LENGTH]被设置为0之前,通道等待下一次数据请求。

  8)DDADR[STOP]被设置为1,通道运行终止。

  (2) 有描述符存取模式

  在有描述符存取模式下,DMAC的寄存器用内存中的DMA描述符数据填充。多个DMA描述符可以被链成一个链表。这就允许DMA通道在一系列不连续的地址上进行数据传输。一个典型的有描述符存取模式的操作步骤如下。

  1)复位后,通道处于未初始化状态。

  2)程序将描述符地址(16字节对齐)写入DDADR寄存器。

  3)程序向DCSR[RUN]中写入1。

  4)DMAC从DDADR标记的地址中读取4字长的描述符,其中各字加载情况如下:

  · Word [0] -》 DDADRx寄存器;

  · Word [1] -》 DSADRx寄存器;

  · Word [2] -》 DTADRx寄存器;

  · Word [3] -》 DCMDx寄存器。

  5)通道等待数据传输请求。

  6)通道传输数据,数据量由DCMD[SIZE]和DCMD[LENGTH]较小者决定。

  7)在DCMD[LENGTH]被设置为0之前,通道等待下一次数据请求。

  8)DDADR[STOP]被设置为1,通道运行终止,否则继续运行

  DMA控制器的基本组成

  一个DMA控制器,实际上是采用DMA方式的外围设备与系统总线之间的接口电路,这个接口电路是在中断接口的基础上再加DMA机构组成。习惯上将DMA方式的接口电路称为DMA控制器。

  (1)内存地址计数器:用于存放内存中要交换的数据的地址。在 DMA传送前,须通过程序将数据在内存中的起始位置(首地址)送到内存地址计数器。而当 DMA 传送时,每交换一次数据,将地址计数器加“1”,从而以增量方式给出内存中要交换的一批数据的地址。

  (2)字计数器:用于记录传送数据块的长度(多少字数)。其内容也是在数据传送之前由程序预置,交换的字数通常以补码形式表示。在DMA传送时,每传送一个字,字计数器就加“1”。当计数器溢出即最高位产生进位时,表示这批数据传送完毕,于是引起DMA控制器向CPU发出中断信号。

  (3)数据缓冲寄存器:用于暂存每次传送的数据(一个字)。当输入时,由设备(如磁盘)送往数据缓冲寄存器,再由缓冲寄存器通过数据总线送到内存。反之,输出时,由内存通过数据总线送到数据缓冲寄存器,然后再送到设备。

  (4)“DMA请求”标志:每当设备准备好一个数据字后给出一个控制信号,使“DMA

  请求”标志置“1”。该标志置位后向“控制/状态”逻辑发出DMA请求,后者又向CPU发出总线使用权的请求(HOLD),CPU响应此请求后发回响应信号HLDA,“控制/状态”逻辑接收此信号后发出DMA响应信号,使“DMA 请求”标志复位,为交换下一个字做好准备。

  (5)“控制/状态”逻辑:由控制和时序电路以及状态标志等组成,用于修改内存地址计数器和字计数器,指定传送类型(输入或输出),并对“DMA请求”信号和CPU响应信号进行协调和同步。

  (6)中断机构:当字计数器溢出时,意味着一组数据交换完毕,由溢出信号触发中断机构,向CPU提出中断报告。

  DMA控制器

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分