第3章节TMS320C54x数据寻址方式
第三章:DSP软件体系_寻址方式
![第三章:DSP软件体系_寻址方式](https://img.taocdn.com/s3/m/625f0da90029bd64783e2c9d.png)
DSP技术及其应用 26
TMS320C54X-DSP
循环寻址:
许多算法,如卷积,相关和FIR滤波等,都需要在存 储器中实现一个循环缓冲器。在这些算法中,一个循环缓 冲器就是一个包含了最近的数据的滑动窗口。当新的数据 来到时,缓冲器就会覆盖最早的数据。循环缓冲器实现的 关键是循环寻址的实现。‘C54x间接寻址中提供了循环寻 址的方式,以%表示。 循环寻址图示
*ARx-0%/*ARx+0% : – 访问后,从ARx中以循环寻址的方 式减 去/加上AR0 *ARx(lk): – ARx和16-bit的长偏移(lk) 的和用来作为数据存储器地址。 ARx本身不被修改 *+ARx(lk): – 在寻址之前,把一个带符号的16-bit的长偏移(lk)加 到ARx中,然后用新的ARx的值作为数据存储器的地址 *+ARx(lk)%: – 在寻址之前,把一个带符号的16-bit的长偏移以循环寻址 的方式加到ARx中,然后再用新的ARx的值作为数据存 储器的地址
*ARx-0B/ *ARx+0B :
– 访问后,从ARx中以位倒序进位的方式减去/加上AR0
*ARx-0/ *ARx+0 :
– 访问后,从ARx中减去/加上AR0
*ARx-%/ *ARx+% :
– 访问后,ARx中的地址以循环寻址的方式减1/加1
DSP技术及其应用 12
TMS320C54X-DSP
共有四条使用堆栈寻址方式访问堆栈的指令:
PSHD 把一个数据存储器的值压入堆栈。 PSHM 把 一 个 存 储 器 映 射 寄 存 器 的 值 压 入 堆 栈 。 POPD 把一个数据存储器的值弹出堆栈。 POPM 把一个存储器映射寄存器的值弹出堆栈。
3tms320c54指令系统概要
![3tms320c54指令系统概要](https://img.taocdn.com/s3/m/b0a24be6ee06eff9aff80730.png)
累加器寻址和直接寻址举例
• DM的地址:0206h
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 0 0 0 0 0 0 1000000110
5. 间接寻址
在间接寻址中,64K数据空间任意单元都可通过一 个辅助寄存器中的16-bit地址进行访问。
‘C54x有8个16-bit辅助寄存器(AR0-AR7)。两个 辅助寄存器算术单元(ARAU0和ARAU1),根据辅助寄 存器的内容进行操作,完成无符号的16-bit算术运算。
SP 0024 0100
LD @1, A ADD @2, A ;A的结果:150
0050 3404
4. 累加器寻址
累加器寻址是用累加器中的数作为一个地址。这种寻 址方式可用来对存放数据的程序存储器寻址。地址由累加 器的低16位决定,共有两条指令可以采用累加器寻址:
READA Smem WRITA Smem READA是把累加器A所确定的程序存储器单元中的一个字, 传送到单数据存储器(Smem)操作数所确定的数据存储器单 元中。WRITA是把Smem操作数所确定的数据单元中的一个字 ,传送到累加器A确定的程序存储器单元中去。 上述两条指令,在重复的方式下执行,搬移连续的数据(以 A的值为起始地址)到连续的DM中,能够对累加器A自动增量
访问后, ARx中的地址减1/加1
• *+ARx:
在寻址之前,ARx中的地址加1
• *ARx-0B/ *ARx+0B :访问后,从ARx中以位倒序进位的
方式减去/加上AR0
• *ARx-0/ *ARx+0 : 访问后,从ARx中减去/加上AR0
第三章 TMS320C54X指令系统
本章内容包括:(1)存储器寻址方式 (2)汇编语言指令系统 (3)伪指令系统。
第3章TMS320C54x的指令系统详解
![第3章TMS320C54x的指令系统详解](https://img.taocdn.com/s3/m/f3716cde04a1b0717fd5ddb8.png)
9位数据页指针DP值 图3.1.2
6~0
7位IR值
CPL=0时, 16位数据存储单元的地址
② 当CPL=1时,将堆栈指针SP的16位地址 与指令中的7位地址相加,形成16位的数据 存储器地址,如图:
15~0
16位堆栈指针SP
15~7 0 0 0 0 0 0 0 0 0 6~0 7位IR值
有效存储地址 图3.1.3 CPL=1时, 16位数据存储单元的地址
下图列出了双操作数寻址的指令代码格式:
15~8 操作码 7 Xmod 6 5 Xar 4 3 Ymod 2 1 Yar 0
图3.1.5双操作数寻址的指令代码格式
表3.1.7 双操作数的各位说明:
位 15~8 7~6 5~4 3~2 1~0
名称 操作码 Xmod Xar Ymod Yar
功能 8位代码包含了指令的操作码 定义了用于寻址Xmem操作数的间接寻址方式的类型 2位代码确定了存储Xmem地址的辅助寄存器 定义了用于寻址Ymem操作数的间接寻址方式类型 2位代码确定存储Ymem地址的辅助寄存器
3.1.3 累加器寻址
累加器寻址是将累加器的内容作为地址 去访问程序存储器单元,即将累加器中的 数作为地址,用来对存放数据的程序存储 器寻址。有两条指令可以采用累加器寻址。 ① READ A Smem ② WRIT A Smem
3.1.4 直接寻址
直接寻址是利用数据指针和堆栈指针寻 址,其特点是数据存储器地址由基地址和 偏移地址共同构成,共16位。 基地址位于数据存储器地址的高9位, 偏移地址位于数据存储器地址(dmad)的 低7位。 下面分别给出了直接寻址的指令代码格 式以及各位说明。
由于只有2位可以用于选择辅助寄存器,所以 根据Xar或Yar的值可以选择4个寄存器。 下表列出了Xar或Yar同辅助寄存器的对应关系:
第3章TMS320C54XDSP寻址方式09.10
![第3章TMS320C54XDSP寻址方式09.10](https://img.taocdn.com/s3/m/c323a72c0722192e4536f645.png)
ARx包含了数据存储器地址 访问后,ARx以循环寻址方式减1 ARx包含了数据存储器地址 访问后,ARx以循环寻址方式减去 AR0 ARx包含了数据存储器地址 访问后,ARx以循环寻址方式加1 ARx包含了数据存储器地址 访问后,ARx以循环寻址方式加上 AR0 ARx加上16位长偏移量作为数据 存储器地址 访问后,ARx中内容不变 ARx加上16位长偏移量作为数据 存储器地址 访问后,ARx中内容加上16位长 偏移量 ARx以循环寻址方式加上16位长 偏移量作为数据存储器地址, 同时修改ARx中内容 以无符号16位长偏移量作为数据 存储器地址 (绝对地址)
19
单操作数 3 间接寻址 y0 a i x i a0 x0 a1 x1 a 2 x 2 a3 x3 编程举例: i 0 .mmregs .bss x, 4 .word 1, 2, 3, 4 STM #a, AR1 STM #x, AR2 LD #0, A LD *AR1+,T MAC *AR2+,A LD *AR1+,T MAC *AR2+,A LD *AR1+,T MAC *AR2+,A LD *AR1,T MAC *AR2,A …..
第一条指令表示将数据存储器中以DATA符号为地址单元中 的数据传送到由辅助寄存器ARl所指向的数据存储单元中去。 DATA代表数据存储单元的地址dmad。 第二条指令表示将程序存储器中以TABLE符号为地址单元中 的数据传送到由辅助寄存器AR2所指向的数据存储单元中去。 TABLE代表程序存储单元的地址pmad。 第三条指令表示将地址为0F2F0H的端口中的数据传送到由 辅助寄存器AR5所指向的数据存储单元中去。
17序号间址类型功能说明arxaddrarxarx包含了数据存储器地址arxaddrarxarxarx1arx包含了数据存储器地址访问后arx中地址减1arxaddrarxarxarx1arx包含了数据存储器地址访问后arx中地址加1arxaddrarx1arxarx1寻址前arx中地址加1arx0baddrarxarxbarxar0arx包含了数据存储器地址访问后arx以位倒序方式减去ar0arx0addrarxarxarxar0arx包含了数据存储器地址访问后arx中减去ar0arx0addrarxarxarxar0arx包含了数据存储器地址访问后arx中加上ar0arx0baddrarxarxbarxar0arx包含了数据存储器地址访问后arx以位倒序方式加上ar0号表示间址32位字时增减为2寻址前变址只用于写操作指令18arxaddrarxarxcircarx1arx包含了数据存储器地址访问后arx以循环寻址方式减1arx0addrarxarxcircarxar0arx包含了数据存储器地址访问后arx以循环寻址方式减去ar010arxaddrarxarxcircarx1arx包含了数据存储器地址访问后arx以循环寻址方式加111arx0addrarxarxcircarxar0arx包含了数据存储器地址访问后arx以循环寻址方式加上ar012arxlkaddrarxlkarxarxarx加上16位长偏移量作为数据存储器地址访问后arx中内容不变13arxlkaddrarxlkarxarxlkarx加上16位长偏移量作为数据存储器地址访问后arx中内容加上16位长偏移量14arxlkaddrcircarxlkarxcircarxlkarx以循环寻址方式加上16位长偏移量作为数据存储器地址同时修改arx中内容15lkaddrlk以无符号16位长偏移量作为数据存储器地址绝对地址lk不允许mmr寻址19间接寻址时
第3章 TMS320C54x的数据寻址方式
![第3章 TMS320C54x的数据寻址方式](https://img.taocdn.com/s3/m/424a25b81a37f111f1855b22.png)
3.1 立即寻址 3.2 绝对寻址 3.3 累加器寻址 3.4 直接寻址 3.5 间接寻址 3.6 存储器映象寄存器寻址 3.7 堆栈寻址 寻址方式小结
TMS320C54x DSP提供以下 种基本数据寻址方式。 提供以下7种基本数据寻址方式 提供以下 种基本数据寻址方式。 (1)立即数寻址 ) (2)绝对地址寻址 ) (3)累加器寻址 ) (4)直接寻址 ) (5)间接寻址 ) (6)存储器映射寄存器寻址 ) (7)堆栈寻址 )
位倒序寻址
AR0存放 存放FFT点数的一半,另外一个辅助寄存器指向数据存放单元。 点数的一半, 存放 点数的一半 另外一个辅助寄存器指向数据存放单元。 当AR0加到指针中时,进位从左到右。 加到指针中时,进位从左到右。 加到指针中时 FFT长度 长度N=16,AR0=8=0000 1000B,AR2=0110 0000B 长度 , , *AR2+0B;AR2=0110 0000 *AR2+0B;AR2=0110 1000 *AR2+0B;AR2=0110 0100 *AR2+0B;AR2=0110 1100 *AR2+0B;AR2=0110 0010 *AR2+0B;AR2=0110 1010 *AR2+0B;AR2=0110 0110 *AR2+0B;AR2=0110 1110
返回首页
图3-1 DP作为基地址的直接寻址方式
图3-2 SP作为基地址的直接寻址方式 返回本节
3.5 间接寻址
3.5.1 单操作数寻址 3.5.2 双操作数寻址
返回首页
3.5.1 单操作数寻址
列出了单数据存储器( 表3-2列出了单数据存储器(Smem)操作数间接 列出了单数据存储器 ) 寻址类型。 寻址类型。 特殊的间接寻址方式有: 特殊的间接寻址方式有: 1.循环寻址 . 2.倒序寻址(如表3-3所示) .倒序寻址(如表 所示) 所示
指令系统d3
![指令系统d3](https://img.taocdn.com/s3/m/69093f2f0740be1e650e9a30.png)
1 . 立即数寻址
在立即数寻址中,指令里包括了立即操作数。在 一条指令中可对两种立即数编码。一种是短立即数(3、 5、8或9bits),另一种是16bits的长立即数。立即数 可包含在单字或双字指令中。3-,5-,8-或9-bit值在 单字指令中,16-bit值在双字指令中。
复习:CPU状态和控制寄存器
第三章 TMS320C54X的指令系统
TMS320C5000指令系统
‘C54x寻址方式 ‘C54x特殊寻址
方式说明 ‘C54x指令集 ‘C54x特殊指令
使用说明
3.1 TMS320C54x的寻址方式
• 立即数寻址: 指令中嵌有一个固定的数 • 绝对地址寻址: 指令中有一个固定的地址 • 累加器寻址: 按累加器内的地址去访问程序存储器中
•例:
LD *(BUFFER),A ;BUFFER为地址 注: *(lk) 寻址,不改变DP的值,也不选择辅助寄存器。 只是指令字较多。它不能与循环指令RPT、RPTZ一起使用 。
5. 累加器寻址
累加器寻址是用累加器中的数作为一个地址。这种寻址 方式可用来对存放数据的程序存储器寻址。共有两条指令 可以采用累加器寻址:
双数据存储器操作数间接寻址方框图
双数据存储器操作数的间接寻址指令格式
Xmod 定义用于访问Xmem操作数的间接寻址方式的类型 Ymod 定义用于访问Ymem操作数的间接寻址方式的类型 Xar 定义用于访问Xmem的辅助寄存器 Yar 定义用于访问Ymem的辅助寄存器
Xmod,Ymod 操作码语法
;IMR=FFFFh(16位)
注:立即数前加#号。
短立即数RPT
例: RPT #99
;将跟在RPT后的下一条指令重复 执行100次
3tms320c54指令系统
![3tms320c54指令系统](https://img.taocdn.com/s3/m/8f0426e1ba0d4a7303763a04.png)
位倒序寻址的执行
设FFT长度N=16,则AR0赋值为8,位倒序 方式读入数据情况如下:
存 储 器 映 射 寄 存 器
6. 存储器映射寄存器寻址 存储器映射寄存器寻址用来修改存储器映射寄存器而 不影响当前数据页指针(DP)或堆栈指针(SP)的值。 存储器映射寄存器寻址 直接寻址中利用操作数中的低7位访问MMR 间接寻址中利用ARx访问MMR, Arx高位被臵0 。
累加器寻址和直接寻址举例
• DM的地址:0206h
15 0 14 0 13 0 12 0 11 0 10 0 9 8 7 6 5 4 3 2 1 0 1 0 0 0 0 0 0 1 1 0
5. 间接寻址 在间接寻址中,64K数据空间任意单元都可通过一 个辅助寄存器中的16-bit地址进行访问。 ‘C54x有8个16-bit辅助寄存器(AR0-AR7)。两个 辅助寄存器算术单元(ARAU0和ARAU1),根据辅助寄 存器的内容进行操作,完成无符号的16-bit算术运算。 间接寻址很灵活,不仅能从存储器中读或写一个单 16-bit数据操作数,而且能在一条指令中访问两个数据存 储器单元(即从两个独立的存储器单元读数据,或读一 个存储器单元同时写另一个存储器单元,或读写两个连 续的存储器单元)。
部分寻址的缩写语
符号 含 义
Smem Xmem Ymem dmad pmad PA src dst lk
16位单寻址操作数 16位的双寻址操作数,从DB总线读出 16位的双寻址操作数,从CB总线读出 16位立即数,数据存储器的地址 16位立即数,程序存储器的地址 16位立即数,I/O的地址 源累加器 目的累加器 16位的长立即数
FIRS Xmem, Ymem, pmad MACP Smem, pmad, src MACD Smem, pmad, src MVPD pmad, Smem
TMS320C54x的指令系统精品PPT课件
![TMS320C54x的指令系统精品PPT课件](https://img.taocdn.com/s3/m/d95984e1b90d6c85ed3ac61c.png)
16位双寻址操作数,用于双操作数指令,从CB数据总 线上读取
16位立即数:数据存储器地址(0~65 535)
16位立即数:程序存储器地址(0~65 535)
16位立即数:I/O口地址(0~65 535)
源累加器(A或B)
目的累加器(A或B)
16位长立即数
2021/1/9
DSP原理及应用
4
3.1.1 立即寻址
第3章 TMS320C54x的指令系统
着重介绍助记符指令的分类及基本功能: ● 寻址方式 ● 指令表示方法 ● TMS320C54x的指令系统
2021/1/9
DSP原理及应用
1
3.1 寻址方式
寻址方式:当硬件执行指令时,寻找指令所指定的参与运
算的操作数的方法。 立即寻址 累加器寻址 间接寻址 寄存器寻址
用途:用于完成程序存储空间与数据存储空间之间的数据 传输
2021/1/9
DSP原理及应用
8
3.1.4 直接寻址
利用数据指针DP和堆栈指针SP寻址
指令格式:
15 ~ 8
7
6~0
操 作 码 I = 0 数据存储器地址(dmad)
指令的8位操作码
数据存储器地址 包含了数据存储器偏移地址
指令的标识符 表示指令为直接寻址
指令中含有执行指令所需的操作数。操作数紧随操作
码存放在程序存储器中。
例如: LD #F180,A ;将立即数F180加载到A
立即数的数值形式:
程序存储器
短立即数:3、5、8、9位,单字指令 长立即数:16位,双字指令 用途:用于表示常数或对寄存器初始化
操作码 立即数F180
特点:指令中含有一个固定的立即数,运行速度
[计算机硬件及网络]TMS320C54DSP原理应用第3章
![[计算机硬件及网络]TMS320C54DSP原理应用第3章](https://img.taocdn.com/s3/m/88042a0ac381e53a580216fc700abb68a982ad3c.png)
第3章指令系统3.1 数据寻址方式3.2 TMS320C54x的指令系统3.1 数据寻址方式3.1.1 指令的表示方法1.指令的基本形式与所有的微处理器助记符指令一样,TMS320C54x 的助记符指令也是由操作符和操作数两部分组成的。
在汇编前,操作符是用助记符表示的,指出指令应完成何种操作;操作数用来描述该指令的操作对象,它可以是数据本身,也可以是指出如何获取操作数的信息。
助记符指令的基本形式为标号,操作符,操作数1,操作数2,操作数3其中,标号是可选项,操作数可以没有或有多个,其内容可以是立即数、寄存器、程序地址、数据地址、I/O地址等。
TMS320C54x中源操作数一般在操作数1的位置,目的操作数则在操作数3的位置,指令执行结果存放到目的操作数单元中,源操作数不变。
上述指令的执行结果是将立即数0FFH传送至累加器A中。
这里的LD为操作符,#0FFH为操作数1,累加器A为操作数2。
2.指令的数据类型TMS320C54x 寻址存储器有两种基本的数据形式:16位数和32位数。
大多数指令能够寻址16位数,只有双精度和长字指令才能寻址32位数,如表3-1所示。
表3-1 寻址32位数的指令在对32位数寻址时,先处理高有效字,然后处理低有效字。
如果寻址的第1个字处在偶地址,那么第2个字就处在下一个(较高的)地址;如果第1个字处在奇地址,那么第2个字就处在前一个(较低的)地址,如图3-1所示。
在讨论寻址方式时,要用到一些缩写语,表3-2给出了部分缩写语的名称和含义。
图3-1 32位字的存储顺序高有效字低有效字寻址1000H 时的32位字存储顺序高有效字低有效字A 累加器1000H 1001H 寻址1001H 时的32位字存储顺序低有效字高有效字1000H 1001H表3-2 部分寻址方式缩写语3.1.2 数据寻址方式TMS320C54x数字信号处理器共有7种寻址方式,如表3-3所示。
表3-3 TMS320C54x的数据寻址方式1.立即寻址立即寻址就是在指令中已经包含有执行指令所需的操作数(一个固定的立即数)。
第3章'C54x的指令系统
![第3章'C54x的指令系统](https://img.taocdn.com/s3/m/13a3f1b3856a561252d36fdb.png)
以DP为基准的直接寻址是由DP值确定是512页中 的哪一页,由dmad确定是该页中的哪一个单元。
SP可以指向存储器中的任意一个地址。dmad可 以指向当前页中具体的单元,从而允许访问存储器 任意基地址中的连续的128个单元
第3章 TMS320C54x的指令系统
00 0000 1500
0200H 0500 0 2 0 0
第3章 TMS320C54x的指令系统
3.1.4 直接寻址
例2:数据存储器存储数据如图所示,利用堆栈指针SP直 接寻址,求堆栈中距栈顶两个数x,y的和。
数据存储器
SP→ x:
y:
0020 0100 0050
A000
...
SSBX CPL ;SCPPL0置000位0执01行0结00果00 0000 0200H
用途:用于对速度要求较指低定的的场数合据。存储单元中
第3章 TMS320C54x的指令系统
3.1.2 绝对寻址
绝对寻址是利用16位地址来寻址操作数的存储 单元。由于绝对地址代码的位数为16位,所以绝对 地址寻址的指令至少应为2个字长。
绝对寻址有四种类型 : ① 数据存储器地址(dmad)寻址; ② 程序存储器地址(pmad)寻址; ③ 端口(PA)寻址; ④ *(1k)寻址。
0011 * +ARx
ARx=ARx+1 LD *ARAxR中2的,地B址加1后,再寻址。 地址=ARx (A)=00[注301]H、[注2(]A、R[注23)]=00FFH
第3章 TMS320C54x的指令系统
3.1 寻址方式 ’C54x有7种基本的数据寻址方式:
立即寻址 :由指令提供一个操作数 绝对寻址 :由指令提供一个操作数地址 累加器寻址 :以累加器的内容为地址访问程序空间某单元 直接寻址 :寻址地址为DP或SP的值加上指令提供的偏移量 间接寻址 :利用辅助寄存器访问存储器 存储器映像 :用来改变映像寄存器,但不影响DP或SP的值 寄存器寻址 堆栈寻址 :用来管理系统堆栈中的操作
第3章 TMS320C54x的寻址方式
![第3章 TMS320C54x的寻址方式](https://img.taocdn.com/s3/m/987e368502d276a200292e54.png)
第3章
TMS320C54x的寻址方式
DSP处理器及应用
3.1.2 绝对寻址
绝对寻址是利用16位地址来寻址操作数的存储 单元。绝对地址寻址的指令至少应为2个字长。
绝对寻址有四种类型 : ① 数据存储器地址(dmad)寻址;
② 程序存储器地址(pmad)寻址;
TMS320C54x的寻址方式
DSP处理器及应用
3.1.4 直接寻址
所要寻址的数据存储器16位地址是由基地址和位); ② 堆栈指针SP。 当CPL=0时,数据存储器16位地址由DP和偏 移地址dmad构成;
当CPL=1时,数据存储器16位地址由SP加偏移 地址dmad构成。
第3章 TMS320C54x的寻址方式
DSP处理器及应用
3.1 寻址方式
寻址方式 立即寻址 绝对寻址 累加器寻址 用 途 举 例 指令含义 立即数10 A 将AL内容存入y所在的存储单 元 将A的内容作为地址读程序存 储器,并存入x存储单元 主要用于初始化 利用16位地址寻址存储单 元 将累加器中的内容作为地 址 利用数据页指针和堆栈指 针寻址 利用辅助寄存器作为地址 指针 LD #10,A STL A,*(y) READA x
③ 端口(PA)寻址;
④ *(1k)寻址。
第3章 TMS320C54x的寻址方式
DSP处理器及应用 1.数据存储器地址寻址
确定存储操作数的数据存储单元的一个地址。 语法:使用一个程序标号或一个数字来指定数 据空间的一个地址。 例如,将数据存储器中EXAM1地址单元中的数据 复制到AR5寄存器所指向的数据存储器中的地址单元
FIFO, * AR5
I/O端口地址PA
第3章 C54x的指令系统
![第3章 C54x的指令系统](https://img.taocdn.com/s3/m/98cfdd62f18583d04864596e.png)
页指针DP或堆栈指针SP)和偏移地址
(dmad)共同构成。
2019/12/21
DSP原理及应用
17
第3章 TMS320C54x的指令系 统
3.1.4 直接寻址
所要寻址的数据存储器16位地址是由基地址和 偏移地址构成。
基地址: ① 数据页指针DP(9位); ② 堆栈指针SP。
运算的操作数的方法——寻址方式。
根据程序的要求采用不同的寻址方式,可以有
效地缩短程序的运行时间和提高代码执行效率。
’C54x芯片的寻址方式可以分为两类:
● 数据寻址
● 程序寻址
2019/12/21
DSP原理及应用
4
第3章 TMS320C54x的指令系 统
3.1 寻址方式
’C54x有7种基本的数据寻址方式:
9位数据页指针DP
16位数据 存储器地址
9位数据页指针DP 高9位
dmad 低7位
2019/12/21
DSP原理及应用
19
第3章 TMS320C54x的指令系 统
地址形成过程:
当CPL=1时,
直接寻址
15~8
7
6~0
指令
操作码
I=0
dmad
堆栈指针SP
16位堆栈指针SP
16位数据 存储器地址
2019/12/21
;机xx0单器00000码00元D0000P0000的0操000A000结作数010051果码10据0100010送1d入101m11011aA11F1x11F1F11F1
ALDD ADD ADD
y#,4A,DP y,A y,A
;机据完y0器A0相成00码001+00L加x08000和D00操H10000y作00050单#00码1004010+元,0101D000的P00020100数1000y0H800y0000100001
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
返回本节
3.3 累加器寻址
累加器寻址是用累加器中的数值作为一个地址读 写程序存储器。共有两条指令可以采用累加器寻 址: READA
返回首页
3.2.1 数据存储器(dmad)寻址
使用数据存储器寻址的指令有:
MVDK Smem, dmad MVKD dmad, Smem MVDM dmad, MMR MVMD MMR, dmad
数据存储器寻址使用符号(符号地址)或一个表 示16位地址的立即数来指明寻址的数据存储单元 的16位绝对地址。例如:
程序存储器(pmad)寻址使用符号(符号地址)或一个 表示 16 位地址的立即数来给出程序空间的地址。例如, 把程序存储器中标号为 TABLE 单元中的值复制到 AR7 所 指定的数据存储器中去,指令可写为: MVPD TABLE,*AR7; 返回本节
3.2.3 端口地址(PA)寻址
使用端口地址的指令有:
LD
#0,ARP
;ARP=0(#k3)
LD
LD LD
#3,ASM
#50,DP #1234,A
;ASM=3(#k5)
;DP=50(#k9) ;A=1234(#lk)
返回首页
3.2 绝对寻址
3.2.1 数据存储器(dmad)寻址
3.2.2 程序存储器(pmad)寻址 3.2.3 端口地址(PA)寻址 3.2.4 长立即数*(lk)寻址
2.倒序寻址(如表3-3所示)
表3-2 单数据存储器操作数间接寻址类型
循环缓冲区
Data Memory
Start_address = xxxxxxxxxxx00000 ARi
ARi
xxxxxxxxxxx00010
BK N=30=1 1 1 1 0
End_address = xxxxxxxxxxx11111
If 0=<index+step<BK
若 N=32, 起始地址的最低6位=000000 for N=30,起始地址的最低5位 =00000
访问循环缓冲区: 用N (nb bits) 初始化BK 选择1个 ARi 作为指针
在ARi中的有效起始地址低nb位为0。 结束地址 = 起始地址+N-1。
循环寻址的算法:
index=index+step
循环寻址
间接寻址中用%表示循环寻址方式
*ARi-%, *ARi+%, *ARi-0%, *ARi+0%, *ARi(lk)%
BK寄存器 存放循环缓冲区的长度N。 使用循环缓冲区之前,必须对BK初始化。 可以在不同地址安排多个循环缓冲区,但它们 的长度必须相同。
如果N表示为nb位二进制数,起始地址的最低( LSB) 的nb位必须为0: 例如:
SMAPLE,*AR5;
MVKD
返回本节
3.2.2 程序存储器(pmad)寻址
使用程序存储器寻址的指令有:
FIRS Xmem, Ymem, pmad MACP Smem, pmad, src MVPD pmad, Smem MACD Smem, pmad, src MVDP Smem, pmad
(4)直接寻址
(5)间接寻址
(6)存储器映射寄存器寻址
(7)堆栈寻址
表3-1 寻址指令中用到的缩写符号及其含义
缩写符号 含义 16位单数据存储器操作数 在双操作数指令及某些单操作数指令中所用的16位双数据存储 器操作数,从DB总线上读出 在双操作数指令中所用的16位双数据存储器操作数,从CB总线 上读出;在读同时并行写的指令中表示写操作数 16位立即数——数据存储器地址(0~65535) 16位立即数——程序存储器地址(0~65535) 16位立即数——I/O口地址(0~65535) 源累加器(A或B) 目的累加器(A或B) 16位长立即数
返回首页
图3-1 DP作为基地址的直接寻址方式
图3-2 SP作为基地址的直接寻址方式 返回本节
3.5 间接寻5.2 双操作数寻址
返回首页
3.5.1 单操作数寻址
表3-2列出了单数据存储器(Smem)操作数间接 寻址类型。
特殊的间接寻址方式有:
1.循环寻址
PORTR PORTW PA, Smem Smem , PA
端口地址(PA)寻址使用一个符号(符号地址) 或一个表示16位地址的立即数来给出外部I/O口地 址。例如:
PORTR FIFO ,*AR5;
返回本节
3.2.4 长立即数*(lk)寻址
长立即数*(lk)寻址用于所有支持单数据存储器 操作数(Smem)的指令。
WRITA
Smem
Smem
返回首页
3.4 直接寻址
在直接寻址方式中,指令中包含数据存储器地址 (dma)的低7位,这7位dma作为地址偏移量, 结合基地址(由数据页指针 DP 或堆栈指针 SP 给 出)共同形成16位的数据存储器地址。使用这种 寻址方式,用户可在不改变 DP 或 SP 的情况下, 对一页内的 128 个存储单元随机寻址。采用这种 寻址方式的好处是指令为单字指令,数据存储器 地址(dma)的低7位放在指令字中(如图3-1、 3-2所示)。
第3章 TMS320C54x的数据寻址方式
3.1 立即寻址 3.2 绝对寻址 3.3 累加器寻址 3.4 直接寻址 3.5 间接寻址 3.6 存储器映象寄存器寻址
3.7 堆栈寻址
寻址方式小结
TMS320C54x DSP提供以下7种基本数据寻址方式。
(1)立即数寻址
(2)绝对地址寻址 (3)累加器寻址
Smem
Xmem Ymem dmad pmad PA src dst
lk
3.1 立即寻址
在立即寻址方式中,指令中包括了立即操作数。
一条指令中可对两种立即数编码,一种是短立即 数(3、5、8或9位),另一种是16位的长立即数。 短立即数指令编码为一个字长,16位立即数的指 令编码为两个字长。 立即数寻址指令中在数字或符号常数前面加一个 “#”号,来表示立即数。