第3章TMS320C54XDSP寻址方式09.10

合集下载
相关主题
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

直接寻址方式书写时需在变量前加@,或者用一个数dma设 定偏移地址值。 DP的值可由LD指令装入,用RESET指令复位清零; CPL的值可由SSBX置位,由RSBX复位。
14
CPL=1----SP直接寻址
地址计算公式:

例如: SSBX CPL LD @1, A ADD @2, A
SP
说明 ARx包含了数据存储器地址 ARx包含了数据存储器地址 访问后,ARx中地址减1 ARx包含了数据存储器地址 访问后,ARx中地址加1
*号表示间址
0
1
*ARx-
2
*ARx+
32位字时 +/-增减为2
3
*+ARx
寻址前,ARx中地址加1
寻址前变址 只用于写操 作指令
4
*ARx-0B
ARx包含了数据存储器地址 访问后,ARx以位倒序方式减去 AR0 ARx包含了数据存储器地址 访问后,ARx中减去AR0 ARx包含了数据存储器地址 访问后,ARx中加上AR0 ARx包含了数据存储器地址 访问后,ARx以位倒序方式加上 17 AR0
ARx包含了数据存储器地址 访问后,ARx以循环寻址方式减1 ARx包含了数据存储器地址 访问后,ARx以循环寻址方式减去 AR0 ARx包含了数据存储器地址 访问后,ARx以循环寻址方式加1 ARx包含了数据存储器地址 访问后,ARx以循环寻址方式加上 AR0 ARx加上16位长偏移量作为数据 存储器地址 访问后,ARx中内容不变 ARx加上16位长偏移量作为数据 存储器地址 访问后,ARx中内容加上16位长 偏移量 ARx以循环寻址方式加上16位长 偏移量作为数据存储器地址, 同时修改ARx中内容 以无符号16位长偏移量作为数据 存储器地址 (绝对地址)
10
累加器寻址举例:
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
11
4.直接寻址
直接寻址指令中包含有数据存储器地址的低7位(dma)。
以dma为偏移地址,与基地址(数据页指针DP或堆栈指针SP)共同构成 16位数据存储器的物理地址。 数据指针(DP),当ST1中的CPL位=0 堆栈指针(SP),当ST1中的CPL位=1
.mmregs .bss x, 4
a .word 1, 2, 3, 4 STM #a, AR2 STM #x, AR3 RPTZ A, #3 MAC *AR2+,* AR3+ ,A LD #a, DP STL A,@y STH A,@y+1 …..
21
3
(1) 位码倒序寻址ຫໍສະໝຸດ Baidu
间接寻址除可以完成增量、减量、变址等常规寻址 要求外,还可以完成数字信号处理算法中常用的位倒序和 循环寻址功能。 FFT算法中常用到位码倒序寻址。 FFT运算时输出/输入序列中必有其一要倒序。以8点 蝶形FFT运算为例: FFT变换前按顺序排列的输入序列数据经蝶形变换后, 输出序列按倒序排列; FFT变换前按倒序排列的输入序列数据经蝶形变换后, 输出序列按顺序排列;
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 …..
间接寻址: 8个辅助寄存器中包含有操作数所在的数据存储器地址 存储器映射寄存器寻址:修改存储器映射寄存器中的值,而不影响
当前DP或SP的值
堆栈寻址: 把数据压入和弹出系统堆栈
6
1.立即寻址
在立即寻址方式中,指令里包含了立即操作数。 立即寻址方式中的立即数有两种数值形式,1、5、8、9位 短立即数和16位的长立即数,它们在指令中分别编码为单字指 令和双字指令。
12
CPL=0----DP直接寻址
9-bit的DP与7-bit的dma结合形成数据存储器物理地址 以DP为基准的直接寻址
9-bit的DP 指向数据 存储空间 的512个数 据页中的 某一页
例:
0
DP 9-bit
1
2
510 511
当偏移地址为变量时,变量前加@符号 x LD LD .set 20 #20h DP @x, A
8
MVDM dmad, MMR MVMD MMR, dmad
MVDP Smem , pmad MVPD pmad, Smem
PORTW Smem, PA
例如: MVKD MVPD PORTR DATA, TABLE, *AR1; *AR2;
数据存储器寻址 程序存储器寻址 端口寻址
0F2F0H, *AR5;
例如:
LD #0AH,ASM RPT #99H LD #020H,DP LD #0FE00H,A ;5-bit (EDOA) ;8-bit (EC99) ;9-bit (EA20) ;16-bit (F020 FE00)
需要注意的是,立即数前面加需“#”以区别于地址表示方法, 不得遗漏。 例如,LD #0FE00H,A,表示将立即数FE00H送入累加器A,遗漏#, 则变成把地址为0FE00H单元的内容送入累加器A(1000 FE00)。
指令代码寻址主要在程序存储空间进行,称作程序 存储器寻址;操作数寻址主要在数据存储空间进行,称作
数据存储器寻址,简称寻址。 寻找指令代码和寻找参与运算的操作数的方法称作 寻址方式。 同一功能指令因寻址方式不同而有多种表示形式。
4
寻址指令中的缩写符号及其含义
符号 Smem Xmem Ymem dmad pmad PA src dst lk 含 16位单数据寻址操作数 16位双数据寻址操作数,从DB总线读出 16位双数据寻址操作数,从CB总线读出 16位立即数,数据存储器地址 16位立即数,程序存储器地址 16位立即数,I/O口地址 源累加器(A或B) 目的累加器 16位长立即数
《DSP技术与应用》
学时:32(含8学时实验)
1
第3章 TMS320C54XDSP寻址方式
2
本 章 内 容
1、寻址与寻址方式 2、立即寻址 3、绝对寻址 4、累加器寻址 5、直接寻址 6、间接寻址 7、MMR寻址 8、堆栈寻址 9、程序存储器寻址
3
寻址与寻址方式
指令执行过程中涉及两次寻址操作,一次是预取指 阶段的指令代码寻址,另一次是访问阶段的操作数寻址
位于状态寄存器ST1中的CPL的值决定了这种寻址方式的指针选择 CPL=0,选择数据页指针DP,用DP中的9位作为高位与指令中指定 的7位作为低位,共同构成16位数据存储单元的地址。 CPL=1,选择堆栈指针SP,用SP的值与指令中指定的7位正偏移量 相加,构成16位数据存储单元的地址。 利用这种寻址方式,可以在不改变数据页指针DP和堆栈指针SP内 容的情况下,随机地寻址128个存储单元中的任何一个单元。 直接寻址的优点是寻址速度快且为单字指令。
9
*ARx-0%
10
*ARx+%
11
*ARx+0%
12
*ARx(lk)
(lk)不允许 MMR寻址
13
*+ARx(lk)
14
*+ARx (lk)%
15
*(lk)
18
间接寻址时:间址寄存器前加*号
“+”号在前,修改生成新值后再寻址 “+”号在后,寻址后再修改生成新值 有0符号, 与AR0有关 有B符号, 位倒序寻址 有%符号,循环寻址
; CPL置位 ;A的结果:150
0024 0100 0050 3404
15
(SP则始终指向栈顶)
5.间接寻址
间接寻址根据8个辅助寄存器AR0—AR7中定义的任一 寄存器给出的16位地址寻址。每一个寄存器都可以用来 寻址64K字数数据存储空间中的任何一个单元。
间接寻址很灵活,不仅能从存储器中读或写一个单16-bit 数据操作数,而且能在一条指令中访问两个数据存储器单元 (即从两个独立的存储器单元读数据,或读一个存储器单元同 时写另一个存储器单元,或读写两个连续的存储器单元)。 VC5402有两个辅助寄存器算术运算单元ARAU0和ARAU1,它 们与8个辅肋辅助寄存器一起,可以进行无符号数算术运算, 实现16种单操作数间接寻址方式。
22
23
24
倒序及其进位(有B符号)
9
3.累加器寻址
累加器寻址是利用累加器A的低16位(AL内容)作为地址对程 序存储器中的数据进行访问,这种寻址方式常用来寻址存放数 据的程序存储空间。 只有两条指令可用于累加器寻址方式。 READA Smem WRITA Smem 第一条指令意为将累加器A(AL)的内容作为地址寻找程序存储 器中的数据,传送到Smem指定的数据存储单元中。 第二条指令意为将Smem指定的数据存储单元中的数据(1个字), 写到累加器A(AL)指定地址的程序存储器中去。
16
序号
间址类型 *ARx
功能 Addr=ARx Addr=ARx ARx=ARx-1 Addr=ARx ARx=ARx+1 Addr=ARx+1 ARx=ARx+1 Addr=ARx ARx=B(ARxAR0) Addr=ARx ARx=ARx- AR0 Addr=ARx ARx=ARx+AR0 Addr=ARx ARx=B( ARx+AR0)
a
采用双操作数间接寻址可使程序简化
20
双操作数间接寻址方式
双操作数间接寻址类型为: *ARx、*ARx-、*ARx+、*ARx+0% 双操作数间接寻址寄存器只能使用: AR2、AR3、AR4、AR5 双操作数间接寻址特点: 速度快,使用DB、CB两条总线 双操作数间接 y0 ai xi a0 x0 a1 x1 a2 x2 a3 x3 i 0 寻址编程举例:
第一条指令表示将数据存储器中以DATA符号为地址单元中 的数据传送到由辅助寄存器ARl所指向的数据存储单元中去。 DATA代表数据存储单元的地址dmad。 第二条指令表示将程序存储器中以TABLE符号为地址单元中 的数据传送到由辅助寄存器AR2所指向的数据存储单元中去。 TABLE代表程序存储单元的地址pmad。 第三条指令表示将地址为0F2F0H的端口中的数据传送到由 辅助寄存器AR5所指向的数据存储单元中去。
5
*ARx-0
6
*ARx+0
7
*ARx+0B
8
*ARx-%
Addr=ARx ARx=circ( ARx-1) Addr=ARx ARx=circ( ARx- AR0) Addr=ARx ARx=circ( ARx+1) Addr=ARx ARx=circ( ARx+AR0) Addr=ARx+ lk ARx=ARx Addr=ARx+ lk ARx=ARx+ lk Addr= circ (ARx+ lk) ARx= circ( ARx+ lk) Addr= lk
5

