DSP技术课程讲授提纲(管老师)2
- 格式:doc
- 大小:47.50 KB
- 文档页数:3
DSP技术课程讲授提纲
第三章 TMS320C54X系列 软件体系
这一章的主要内容:
◆ ‘C54x寻址方式
◆ ‘C54x特殊寻址方式说明
◆ ‘C54x指令集
◆ ‘C54x特殊指令使用说明
§3-1 TMS320C54x的寻址方式
‘C54x的寻址方式
◆ 立即数寻址: 指令中嵌有一个固定的数
◆ 绝对地址寻址: 指令中有一个固定的地址
◆ 累加器寻址: 按累加器内的地址去访问程序存储器中的一个单元
◆ 直接寻址: 指令中的7bits是一个数据页内的偏移地址,而所在的数据页由数据页
指针DP或SP决定。该偏移加上DP和SP的值决定了在数据存储器中的实际地址。
◆ 间接寻址: 按照辅助寄存器中的地址访问存储器。
◆ 存储器映射寄存器寻址: 修改存储器映射寄存器中的值,而不影响当前DP或SP
的值。
◆ 堆栈寻址: 把数据压入和弹出系统堆栈。
立即数寻址
在立即数寻址中,指令里包括了立即操作数。在一条指令中可对两种立即数编码。一种
是短立即数(3、5、8或9bits),另一种是16bits的长立即数。立即数可包含在单字或双
字指令中。3-,5-,8-或9-bit值在单字指令中,16-bit值在双字指令中。
直接寻址
在直接寻址中,指令代码包含了数据存储器地址的低七位。这7-bit dma作为偏移地址
与数据页指针(DP)或堆栈指针(SP)相结合共同形成16-bit的数据存储器实际地址。
CPL=0:dma与9-bit的DP相结合形成数据存储器地址。
CPL=1:dma加上SP基地址形成数据存储器地址。(st1中)
间接寻址
在间接寻址中,64K数据空间任意单元都可通过一个辅助寄存器中的16-bit地址进行访
问。‘C54x有8个16-bit辅助寄存器(AR0-AR7)。两个辅助寄存器算术单元(ARAU0和ARAU1),
根据辅助寄存器的内容进行操作,完成无符号的16-bit算术运算。间接寻址很灵活,不仅能
从存储器中读或写一个单16-bit数据操作数,而且能在一条指令中访问两个数据存储器单元
(即从两个独立的存储器单元读数据,或读一个存储器单元同时写另一个存储器单元,或读
写两个连续的存储器单元)。
单操作数间接寻址类型:
◆ *Arx:ARx包含了数据存储器地址。
◆ *ARx-/ *ARx+ :访问后,ARx中的地址减1/加1。
◆ *+ARx:在寻址之前,ARx中的地址加1。
◆ *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本身不
被修改。
◆ *+ARx(lk):在寻址之前,把一个带符号的16-bit的长偏移(lk)加到ARx中,然后
用新的ARx的值作为数据存储器的地址。
◆ *+ARx(lk)%:在寻址之前,把一个带符号的16-bit的长偏移以循环寻址的方式加到
ARx中,然后再用新的ARx的值作为数据存储器的地址。
双操作数寻址方式
◆ *Arx: ARx是数据存储器地址
◆ *ARx-/ *ARx+: 访问后,ARx中的地址减1/加1
◆ *ARx+0%: 访问后,AR0以循环寻址的方式加到ARx中。
绝对地址寻址
有个别指令可以使用16bits的绝对地址寻址:
◆ 数据存储器地址(dmad)寻址:
MVDK Smem, dmad MVDM dmad, MMR
MVKD dmad, Smem MVMD pmad, Smem
◆ 程序存储器地址(pmad)寻址:
FIRS Xmem, Ymem, pmad MACD Smem, pmad, src
MACP Smem, pmad, src MVPD pmad, Smem
◆ 端口地址(PA)寻址
PORTR PA, Smem PORTW Smem, PA
◆ *(lk)寻址适用于支持单数据存储器操作数的指令
累加器寻址
累加器寻址是用累加器中的数作为一个地址。这种寻址方式可用来对存放数据的程序存
储器寻址。共有两条指令可以采用累加器寻址:
READA Smem
WRITA Smem
READA是把累加器A所确定的程序存储器单元中的一个字,传送到单数据存储器(Smem)
操作数所确定的数据存储器单元中。WRITA是把Smem操作数所确定的数据单元中的一个字,
传送到累加器A确定的程序存储器单元中去
存储器映射寄存器寻址
存储器映射寄存器寻址用来修改存储器映射寄存器而不影响当前数据页指针(DP)或堆
栈指针(SP)的值。存储器映射寄存器寻址既可以在直接寻址中使用,又可以在间接寻址中
使用。
只有8条指令能使用存储器映射寄存器寻址:
LDM MMR, dst
MVDM dmad, MMR
MVMD MMR, dmad
MVMM MMRx, MMRy
POPM MMR
PSHM MMR
STLM src, MMR
STM #lk, MMR
堆栈寻址
系统堆栈用来在中断和子程序期间自动存放程序计数器。它也能用来存放额外的数据项
或传递数据值。处理器使用一个16-bit的存储器映射寄存器—堆栈指针来对堆栈寻址,它总
是指向存放在堆栈中的最后一个元素。
共有四条使用堆栈寻址方式访问堆栈的指令:
PSHD 把一个数据存储器的值压入堆栈。
PSHM 把一个存储器映射寄存器的值压入堆栈。
POPD 把一个数据存储器的值弹出堆栈。
POPM 把一个存储器映射寄存器的值弹出堆栈。
---------------------------------------------------------------第五次课----------------------------------------
§3-2 特殊寻址方式说明
位倒序寻址
位倒序寻址提高了执行速度和在FFT算法的程序中使用存储器的效率。在这种寻址方式
中,AR0存放的整数N是FFT点数的一半。一个辅助寄存器指向一数据存放的物理单元。当使
用位倒序寻址把AR0加到辅助寄存器中时,地址以位倒序的方式产生,即进位是从左向右,
而不是从右向左。间接寻址中*Arn+0B/-0B表示位倒序寻址。
FFT中混序就是位倒序
循环寻址:
许多算法,如卷积,相关和FIR滤波等,都需要在存储器中实现一个循环缓冲器。在这
些算法中,一个循环缓冲器就是一个包含了最近的数据的滑动窗口。当新的数据来到时,缓
冲器就会覆盖最早的数据。循环缓冲器实现的关键是循环寻址的实现。‘C54x间接寻址中提
供了循环寻址的方式,以%表示。
循环寻址的有效地址计算
定义循环缓冲器大小寄存器(BK)来确定了循环缓冲器的大小。大小为R的循环缓冲
器必须从一个N-bit边界开始。循环缓冲器的有效基地址(EFB)就是用户选定的辅助寄存器
(ARx)的低N位置 0后所得到的值。
满足条件:
循环缓冲器的尾地址(EOB)是通过用BK的低N位代替ARx的低N位得到。循环缓冲器
的INDEX就是ARx的低N位,step就是加到辅助寄存器,或从辅助寄存器中减去的值。
RN2