Crossbar的多通道DMA控制器设计

Crossbar的多通道DMA控制器设计,第1张

  1 简介

  在DMA控制器加入仲裁模块,对多个传输请求进行排序,通过存储器配置模式减少CPU 的配置时间和中断次数,但还不能保证对多任务传输的宽带需求;也有把传输任务分为实时任务和非实时任务的,按实时优先级实现系统的实时传输,但是仍需系统对任务进行优先级排序,占用系统处理时间;分别通过预存取和写循环、加入重排列单元、链模式和双缓冲器以及采用不同大小的缓存等方法提高 DMA 控制器的传输效率。但这些改进方法均只能保证 DMA 控制器在同一时间传输单一任务,为了实现系统多任务实时传输,本文拟引入Crossbar 交换结构,并设计相应的多通道传输 DMA控制器,保证系统多任务传输的同时提高系统响应的实时性

  为了具体介绍本多通道 DMA 控制器的设计方案,下面首先对基于 Crossbar 的多通道 DMA 控制器的工作原理进行详细分析,接着具体说明各个模块的设计实现,然后对设计进行验证和分析比较实验结果,并进行总结。

  2 多通道DMA控制器

  传统 DMA 控制器是采用共享总线方式来实现数据传输的,系统实现数据传输的过程为:(1)首先设备向 DMAC 发出 DMA 请求。(2)DMAC 接到设备请求后,向 CPU 发出总线请求,请求接管系统总线。(3)CPU 在执行完当前指令周期后,向 DMAC发出总线响应信号。(4)CPU 脱离对系统总线的控制,DMAC 接管控制系统总线。(5)DMAC 向设备发出应答信号。(6)DMAC 在存储器与设备之间进行数据传输。(7)当设定的数据传输完后,DMAC 撤销总线请求信号,同时脱离对总线的控制,CPU 检测到总线请求信号变为无效后,撤销总线响应信号,恢复对系统总线的控制,同时跳回到中断前的状态。

  但对于如图 1 所示的典型多媒体应用系统,内部有哈夫曼解码模块(Huffman Decoder)、图像解码模块 (MPEG Decoder)、USB 模块、SPI 模块、SD 卡控制模(SDC)和数模转换模块(DAC)等,哈夫曼解码模块和图像解码模块需要跟 USB 模块、SD卡控制模块或 SPI 模块通信,即同时存在几路数据传输并且传输数据的模块是变化的,采用共享总线的 DMA 控制器无法同时处理多个通道任务,现有的多通道 DMA 控制器交换数据的设备只能是固定的,因而无法胜任这种系统需求。对于这类应用需要,本文引入了 Crossbar 互联结构,用 Crossbar 总线来代替共享总线。Crossbar 被称为交叉开关矩阵或纵横式交换矩阵,不会因为带宽资源不够而产生阻塞 [8]。图 2 所示是全 Crossbar 总线拓扑结构的原理图。由于全 Crossbar 总线所需连接线数量较多, 在实际中经常简化为部分 Crossbar 总线拓扑结构, 即将不需要通信的模块间的连接去掉,以节省面积。

Crossbar的多通道DMA控制器设计,Crossbar的多通道DMA控制器设计,第2张

  Crossbar 的互联结构实现在 MDMAC 的接口模块中,作为 DMA 传输的局部总线,DMA 传输不再占用系统总线,因此可以和 CPU 并行工作。所有需要采用 DMA 式传输数据的设备都直接挂接在该接口模块上,而由于这些设备也需要同系统总线通信,所以每个设备需要附加一个多路选择单元,以选择来自系统总线的信号或是来自 MDMAC 的信号。MDMAC 的接口模块实现了全 Crossbar 的互联结构,其和设备的连接及系统总线的连接方式如图 3所示,处于图中左边的任意设备可以和图中右边的任意设备进行 DMA 方式的数据传输。由于可以根据具体的应用来设计接口模块中设备端口的个数,所以可以保证系统中所有的 DMA 传输都能并行进行,而不需要像传统 DMA 控制器,要通过一定的仲裁算法来对多个传输请求进行排序,使得传输时间不能保证,并且仲裁模块会引入较大的延时,使得传输响应变慢。

Crossbar的多通道DMA控制器设计,Crossbar的多通道DMA控制器设计,第3张

  3 设计与实现方案

  根据上述多通道 DMA 控制器的基本原理,可以按如图 4 结构来设计实现该多通道 DMA 控制器,其组成模块可以分为 4 部分:寄存器模块Registers, 控 制 模 块 Controlunit, 地 址 产 生 模 块Addressgen 和接口模块 Interface。下面详细介绍各模块的具体设计与实现方案。

Crossbar的多通道DMA控制器设计,Crossbar的多通道DMA控制器设计,第4张

  3.1 寄存器模块

  Registers 寄存器模块集合了控制器的各种寄存器,包括全局寄存器和各个通道的专用寄存器,控制器和系统微处理器的交互主要靠这些寄存器来完成。全局寄存器对所有的通道都有效,包括配置寄取,不需要 CPU 的参与,直到整个描述符链表执行完再产生中断通知 CPU,而传统的 CPU 配置模式每执行完一个任务都要产生中断,让 CPU 对下一个任务进行配置。每次传输的发起可以有两种模式,一种是软件使能方式,即只要将寄存器的 start 位置 1 就开始脱离 Idle 状态;另一种是硬件握手方式,寄存器的 start 位置 1 后,还需要有传输请求的模块发来申请并等待 MDMAC 确认后传输才开始。软件使能方式适用于数据复制 *** 作,CPU 将某一地址区间的数据转移到另一地址区间。硬件握手方式是传统的DMA 工作方式。

Crossbar的多通道DMA控制器设计,Crossbar的多通道DMA控制器设计,第5张

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2628295.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-11
下一篇 2022-08-11

发表评论

登录后才能评论

评论列表(0条)

保存