寻址方式
操作数寻址方式
’C54x共有7种操作数寻址方式:
立即数寻址:指令中包含有一个立即数(#)操作数 绝对地址寻址:指令中包含有一个操作数的16位物理地址 累加器寻址:用累加器的低16位值作为地址去访问程序存储器 直接寻址:指令中包含的7位偏移地址与当前数据页指针DP或堆栈
指针SP共同决定了操作数在数据存储器中的物理地址
注意:用DP直接寻址时 操作对象需处于同一页
13
采用DP数据页指针直接寻址编程举例
观察如下程序,计算累加器A中数据。
数据存储器
RSBX LD LD LD ADD
CPL #3,DP @x,A #4,DP @y,A
地址 0180 ▪▪▪▪ x y 01FF 0200 ▪▪▪▪
数据 0001 ▪▪▪▪ 1000 0500 ▪▪▪▪
7
2.绝对寻址
绝对寻址方式的指令中包含有所寻操作数的16位单元地址。 由于寻址16位绝对地址,故绝对寻址指令长度至少为2个字。 有四种绝对寻址指令:
数据存储器地址(dmad)寻址: MVDK Smem, dmad MVKD dmad, Smem 程序存储器地址(pmad)寻址: FIRS Xmem, Ymem, pmad MACP Smem, pmad, src I/O端口地址(PA)寻址: PORTR PA, Smem 长立即数*(lk)寻址: LD *(BUFFER),A
相关文档
最新文档