您现在的位置: 范文先生网 >> 理工论文 >> 电子通信论文 >> 正文

ADSP-21535 Blackfin的Mem DMA高速通信

时间:2007-1-20栏目:电子通信论文


2 DMA寄存器的配置

为了描述Mem DMA序列,DMA控制器使用一套名为描述子块(Descriptor)的参数。当需要后继的DMA序列时,这些描述子块被链接起来。这样,一个DMA序列完成时能够自动初始化下一个序列,并将其启动。如果不需启动下一个序列,只要将其指向一个内容为0的地址空间即可。如果下一次链接指向原描述子块,则DMA完成后暂停。为访问整个ADSP-21535的地址空间,源地址和目的地址描述子块采用了全32位地址的基指针。两个描述子块均为5个字的连续空间,需要注意的是该连续空间必须定义在L2范围内。描述子块内包含的内容如图2所示。

Mem DMA规定,描述子块所在的首地址必须传入相关的寄存器。描述子块首地址的高16位装入DMA_DBP寄存器(DMA Descriptor Base Pointer Register,DMA描述子块基地址寄存器)内。由于该寄存器严格限定必须在0xF000~0xF003,这就限定了源和目的地址描述子块只能定义在L2存储器内,并且高16位地址相同。

描述子块首地址的低16位放在两个寄存器中,源地址描述子块低16位装入MDS_DND寄存器(Source Memory DMA Next Descriptor Pointer Register,DMA源地址下一个描述子块寄存器),而目的地址描述子块低16位装入MDD_DND寄存器(Destination Memory DMA Next Descriptor Pointer Register,DMA目的地址下一个描述子块寄存器)。其说明如图3所示。

在描述子块的地址传入相应寄存器后,后面的四项先配置,然后设置第一项。也就是对管理DMA启动参数的寄存器进行参数配置。两个配置寄存器的详细内容如图4所示。例如当目的地址寄存器为0x8003,源地址寄存器为0x8001时,传输的数据总长=DMA传输的长度×字。需要注意的是,虽然此时传输以16位(字长)传输,但DMA的带宽是32位,剩下的带宽资源将被浪费。8位传输时,带宽资源利用率更低。

下面,以一个具体的32位DMA例子说明上面的描述子块和多个寄存器的使用方法。

图4 DMA源地址和目的地址配置寄存器

3 32位DMA的例程

R0.H = 0x8009 //DMA源配置字,设置为32位传输

R0.L = 0x800 //DMA长度

R1.L = 0x2000 //DMA源地址低16位

R1.H = 0xf000 //DMA源地址高16位,这里指向L2

R2.L = RAM_READ //DMA源描述子块首地址

低十六位,DMA读

R2.H = 0x800b //DMA目的配置字,设置为32位传输

R3.L =0x0000 //DMA目的地址低16位

R3.H =0xff90 //DMA目的地址高16位,这里指向

L1数据存储器-Bank B

R4.L = RAM_WRITE //DMA目的描述子块首地址低

十六位,DMA写

P0.L = RAM_READ //将32位的源描述子块的地址

载入P0

P0.H = RAM_READ

P1.L = RAM_WRITE //将32位的目的描述子块的地

址载入P1

P1.H = RAM_WRITE

WP0+0x2 = R0 //将DMA长度写入源描述块第

二个字中

上一页  [1] [2] [3] [4] [5] 下一页

下页更精彩:1 2 3 4 下一页