1.01k likes | 1.27k Views
S3C44B0X DMA 功能及应用. SA06011137 盛伟 SA06011132 刘毅. 内容提要. S3C44B0X DMA 概述 S3C44B0X ZDMA/BDMA 操作 S3C44B0X DMA 特殊功能寄存器 S3C44B0X DMA 应用编程. S3C44B0X DMA 概述. ZDMA 概述. ZDMA 可从存储器到存储器、存储器到 I/O 设备(固定的目的地址)和 I/O 设备到存储器传送数据
E N D
S3C44B0X DMA功能及应用 SA06011137 盛伟 SA06011132 刘毅
内容提要 • S3C44B0X DMA 概述 • S3C44B0X ZDMA/BDMA 操作 • S3C44B0X DMA 特殊功能寄存器 • S3C44B0X DMA 应用编程
ZDMA概述 • ZDMA 可从存储器到存储器、存储器到I/O 设备(固定的目的地址)和 I/O 设备到存储器传送数据 • ZDMA 最重要的特征是 on-the-fly 模式,这种模式可减少需求 DMA 的周期数(BDMA无on-the-fly模式) • 在 on-the-fly 模式下操作,源和目的总线宽度要匹配
on-the-fly模式概述 • 通常,DMA 传送包括两个独立的周期:一个是从源存储器或 I/O 设备读,另一个是向存储器或 I/O 设备写。执行这些操作,存储控制器先从数据总线上读出数据,再把这个数据写到数据线上 • on-the-fly 模式有不可分的读/写周期。也就是说,存储控制器为源和目的设备读/写数据线上的数据产生应答信号,同时它为存储器的存取产生与读/写相关的控制信号
BDMA概述 • BDMA 控制器只能从存储器到 I/O 设备和 I/O 设备到存储器传送数据,在这种情况下,I/O 设备意味着外围设备,像 SIO、IIS 和 UART 一样连接到 SPB • ZDMA 和 BDMA 的操作由 S/W 或来自内部设备或外部请求引脚(nXDREQ0/1)的请求来启动
S3C44B0X ZDMA/BDMA 操作 • ZDMA • BDMA • 外部 DMA REQ/ACK 协议 • DMA 传送方式 • DMA 请求源的选择 • 自动重装模式
术语解释 • 周期窃取(cycle stealing):DMA 窃取若干周期,每个周期传送一个字节(I/O 带宽比总线带宽小) • 突发模式(burst mode):DMA 控制器通知设备获得总线,发起一连串的传送,然后释放总线(I/O 带宽与总线带宽匹配)
ZDMA • ZDMA 可在外部存储器之间传送数据 • DMA 操作由 S/W 或外部 DMA 请求信号来启动 • S3C44B0X 有一个 4 字 FIFO 类型的缓冲器来支持 4 字突发模式的 DMA 传送。例如,在存储器之间的 DMA 操作中,4 字突发写发生在 4 字突发读之后
BDMA • 定时器可在任何时候请求 DMA 操作,这有利于 ADC 块的自动操作 • 主要作用是在连接于 SPB 的片内外围设备(如 UART、IIS 和 SIO 等)和外部存储器之间传送数据
BDMA(续) • 不支持 4 字突发 DMA 操作(块传送模式),因为没有暂时缓冲器,而且连接于的 SPB 的外围设备速度太慢 • 能够支持从外部存储器到外部存储器的数据传送,但是外部存储器之间的数据传送一般还是用 ZDMA 来实现 • 如果需要更多的 DMA 通道用于外部存储器之间( ZDMA 应用最多有两个通道)的数据传送 ,则可以用 BDMA
外部 DMA REQ/ACK 协议 • 握手模式 • 单步模式 • 完整服务模式 • 需求模式
握手模式 • 一次 DMA 操作表示在 DMA 操作中的一对或不可分的读和写周期 • 在 DMA 操作(一对或不可分的读和写周期)中,总线控制器不能把总线的使用权分配给其他总线控制者 • 由 nXDREQ 产生的请求引起一个字节、一个半字或一个字被传送出去 • 每一个数据的传送都需要 DMA 请求
单步模式 • 一次 DMA 操作包括可分开的读或写周期 • 通常用于测试或调试 • 在 nXDACK 的非有效区,总线控制器将再次评估总线优先级,以决定新的总线控制权 • 单步模式下的数据传输将慢于握手模式下的数据传输
单步模式(续) • 当 DMA 请求信号变低时,如果没有高优先级的总线请求,则总线通过降低 DMA 应答信号来表明对 DMA 操作的总线分配 • 在应答信号的第一个低电平段,将有一个 DMA 的读周期 • 在 DMA 读周期后,应答信号将有一个上升沿来表示 DMA 读周期的结束;同时,如果在 DMA 应答信号上升时 DMA 请求信号一直为高电平,则 DMA 写周期将会延迟到新的 DMA 请求信号被激活
完整服务模式 • 一次 DMA 请求将产生连续的 DMA 传输,直到规定的 DMA 传输数据传输完,也就是基于传送计数的 DMA 操作将由单一 DMA 请求信号激活来启动,不需要进一步的 DMA 请求信号也可继续执行下去 • nXDACK 信号一直有效,直到整个 DMA 操作结束
完整服务模式(续) • 每传送完一个单元,将释放总线控制权 • 可提供最佳的总线共享,防止总线控制权被垄断 • 如果其他控制者截取了总线控制权,则在完成该服务后将继续执行剩余的操作,且不需要再次激活 nXDREQ
需求模式 • 与完整服务模式不同,需求模式不允许将总线控制权交给高优先级的总线控制者 • 在需求模式下进行 DMA 操作要特别小心,因为这种垄断模式可能对最佳总线共享的其他控制者产生意料不到的故障
DMA 传送方式 • 单元 (unit) 传送方式 • 块 (block) 传送方式 • on-the-fly 传送方式
单元(unit)传送方式 • 每个请求对应一个读/写周期,即一个单位读,然后一个单位写
块(block)传送方式 • 块(4个字)传送方式表示在连续 4 个字的写周期前有连续 4 个字的 DMA 读周期,即 4 个字突发读,然后 4 个字突发写,因此传输的数据个数应是 16 字节的倍数 • 在块传送方式下,遇到 16 字节对齐的情况时,ADDR[3:0] 应置为 0
块(block)传送方式—举例 • 假设传送 100 字节(即 DMA 计数值为100),则 6×16=96 字节能够被传送,但剩余的 4 字节将不能被传送,因为在传送了 96 字节之后,DMA 操作就会停止
on-the-fly 传送方式 • 当 DMA 读/写数据时,具有固定地址的外部设备通过 DMA 应答信号 (nXDACK0/1)来写/读这个数据 • DMA 在写数据前要先读数据
on-the-fly 传送方式(续) • 读和写操作同时进行。DMA 应答信号通知外部设备去读或写。同时,存储控制器将产生与读/写相关的控制信号给外部存储器 。如果外部存储器能够支持 on-the-fly 方式(即能由 DMA 应答信号来读/写数据),则数据的传送率将加倍 • 在传送周期内,数据总线处于高阻状态
DMA 请求源的选择 • ZDMA • BDMA
ZDMA • DMA 请求源:S/W 或 H/W 产生 nXDREQ信号(外部 DMA 请求信号) • 在启动之前,DMA 的相关参量如源地址、目的地址、传送计数值等都应进行配置 • S/W 的触发可通过写 01 到 ZDCON0/1 寄存器的域来完成
ZDMA(续) • 在 S/W 触发下,只要突发控制权分配给了 DMA 控制者,操作就将继续进行。只要 DMA 传送计数值或 TC(终端计数值)达到零,则表示 DMA 操作完成。如果高优先级的总线控制者得到总线控制权,则在高优先级的服务程序结束后,DMA操作将继续进行。
ZDMA (续) • 如果 DMA 配置为外部触发模式,即通过写 1 到 ZDCON0/1 寄存器的 QDS 位来使能外部 DMA 请求,那么操作也可由nXDREQ (外部 DMA 请求信号)和S/W来初始化
BDMA • 有6个硬件请求源:UART0、UART1、SIO、Timer 和 IIS等。 • 与 ZDMA 一样可由软件初始化 • 通过向 BDICNT 寄存器的 QSC 区域写入数值来选择这些请求源
自动重装模式 • 当 DMA 计数值减小到 0 时,Z(B)DISRCn、 Z(B)DIDESn 和 Z(B)DICNTn 的寄存器内容将被重新装入 Z(B)DCSRCn、 Z(B)DCDESn和 Z(B)DCCNTn 寄存器中 • 参量的这种自动重装不能保证在当前DMA操作之后,DMA 能自动重载运行,它是否重新运行取决于 Z(B)DCONn 中的 CMD 区域被重新写入或外部 DMA 请求出现
自动重装模式(续) • 为了支持自动重装模式,DMA 设置了两个寄存器组 • 寄存器 Z(B)DISRCn、 Z(B)DIDESn 和 Z(B)DICNTn 包含 DMA 操作的初始化配置 • 寄存器 Z(B)DCSRCn、 Z(B)DCDESn 和 Z(B)DCCNTn 包含反映当前 DMA 操作的配置
自动重装的产生条件 • 自动重装(AR)等于 1 和 DMA 计数值达到 0 • 向 Z(B)DISRC0、 Z(B)DIDES0 和Z(B)DICNT0 写入新的配置 • 若 DMA 被激活,即寄存器中的 EN 位由 0 变为 1 • S/W 命令被取消,当在 ZDCON0/1 中的CMD 域写入11时
S3C44B0X DMA 特殊功能寄存器 • ZDMA控制寄存器(ZDCONn) • ZDMA0/1初始源/目的地址和计数寄存器及ZDMA0/1当前源/目的地址和计数寄存器 • ZDMAn初始/当前源地址寄存器(ZDISRC、ZDCSRC) • ZDMAn初始/当前目的地址寄存器(ZDIDES、ZDCDES) • ZDMAn初始/当前目的计数寄存器(ZDICNT、ZDCCNT) • BDMAn控制寄存器(BDCON) • ZDMA0/1初始源/目的地址和计数寄存器及ZDMA0/1当前源/目的地址和计数寄存器 • ZDMAn初始/当前源地址寄存器(BDISRC、BDCSRC) • ZDMAn初始/当前目的地址寄存器(BDIDES、BDCDES) • ZDMAn初始/当前目的计数寄存器(BDICNT、BDCCNT)