第三章第四章6讲
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
loop:
8点的FFT蝶型结运算 点的FFT蝶型结运算 FFT
000 100 010 110 001 101 011 111
x(0) W0 x(4) W0 x(2) W0 x(6) x(1) W0 x(5) W0 x(3) W0 x(7) W2 X(7) W3 X(6) W2 X(5) W2 W0 W1 X(3) X(4) X(2) X(1) X(0)
单操作数间接寻址类型: 单操作数间接寻址类型: • • • • • • • • *ARx: : ARx包含了数据存储器地址 包含了数据存储器地址 *ARx-/ *ARx+ : 访问后, 中的地址减1/加 访问后, ARx中的地址减 加1 中的地址减 *+ARx: 在寻址之前, 中的地址加1 : 在寻址之前,ARx中的地址加 中的地址加 *ARx-0B/ *ARx+0B :访问后,从ARx中以位倒序进位的 访问后, 中以位倒序进位 中以位倒序进位的 方式减去/加上 加上AR0 方式减去 加上 *ARx-0/ *ARx+0 : 访问后,从ARx中减去 加上 访问后, 中减去/加上 中减去 加上AR0 *ARx-%/ *ARx+% : 访问后,ARx中的地址以循环寻址 访问后, 中的地址以循环寻址 中的地址以 的方式减1/加 的方式减 加1 *ARx-0%/ *ARx+0% : 访问后,从ARx中以循环寻址的方 访问后, 中以循环寻址的方 式减去/加上 加上AR0 式减去 加上 *ARx(lk): ARx和16-bit的长偏移 的长偏移(lk) 的和用来 : 和 的长偏移 作为数据存储器地址。 作为数据存储器地址。ARx本身不 本身不 被修改
操作前的堆栈和SP 操作前的堆栈和SP sp 0011 0001 0010 0011 0100 0101 0110 X1
操作后的堆栈和SP 操作后的堆栈和SP sp 0010 0001 0010 0011 0100 0101 0110
X2
X1
图、堆栈操作对堆栈指针的影响
7种寻址方式不同的用途 • (1)立即寻址运行速度慢,但需要较多的程序存储空间, 立即寻址运行速度慢 但需要较多的程序存储空间, 运行速度慢, 而且数值不能改变,主要用于表示常数和初始化。 而且数值不能改变,主要用于表示常数和初始化。 • (2)绝对寻址可以访问任何的数据空间,但速度慢,要求 绝对寻址可以访问任何的数据空间 但速度慢, 可以访问任何的数据空间, 较多的存储空间,用于对速度没有苛求的场合。 较多的存储空间,用于对速度没有苛求的场合。 • (3)累加器寻址主要是在程序空间和数据空间传送数据。 累加器寻址主要是在程序空间和数据空间传送数据 主要是在程序空间和数据空间传送数据。 • (4)间接寻址类似于高级语言中的指针,较为灵活,主要 间接寻址类似于高级语言中的指针 较为灵活, 类似于高级语言中的指针, 是针对数字信号处理的算法而设计的。 是针对数字信号处理的算法而设计的。 • (5)直接寻址中寻址速度较快,利用并行流水线操作,用 直接寻址中寻址速度较快,利用并行流水线操作, 中寻址速度较快 于时间要求较高的场合。 于时间要求较高的场合。 • (6)MMR是基地址为零(不考虑SP、DP、CPL)的直接寻 MMR是基地址为零 不考虑SP DP、CPL) 是基地址为零( SP、 址方式,寻址速度较快,可以直接快速访问数据存储器的 址方式,寻址速度较快, 页资源。 0页资源。
BRC ; 块循环 块循环,
AR5
#255,
输出256个样点 个样点 输出 RPTB STM RPTZ MAC STH
最早的样值
STL
loop #16, BK ; FIR 循环缓冲大小 A, #15 *AR4+0%, *AR3+0%, A ; 滤波 A, *AR5+ ; 滤波输出 LD *AR7+, A ; 装入最新的输入样值 A, *AR4+0% ; 用最新的输入样值替代
STM RPT PORTW #8, AR0 #15 *AR2+0B, PA
双操作数间接寻址类型: 双操作数间接寻址类型:
双数据存储器操作数间接寻址类型为 ARx、 ARxARx+、 ARx+0 *ARx、*ARx-、*ARx+、*ARx+0%。 • 所用辅助寄存器只能是AR2、AR3、AR4、AR5。 所用辅助寄存器只能是AR2 AR3 AR4 AR5 AR • 其特点是:占用程序空间小,运行速度快,在一个机器周 其特点是:占用程序空间小,运行速度快, 期内通过两个16位数据总线( 16位数据总线 读两个操作数。 期内通过两个16位数据总线(C和D)读两个操作数。指令 Xmem表示从DB总线上读出的16位操作数 Ymem表示从 表示从DB总线上读出的16位操作数, 表示从CB 中Xmem表示从DB总线上读出的16位操作数,Ymem表示从CB 总线上读出的16位操作数。 16位操作数 总线上读出的16位操作数。
思考题: 思考题:章节后思考题
2.答案 答案: 答案 (1)循环起始地址就是有效基地址 其值为用户选定的指向循环缓冲区一个 循环起始地址就是有效基地址,其值为用户选定的指向循环缓冲区一个 循环起始地址就是有效基地址 单元的辅助寄存器ARX的低 位置 后得到的值 是满足 N>R条件最 的低N位置 后得到的值.N是满足 单元的辅助寄存器 的低 位置0后得到的值 是满足2 条件最 小整数. 小整数 (2)起始地址必须从 起始地址必须从XXXX XXXX XX00 000开始 起始地址必须从 开始 3.答案 答案 AR0=0X0010H AR3=0X0310H BK=31 *AR3+% AR3=0X0311H AR3=0X0310H *AR3-% AR3=0X030FH AR3=0X030EH *AR0(#100) AR0=0X0066H
• *+ARx(lk): 在寻址之前,把一个带符号的16-bit的长偏 *+ARx(lk): 在寻址之前,把一个带符号的16 bit的长偏 16lk)加到ARx ARx中 然后用新的ARx ARx的值作 移(lk)加到ARx中,然后用新的ARx的值作 为数据存储器的地址 • *+ARx(lk)%:在寻址之前,把一个带符号的16-bit的长偏移 +ARx(lk)%:在寻址之前,把一个带符号的16 bit的长偏移 16以循环寻址的方式加到ARx ARx中 以循环寻址的方式加到ARx中,然后再用新 ARx的值作为数据存储器的地址 的ARx的值作为数据存储器的地址 符号, 有B符号,倒序进位 符号 符号, 有%符号,循环寻址 符号, 有0符号, 与AR0有关 符号 有关
*AR3+0% *AR3(-2)
4.答案 答案 (1) AR0=0X008H (2) AR0=0XFF08H 0XFF04H 0XFF0CH 0XFF02H 0XFF0AH 0XFF06H AR0=0XFF0EH 0XFF01H
2.欲将数据地址单元 欲将数据地址单元0100H中的数据传递到 中的数据传递到1800H中.分别采 欲将数据地址单元 中的数据传递到 中 分别采 用以下三种方式 A)MVDD 指令 B)MVKD 指令 C)LD指令和 指令和STL指令 指令 指令和 写出三种方式可以使用的各种数据寻址方式
循环寻址( 循环寻址(有%符号) 符号) • 在卷积、相关、FIR中要用到循环缓冲区。 在卷积、相关、 中要用到循环缓冲区。 中要用到循环缓冲区 • 循环缓冲区长度R由BK决定 循环缓冲区长度 由 决定 STM #lk, BK ;设置循环缓冲区长度 设置循环缓冲区长度 • 循环缓冲区从 位的地址边界 位0)开始,R<2N , 若R=40, 循环缓冲区从N位的地址边界 位的地址边界(N位 开始 开始, 开始地址为: 则N=6, 开始地址为: xxxx xxxx xx00 0000。 0000。 • 循环寻址时用一个 ARx指向缓冲区。 指向缓冲区。 指向缓冲区 地址变化规则: 地址变化规则:
例如: 例如 MVDD *AR2+,*AR3+
6. 存储器映射寄存器寻址 存储器映射寄存器寻址用来修改存储器映射寄存器而 不影响当前数据页指针(DP)或堆栈指针(SP)的值。 不影响当前数据页指针(DP)或堆栈指针(SP)的值。 存储器映射寄存器寻址: 存储器映射寄存器寻址: 直接寻址中利用操作数中的低7位访问MMR 直接寻址中利用操作数中的低7位访问MMR 间接寻址中利用ARx访问MMR Arx高位被置 ARx访问MMR, 高位被置0 间接寻址中利用ARx访问MMR, Arx高位被置0 。 只有8条指令能使用存储器映射寄存器寻址: 只有8条指令能使用存储器映射寄存器寻址: LDM MMR, dst , MVDM dmad, MMR MVMD MMR, dmad MVMM MMRx, MMRy POPM MMR PSHM MMR STLM src, MMR STM #lk, MMR
(2)
STM STM LD STL
#0100H,AR1 #1800H,AR2 *AR1,A A,*AR2
(3) LD LD LD STL
#2,DP @(100H),A #C0H,DP A,@(1800)
wenku.baidu.com
TMS320C54x的指令集 的指令集 TMS320C54x的指令集有129条指令, TMS320C54x的指令集有129条指令,由寻址方 的指令集有129条指令 式不同衍生至216 216条 式不同衍生至216条,按功能分为如下几类:
LDM AR4,A MVDM 300H,BK MVMM SP,AR1
7.堆栈寻址 7.堆栈寻址 系统堆栈用来在中断和子程序期间自动存放程序 计数器(PC) (PC)。 计数器(PC)。它也能用来存放额外的数据项或传递 数据值。处理器使用一个16 bit的存储器映射寄存器 16数据值。处理器使用一个16-bit的存储器映射寄存器 —堆栈指针来对堆栈寻址,它总是指向存放在堆栈 堆栈指针来对堆栈寻址 堆栈指针来对堆栈寻址, 中的最后一个元素。 中的最后一个元素。 共有四条使用堆栈寻址方式访问堆栈的指令: 共有四条使用堆栈寻址方式访问堆栈的指令: PSHD 把一个数据存储器的值压入堆栈。 把一个数据存储器的值压入堆栈。 PSHM 把一个存储器映射寄存器的值压入堆栈。 把一个存储器映射寄存器的值压入堆栈。 POPD 把一个数据存储器的值弹出堆栈。 把一个数据存储器的值弹出堆栈。 POPM 把一个存储器映射寄存器的值弹出堆栈。 把一个存储器映射寄存器的值弹出堆栈。
应用举例: 计算16阶的FIR滤波器输出256 16阶的FIR滤波器输出256个点 应用举例: 计算16阶的FIR滤波器输出256个点
.sect “fir-prog”
址
STM STM STM STM
#-1, #h+15, #x+15, #y,
STM
AR0 ;间接寻址的修正值 间接寻址的修正值 AR3 ;指向最高滤波系数地址 指向最高滤波系数地址 AR4 ;指向样点缓冲空间最早的地 指向样点缓冲空间最早的地 ;指向输出单元首地址 指向输出单元首地址
FFT中混序就是位倒序 中混序就是位倒序
FFT运算时输出 输入序列中必有其一要混序。 运算时输出/输入序列中必有其一要混序 运算时输出 输入序列中必有其一要混序。
• 进位加到左边 进位加到右边 • 1100 1100 • + 1000 + 1000 • 10100 0010 • 如果AR2中存放 中存放X(0)的地址,AR0的值为 (FFT 的地址, 的值为8( 如果 中存放 的地址 的值为 长度的一半),则下列程序向PA口输出倒序 ),则下列程序向 口输出倒序:0000, 长度的一半),则下列程序向 口输出倒序 , 1000,0100,1100,0010,…,0111,1111。 , , , , , , 。
答案: A) STM STM MVDD #0100H,AR2 #1800H,AR3 *AR2,*AR3 (2) STM #1800H,AR2 MVKD 100H,*AR2
B) (1)MVKD 100H,*(1800H) (3) LD #C0H,DP MVKD 100H,@(1800H)
C) (1) LD *(100H),A STL A,*(1800)