TI C64x DSP: EDMA原理与实例解析

需积分: 31 42 下载量 83 浏览量 更新于2024-09-12 1 收藏 28KB DOC 举报
"TI C6000平台的C64x内核中,EDMA(Enhanced Direct Memory Access,增强型直接存储器访问)是一种高效的数据传输机制,用于减轻CPU负担,实现数据的异步和同步传输。本文将对C64x DSP中的EDMA进行实例解析和总结。" (1)EDMA概述 在C64x内核中,EDMA数据传输主要分为两种方式: 1. CPU发起的非同步EDMA传输:当CPU设置ESR(Event Status Register,事件状态寄存器)的相应位为1时,触发一个EDMA事件,该事件对应的通道参数被送到地址硬件执行,这种方式下,实时数据传输不需要预先配置EER(Event Enable Register,事件使能寄存器)。 2. 事件触发的同步EDMA传输:CPU通过设置EER来响应外设事件。只有当EER的相应位被置1时,ER(Event Register,事件寄存器)中的事件才会传递给事件编码器,并启动关联的传输参数,送往地址硬件。这种方式常用于EDMA链式传输,需要结合EER和CCER(Channel Control Enable Register,通道控制使能寄存器)使用。 (2)EDMA数据传输类型 数据传输分为一维(1D)和二维(2D)两种类型,根据OPT.2DS和OPT.DDS通道参数,共有四种组合方式: 1. 1D数据传输: 1D数据由"块-帧-元素"组成。每个块包含多帧,每帧又由多个元素构成。元素可以在同一地址、连续地址或具有特定偏移量的地址上。帧间的地址偏移由FRMIDX通道参数定义,而元素间的偏移由ELEIDX通道参数指定。ELECNT参数指定了每帧内的元素数量,当一帧数据传输完成后,ELERLD会重新加载下一帧的ELECNT。FRMCNT参数定义了块中的帧数。 1D数据传输的同步方式有两种:当OPT.FS=0时,为元素同步,每次事件触发传输一个元素;当OPT.FS=1时,为帧同步,每次事件触发传输一帧数据。 (3)1D数据传输的同步机制 - 元素同步:每个同步事件传输一个元素,ELECNT递减1。当ELECNT等于1时,表明是帧的最后一个元素,这时EDMA不仅传输这个元素,还会执行后续操作,如更新帧计数等。 - 帧同步:每次事件触发传输一帧数据,ELECNT不直接参与计数,而是由FRMCNT和ELERLD控制帧的切换。 TI C6000平台的C64x内核中的EDMA机制提供了一种灵活且高效的内存访问方式,能够适应多种数据传输需求,无论是CPU直接触发还是由外部事件触发,都能确保数据传输的精确和高效。了解并熟练运用EDMA,对于优化C64x DSP系统性能至关重要。