第三章 DSP指令系统与特点
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
1100
0110 1100
X(3)
4
0100
X(2)
0010
0110 0010
X(4)
5
0101
X(10)
1010
0110 1010
X(5)
6
0110
X(6)
0110
0110 0110
X(6)
7
0111
X(14)
1110
0110 1110
X(7)
8
1000
X(1)
0001
0110 0001
X(8)
9
单数据存储器操作数间接寻址类型
操作码语法 *ARx *ARx*ARx+ *+ARx *ARx-0B *ARx-0 *ARx+0 *ARx+0B *ARx-% *ARx-0% *ARx+% *ARx+0% *ARx(lk) *+ARx(lk) *+ARx(lk)% *(lk)
功能
addr=ARx
addr=ARx ARx=ARx-1 addr=ARx ARx=ARx+1 addr=ARx+1 ARx=ARx+1 addr=ARx ARx=B(ARx-AR0) addr=ARx ARx=ARx-AR0 addr=ARx ARx=ARx+AR0 addr=ARx ARx=B(ARx+AR0) addr=ARx ARx=circ(ARx-1) addr=ARx ARx=circ(ARx-AR0)
用累加器A或B的低16位立即数加载PC。
假如ST1中的块重复有效位BRAF=1,当PC+1等于块重复 结束地址(REA)+1,将块重复起始地址(RSA)加载PC。 将PC+2压入堆栈,并用紧跟在调用指令后面的16位立即数 加载PC。返回指令将栈顶弹出至PC,回到原先的程序处 继续执行。 将PC+1压入堆栈,用累加器A或B的低16位加载PC。返回 指令将栈顶弹出至PC,回到原先的程序处继续执行。
将数据压入堆栈;在弹出操作
时,先从堆栈弹出数据,再增
加SP的值。
23
第二节 程序地址的生成
程序地址 生成器
(PAGEN)
程序计数器(PC) 重复计数器(RC) 块重复计数器(BRC)
构成
块重复起始地址寄存器(RSA)
块重复结束地址寄存器(REA)
核心
地址内容为:
16位程序计数器(PC) 内中保存某个内部或外 部程序存储器的地址。
Hale Waihona Puke CPL=0 7 位 dma 域 与 9bit 的 DP 相 结 合 形成16位的数据存储器地址。 CPL=1 7位dma域加上(正偏移)SP 的值形成16位的数据存储器地址。
DP值是从0~511(29-1),以DP为基准的直接寻址把存储器分成 512页,7位的dma范围从0~127,每页有128个可访问的单元。
址
22
7.堆栈寻址
功能
特点
PSHD *AR2 POPD *AR3
用来在中断 和子程序调 用时自动保 存程序计数 器(PC)中 的数值,也 能用来保护 现场或传送
从高地址向低地址方向生长,
SP用来管理堆栈,SP始终指向
堆栈中所存放的最后一个数据,
即SP指针始终指向栈顶。在压
入操作时,先减小SP的值,再
储一个器无的符地号址的③ 16位的长偏移(lk)用来作为数据1存6 储器
的绝对地址。(也属绝对寻址)③
1) 循环寻址 循环缓冲区的长度值存放在循环缓冲 区长度寄存器BK中,BK中的数值由指令设定。长度为R 的循环缓冲器必须从一个N位地址的边界开始,即循环 缓冲器基地址的最低N位必须为0。N是满足2N>R的最 小整数。R的值必须装入BK。
例如,含有31个字的循环缓冲器必须从最低5位为0的 地址开始 ,即xxxx xxxx xxx0 00002,N=5,2N=25> R=31,且31必须装入BK。如:
STM #31,BK
如果R=32,则最小的N值为6,循环缓冲区的起始地址 必 须 有 6 个 最 低 有 效 位 为 0 , 即 ×××× ×××× ××00 00002。
将PC压入堆栈,用适当的中断向量地址加载PC。中断返 回时,将栈顶弹出至PC,继续执行被中断了的子程序2。5
IPTR(PMST) + 中断向量号
注
在操作数前面需要加#字号来说明该操作数
意
为立即数。否则会把该操作数误认为是一个地 址,从而把立即数寻址变成绝对地址寻址。
举例
LD #93h,A
LD 93h,A
5
2.绝对地址寻址
在指令中包含有所要寻址的存储单元的16位 特 地址。这个16位的地址可以用其所在单元的地 点 址标号或者16位符号常数来表示。
3
寻址分类
1.立即数寻址 2.绝对地址寻址 3.累加器寻址 4.直接寻址 5.间接寻址 6.存储器映象寄存器寻址 7.堆栈寻址
4
1.立即数寻址
指令中包含有执行指令所需要的操作数。
特
立即数分为3、5、8或9位的短立即数和16位
点 的长立即数两种。
短立即数可包含在单字或双字指令中,长立
即数在双字指令中。
12
5.间接寻址
方法
特点
(AR0~AR7)→ ARAU0/ARAU1 → 16位无符号算术运 算→ 寻址范围为64K
能在一个指令中访问 两个数据存储器单元
两个独立的存储器单元读数据 读一个、写另一个存储器单元 读写两个连续的存储器单元 13
(1)单操作数寻址
LD *AR1,B
定义间接寻
定义寻址所使用
辅助 寄存器
选择
Xar或Yar 00 01 10
辅助寄存器 AR2 AR3 AR4
11
AR5
双数据存储器操作数寻址的类型
Xmod或 Ymod 00 01
10
11
操作码语 法
*ARx *ARx-
*ARx+
*ARx+0%
功能
addr=ARx
addr=ARx ARx=ARx-1
addr=ARx ARx=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
说明 ARx包含了数据存储器地址 访问后,ARx中的地址减1② 访问后,ARx中的地址加1① 在寻址前,ARx中的地址加1,然后再寻址①②③ 访问后,从ARx中以位倒序进位的方式减去AR0 访问后,从ARx中减去AR0 访问后,把AR0加到ARx中去 访问后,把AR0以位倒序进位的方式加到ARx中 访问后,ARx中的地址以循环寻址的方式减1① 访问后,从ARx中以循环寻址的方式减去AR0
举例
7
(3)PA寻址 端口(PA)
方法
用一个符 号或一个 常数来确
定外部 I/O口地
址
举例
PORTR FIFO,*AR5 PORTR 90h,*AR5
8
(4)*(lk)寻址
允许所有使 用Smem寻址
的指令去访
问数据空间
方法 举例 特点
的任意单元
而不改变数
据页指针
用一个符号
(DP)的值,
或一个常数
以8位辅助寄存器为例,AR1表示了在存储器中数 据)输的2出。基整利地 序用址 后以( 的下0F两1F1T条0变语换00句结00可果)以:2,向A外R0设的口值(为口(地00址00为1P0A0)0
RPT
#15
;重复执行下条指令15+1次
PORTW *AR1+0B,PA;向外设口PA输出结果 18
位倒序对FFT变换结果的序号调整
举例
用一个符号或 一个常数来确 定7位偏移值, 与DP或SP共同 形成16位的数 据存储器实际
地址。
可以在不改 变DP或SP的 情况下,随 机地寻址128 个存储单元 中的任何一 个单元。
LD #x,DP LD @u,A ADD @v,A =========== SSBX CPL LD @X1,A ADD @Y2,11A
DSP技术及应用
Digital Signal Processor 数字信号处理器 陈金鹰 教授
信息工程学通信工程系
1
第三章 DSP指令系统与特点
第一节 寻址方式 第二节 程序地址的生成 第三节 流水线操作技术 第四节 指令系统概述
2
第一节 TMS320C54x的寻址方式
Smem:16位单寻址操作数。 Xmem:16位双寻址操作数,从DB数据总线上读出。 缩 Ymem:16位双寻址操作数,从CB数据总线上读出。 写 dmad:16位立即数,数据存储器地址。 pmad:16位立即数,程序存储器地址。 PA: 16位立即数,I/O口地址。 src: 源累加器(A或B)。 dst: 目的累加器(A或B)。 lk: 16位长立即数。
序号 0
存储单 元地址
0000
整序前FFT 变换结果
X(0)
位倒序 0000
AR1更新的地址值 AR0=0000 10002
0110 0000
整序后PA输出的 FFT变换结果
X(0)
1
0001
X(8)
1000
0110 1000
X(1)
2
0010
X(4)
0100
0110 0100
X(2)
3
0011
X(12)
说明 ARx是数据存储器地址 访问后,ARx中的地址减1
访问后,ARx中的地址加1 访问后,AR0以循环寻址的
方式加到ARx中 21
6.存储器映象寄存器寻址
功能
方法
举例 特点
用来修 改存储 器映象 寄存器
高9位数据 存储器地址 被置0,利 用指令中的 低7位地址 访问MMR。
LDM PRD,A
0页寻址。 不影响当前 DP或SP值 。 用于直接寻 址和间接寻
方法
(1)数据存储器地址(damd)寻 址
用一个符号或一个 数来确定数据空间 的一个地址。
MVKD SAMPLE,*AR3 LD 93h,A
举例 6
(2)程序存储器地址(pmad)寻 址
方法
用一个符号或一 个具体的数来确 定程序存储器中
的一个地址
MVPD TABLE,*AR4 MVPD 90h,*AR4
访问后,ARx中的地址以循环寻址的方式加1①
访问后,把AR0以循环寻址的方式加到ARx中 ARx和16位的长偏移(lk)的和用来作为数据存储器地 址。ARx本身不被修改 在寻址前,把一个带符号的16位的长偏移(lk)加到 ARx中,然后用新的ARx的值作为数据存储器的地址③ 在寻址前,把一个带符号的16位的长偏移以循环寻址 的方式加到ARx中,然后再用新的ARx的值作为数据存
也不用对ARx
来确定数据
进行初始化
存储器中的
一个地址
LD *(BUFFER),A
9
3.累加器寻址
方法
特点
举例
用累加器 中的数值 作为地址 来读写程 序存储器。
READA Smem WRITA Smem
可用来完成 程序存储器 单元的数据 与数据存储 器单元的数 据进行交换 10
4.直接寻址
方法
特点
15
1111
X(15)
1111
0110 0111 0110 1111
X(14) X(15)19
(2)双操作数寻址方式
MPY *AR2,*AR3,A
定义用于
确定 包含
访问Xmem
Xmem
操作数的
地址
间接寻址
的辅
方式的类
助寄
型
存器
定义用于 访问Ymem 操作数的 间接寻址 方式的类
型
确定 包含 Ymem 地址 的辅 助寄 存器20
1001
X(9)
1001
0110 1001
X(9)
10
1010
X(5)
0101
0110 0101
X(10)
11
1011
X(13)
1101
0110 1101
X(11)
12
1100
X(3)
0011
0110 0011
X(12)
13
1101
X(11)
1011
0110 1011
X(13)
14
1110
X(7)
0111
即将取指的某条指令; 某个16位立即操作数; 系数表。 在程序存储器中的地址24
将程序存储器地址加载到程序计数器的途径
操作
加载到PC的地址
复位
PC=FF80h。
顺序执行指令
PC=PC+1。
分支转移
用紧跟在分支转移指令后面的16位立即数加载PC。
由累加器分支转移
块重复循环
子程序调用
从累加器调用子程 序 硬件中断或软件中 断
ST1
址的类型
的辅助寄存器
CMPT=0 标准方式 ARF确定辅助寄存器,ST0中ARP=000
CMPT=1 兼容方式 如ARF=000,用ARP(ST0)选择辅助寄
存器,否则,用ARF来确定辅助寄存器。ARF的值装入
ARP。
14
单操作数间接寻址的硬件框图
15
MOD域 0000 0001 0010 0011 0100 0101 0110 0111 1000 1001 1010 1011 1100 1101 1110 1111
17
2) 位倒序寻址 在这种寻址方式中,用AR0存放 FFT点数的一半整数N,用另一辅助寄存器指向一数据 存放的物理单元。当使用位倒序寻址把AR0加到辅助寄 存器中时,地址以位倒序的方式产生,即进位是从左 向右,而不是从右向左进位。
例如: 0110 1000
+ 0000 1000
0110 0100