简述TMS320C2000、TMS320C5000、TMS320C6000DSP 芯片的寻址方式
姓名:刘帅民 学号:201120195005 专业:通信与信息系统
摘要:本文中主要针对TI公司生产的TMS320C2000系列、TMS320C5000系列和TMS320C6000系列DSP的寻址方式进行简要概述。
Abstract: The article focud on the briefly discuss of TI’s TMS320C2000 Series,TMS320C5000 Series and TMS320C6000 Series DSP’s addressing.
TI公司三大系列DSP的寻址方式有许多种,由于它们各自的功能不同造成三者的寻址方式也不同,下面对三者的寻址方式做一个简要的叙述。
1、TMS320C2000的寻址方式
TMS320C2000系列DSP有七种寻址方式,接下来进行简单介绍。
1、直接寻址
在直接寻址中,数据地址由基地址和偏移地址共同决定。基地址存放在数据页指针寄存器DP (16位)中,偏移地址由直接寻址指令提供。当ST1寄存器的AMODE 位为0的时候,偏移地址是6位,对应DP指示的一个数据页内,包含64个数据单元;当ST1寄存器的AMODE位为1的时候,偏移地址是7位,对应DP指示的一个数据页内,包含128个数据单元。在两种情况下,数据地址高10位全为0,也就是说,直接寻址只能寻址4M数据空间。
2、堆栈寻址
堆栈寻址一般是专用SP(堆栈指针寄存器)来对堆栈寻址的方法。TMS320C2000系列DSP芯片用一个16位的SP来对堆栈寻址,且SP总是指向堆栈中最后存入的数据单元(即顶部)。堆栈寻址主要负责对系统堆栈的压入和弹出。用SP进行寻址时,数据地址的低16位与SP相关,而高16位默认为0X0000。
3、间接寻址
在间接寻址方式中,数据空间任意单元都可以通过一个辅助寄存器(XAR 0~XAR 7)中的内容所代表的32位地址进行访问。当指令以间接方式寻址时,辅助寄存器可以通过地址寄存器算术单元(ARAU )进行地址增量、减量或偏移,还可以提供循环来进行寻址。例如:
MOVL XAR2,# A rray1 ; 将数值A rray1 的首地址装入XAR2中
4、寄存器寻址
寄存器寻址就是对寄存器的内容进行访问。这里主要负责对ACC、P、XT及XARn (n为0~7)等寄存器间的操作,包括16位和32位。例如:
MOV L ACC,XT; 将XT 寄存器中的内容存入ACC中(32位)
5、数据/程序/IO空间立即寻址
立即寻址,就是在指令中包含有所要寻址的存储单元的地址。在立即寻址指令中,存储单元的地址可以用其所在单元的地址标号或者二进制符号来表示。C2000的立即寻址有以下几种类型:
(1)数据存储空间立即寻址
此时,数据地址的高16位为0,例如:
正实
MOV loc16,3 (0:16bit); 32 位数据地址高16位为0,低16位用(0:16bit) 表示
(2)程序存储空间立即寻址
程序存储空间立即寻址是将地址包含在指令中,直接对程序存储空间寻址的方法。有两种情况,一种情况是程序地址高6位全为0,低16位是需要寻址的程序存储空间的地址,这里用pma表示,例如:
老年人喝什么奶粉好MAC P,loc16,0:pma ; pma 表示程序存储器地址的低16位
另一种情况是程序地址高6位全为1,低16位是需要寻址的程序存储空间的低16 位地址,这里用pma表示,例如:
XMAC P,loc16,3(pma); pma表示程序存储器地址的低16位
(3) I/O空间立即寻址
访问I/O 时,陌陌聊天用数据线寻址,且数据地址高16位为0,低16位用端口地址PA (Po rt A ddress)表示,例如:
OU T 3(PA ) ,loc16; 将16位数送入端口(0: PA )中
6、程序空间间接寻址
这种寻址模式是将AL或XAR 7的内容作为地址去访问程序存储器的寻址方法,例如:
XPREAD loc16,3 AL; [ loc16 ]= P rogSpace[0x3F:AL ]
PREAD loc16,3 XAR7; [ loc16 ]= P rogSpace[3 XAR7 ]
7、字节寻址
在字节寻址指令中,将XARn寄存器中的内容作为基地址,将AR0和AR1中的内容或一个3bit数作为偏移地址,来决定数据存储器地址。而且当偏移量是偶数时,只对所访问16位数的低8位进行操作,保持高8位不动;当偏移量是奇数时,只对16位数的高8位进行操作,腰果花保持低8位不动。例如:
MOVB AX. L SB,3 + XARn [AR0/A R1/3bit ];当AR0/A R1/3bit为偶数时,AX. L S= [ loc16 ]. L SB
;AX. M SB= 0x00; 当AR0/A R1/3bit为奇数时
;AX. L SB= [ loc16 ]. M SB,AX. M SB= 0x00
二、TMS320C5000DSP的寻址方式
TMS320C5000DSP的寻址方式主要有一下七种,下面进行一一介绍。
1、立即寻址
在立即寻址方式中,指令中包括了立即操作数。一条指令中可对两种立即数编码,一种是短立即数(3、5、8或9位),另一种是16位的长立即数。短立即数指令编码为一个字长,16位立即数的指令编码为两个字长。立即数寻址指令中在数字或符号常数前面加一个“#”号来表示立即数。
2、绝对寻址
绝对寻址方式主要包括以下四种:数据存储器(dmad)寻址、程序存储器(pmad)寻址、端口地址(PA)寻址、长立即数*(lk)寻址,下面将对以上四种寻址方式进行叙述。
1)数据存储器(dmad)寻址
数据存储器寻址使用符号(符号地址)或一个表示16位地址的立即数来指明寻址的数据存储单元的16位绝对地址。例如:
MVKD SMAPLE,*AR5;
使用数据存储器寻址的指令有:
MVDK Smem,dmad MVDM dmad,MMR
MVKD dmad,Smem MVMD MMR,dmad
2)程序存储器(pmad)寻址
程序存储器绝对寻址可以使用符号(符号地址)或一个表示16位地址的立即数来给出程序空间的地址。例如,把程序存储器中标号为TABLE单元中的值复制到AR7所指定的数据存储器中去,指令可写为:
MVPD TABLE,*AR7;
使用程序存储器寻址的指令有:
FIRS Xmem,Ymem,pmad MACD Smem,pmad,src
MACP Smem,pmad,src MVDP Smem,pmad
MVPD pmad,Smem
3)端口地址(PA)寻址
端口(PA)绝对寻址使用一个符号(符号地址)或一个表示16位地址的立即数来给出外部I/O口地址。例如:
PORTR FIFO ,*AR5;
使用端口地址的指令有:
PORTR PA, Smem
PORTW Smem ,PA
4)长立即数*(lk)绝对寻址
长立即数*(lk)绝对寻址使用一个符号(符号地址)或一个表示16位地址的立即数来指定数据存储空间的一个地址。例如,把数据空间中地址为大班教育笔记BUFFER单元中的数据传送到累加器A,指令可写为:
LD *(BUFFER),A
3、累加器寻址
累加器寻址是操作数地址在累加器中。放在累加器中的地址是程序存储器地址。共有两条指令可以采用累加器寻址:
READA Smem
WRITA Smem
4、直接寻址
在直接寻址方式中,指令中含有操作数地址的低7位 ,作为地址偏移量,结合基地址共同形成16位的数据存储器地址。基址由数据页指针DP或堆栈指针SP给出。使用这种寻址方无土栽培蔬菜技术
式,可在不改变DP或SP的情况下,对一页内的128个存储单元随机寻址。采用这种寻址方式的好处是指令为单字指令,数据存储器地址(dma)的低7位放在指令字中。
5、间接寻址
间接寻址是指操作数的地址在辅助寄存器中,支持倒位序寻址、循环寻址等功能。下面进行简单的叙述。
1)单操作数寻址
(1) 增1/减1寻址方式
嘴巴烂了怎么办
操作数形式
*ARx ; addr=ARx
*ARx- ; addr=ARx
ARx=ARx--1
*ARx+ ; add=ARx
ARx=ARx+1
*+ARx ; add=ARx+1
ARx=ARx+1
(2) 加偏移量寻址方式
操作数形式
*ARx(lk) ; add=ARx+lk
ARx=ARx
*+ARx(lk) ; addr=ARx+lk (注:写操作)
ARx=ARx+lk