EDMA:增强型直接内存存取( EDMA),Enhanced Direct Memory Access,是数字信号处理器(DSP)中用于快速数据交换的重要技术,具有独立于CPU的后台批量数据传输的能力,能够满足实时图像处理中高速数据传输的要求。
 
EDMA术语:
 
  1. 单元传输:从源地址传输单个数据单元到目的地址,如果需要,每个单元可以基于一个同步事件传输。(一个单元大小为:32位,16位或8位)
  2. 帧:一组单元组成一个帧,一个帧中的单元可以是连续的也可以是离散的
  3. 阵列:一组连续单元组成一个阵列,因此阵列中的单元是不可以改变的
  4. 块:一组阵列或者帧可以组成一个块,对于一维传输,一组帧组成一个块,对二维传输,一组阵列组成一个块
  5. 一维传输:一组帧组成一个1D块,每块中的帧数取值范围为1~65536,每帧中的单元数量为1~65536,每一单元或者每一帧传输都可以一次完成
  6. 二维传输:一组阵列组成2D块,第一维为一个阵列中连续单元的帧数,第二维为阵列的个数
 
EDMA模块的主要寄存器(对于C64x系列DSP),最多64个事件
  1. 事件寄存器 ERL,ERH
  2. 事件使能寄存器 EERL,EERH
  3. 事件清除寄存器 ECRL,ECRH  当一个事件在ER中被触发之后,这时可以用两种方法清除:如果该事件在事件使能寄存器中被使能,一旦EDMA控制器开始了这个事件的传输请求,则ER中相应的位即被清除,如果该事件在EER中被禁止,CPU可以通过事件清除寄存器清除这个位。写入1到任何位即可清除相应的事件。因此,一但ER中一个事件位被设置,它将保持直到EDMA开始次事件的传输请求或者CPU通过设置相关的ECR位清除该事件
  4. 事件设置寄存器ESRL,ESRH,写1到相应位使得相应事件被设置,在这种情况下事件不需要被使能
  5. 事件极性寄存器EPRL,EPRH 写1到相应位,那么EDMA事件将被设置为下降沿触发,否则为上升沿触发。
EDMA事件参数:每个事件有24字节的参数
  • 字0:选项
  • 字1:源地址
  • 字2:阵列/帧计数,单元计数
  • 字3:目的地址
  • 字4:阵列/帧索引,单元地址索引
  • 字5:单元技术重载,链接地址
下面列出事件参数中选项字段中的部分子字段
  • 单元计数ELECNT:一帧或一个阵列中的单元个数
  • 帧/阵列计数  FRMCNT
  • 单元索引ELEIDX 和 帧/阵列索引 FRMIDX:这两个字段中的16位有符号值用来改变地址,依据传输的类型,EDMA使用这些段更新地址。单元索引为一帧中的下一个单元提供地址偏移量,帧/阵列索引提供下一帧的偏移量
  • 单元计数重载ELERLD:一帧中最后一个单元被传输后,16位无符号单元计数重载值被用来重载单元计数,因为EDMA需要使用单元技术跟踪下一个单元的地址,所以这个段仅用于1D单元同步传输
  • 链接地址LINK:EDMA参数RAM中的16位链接地址定义了EDMA载入或重载下一个传输参数在参数RAM中低16位的入口地址。因为整个EDMA参数RAM位于01A0xxxxh区,所以只有低16位地址相关。对于C64x系列DSP,重载参数入口地址范围确定为:01a0 0600h ~ 01a0 07f7h,使用者必须确保链接地址以24字节为界
 
EDMA传输分类
  1. 单元同步的一维传输(FS=0):参数表中源地址和目的地址在每个单元传输请求递交后自动更新,因此单元索引和帧索引是基于单元地址的差值来设置的
  2. 帧同步的一维传输(FS=1):帧索引不再表示一帧的最后一个单元地址和下一帧的第一个单元地址的差值,而是两帧启动地址的差值;地址改变和计数改变由更新模式的类型决定
  3. 阵列同步的二维传输(FS=0):该类型的通道在每个阵列的传输请求被提交后自动更新目的地址和源地址
  4. 块同步的二维传输(FS=1):
EDMA传输中止:
         在最后一次传输后,可以通过链接一个NULL值的传输参数入口来终止传输。一个NULL值传输参数被定义为一个EDMA传输参数,其中所有的参数都被设置为0。