第三章:DSP软件体系_寻址方式

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

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 把一个存储器映射寄存器的值弹出堆栈。
DSP技术及其应用 22
TMS320C54X-DSP
DSP技术及其应用 19
TMS320C54X-DSP
6. 存储器映射寄存器寻址
存储器映射寄存器寻址用来修改存储器映射寄存器而 不影响当前数据页指针(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
DSP技术及其应用 23
TMS320C54X-DSP
8点的FFT蝶型结运算
x(0) W0 x(4) W0 x(2) W0 W2 W0 W1 W0 W2 W0 x(3) W0 W
2
0000
01) X(2) X(3) X(4) X(5) X(6) X(7)
第三章:DSP软件体系
„C54x寻址方式 ‘C54x特殊寻址 方式说明 ‘C54x指令集 ‘C54x特殊指令 使用说明
TMS320C54X-DSP
§3-1 TMS320C54x的寻址方式
立即数寻址: 指令中嵌有一个固定的数 绝对地址寻址: 指令中有一个固定的地址 累加器寻址: 按累加器内的地址去访问程序存储器中 的一 个单元 直接寻址: 指令中的7bits是一个数据页内的偏移地址,而 所在的数据页由数据页指针DP或SP决定。该偏移加上DP和 SP的值决定了在数据存储器中的实际地址。 间接寻址: 按照辅助寄存器中的地址访问存储器。 存储器映射寄存器寻址: 修改存储器映射寄存器中的值, 而不影响当前DP或SP的值。 堆栈寻址: 把数据压入和弹出系统堆栈。
DSP技术及其应用 27
TMS320C54X-DSP
循环寻址的有效地址计算
定义循环缓冲器大小寄存器(BK)来确定了循环缓 冲器的大小。大小为R的循环缓冲器必须从一个N-bit边 界开始。循环缓冲器的有效基地址(EFB)就是用户选 定的辅助寄存器(ARx)的低N位置 0后所得到的值。 满足条件: 2 N R 循环缓冲器的尾地址(EOB)是通过用BK的低N位代替 ARx的低N位得到。循环缓冲器的INDEX就是ARx的低 N位,step就是加到辅助寄存器,或从辅助寄存器中减 去的值。循环寻址的算法如下:
DSP技术及其应用 2
TMS320C54X-DSP
1 . 立即数寻址
在立即数寻址中,指令里包括了立即操作数。在 一条指令中可对两种立即数编码。一种是短立即数(3、 5、8或9bits),另一种是16bits的长立即数。立即数可 包含在单字或双字指令中。3-,5-,8-或9-bit值在单字 指令中,16-bit值在双字指令中。
i 0
3
直接寻址编程:
.mmregs .bss x, 4, 1 .set 012h .word 3211h .word fe11h .word ff03h .sect “program” LD #0, A LD #X, DP LD #a0, T MAC x,A LD #a1,T
a0 a1 a2 a3
DSP技术及其应用 4
TMS320C54X-DSP
2. 直接寻址
在直接寻址 中,指令代码包 含了数据存储器 地址的低七位。 这7-bit dma作为 偏移地址与数据 页指针(DP)或 堆栈指针(SP) 相结合共同形成 16-bit的数据存 储器实际地址。 如右图所示。
DSP技术及其应用 5
TMS320C54X-DSP
MAC *AR2+,A LD *AR1+,T
MAC *AR2+,A
LD *AR1,T MAC *AR2,A …..
DSP技术及其应用 15
TMS320C54X-DSP
双操作数寻址方式
双数据存储器操作数间接寻址类型
*Arx: ARx是数据存储器地址 *ARx-/ *ARx+: 访问后,ARx中的地址减1/加1 *ARx+0%: 访问后,AR0以循环寻址的方式加 到ARx中。 例如: MPY FIRS *AR2,*AR3,A *AR2,*AR3,coef
ADD sample, B
TMS320C54X-DSP
3. 间接寻址
1. 在间接寻址中,64K数据空间任意单元都可通过一个辅助 寄存器中的16-bit地址进行访问。 2. ‘C54x有8个16-bit辅助寄存器(AR0-AR7)。两个辅助 寄存器算术单元(ARAU0和ARAU1), 3. 根据辅助寄存器的内容进行操作,完成无符号的16-bit算 术运算。 4. 间接寻址很灵活,不仅能从存储器中读或写一个单16-bit 数据操作数,而且能在一条指令中访问两个数据存储器单 元(即从两个独立的存储器单元读数据,或读一个存储器 单元同时写另一个存储器单元,或读写两个连续的存储器 单元)。 单操作数寻址
DSP技术及其应用 18
TMS320C54X-DSP
5. 累加器寻址
累加器寻址是用累加器中的数作为一个地址。这种寻址 方式可用来对存放数据的程序存储器寻址。共有两条指令 可以采用累加器寻址: READA Smem WRITA Smem READA是把累加器A所确定的程序存储器单元中的一个 字,传送到单数据存储器(Smem)操作数所确定的数据存 储器单元中。WRITA是把Smem操作数所确定的数据单元 中的一个字,传送到累加器A确定的程序存储器单元中去。
MAC X+1,A
LD #a2,T MAC X+2,A …..
DSP技术及其应用 8
CPL=1:dma加上SP基地址形成数据存储器地址。(st1中)
TMS320C54X-DSP
以SP为基准的直接寻址
使用以SP为基址的直接寻址:
AND
LD
sample, A
sample, A ;……..
DSP技术及其应用 9
CPL=0:dma与9-bit的DP相结合形成数据存储器地址。
以DP为基准的直接寻址
0 1
DP 9-bit
2
510 511
9-bit的DP指向数据存储空间 的512个数据页中的一页
DSP技术及其应用 6
TMS320C54X-DSP
编程举例:
DSP技术及其应用 7
TMS320C54X-DSP
编程举例: y0 ai xi a0 x0 a1 x1 a2 x2 a3 x3
DSP技术及其应用 13
TMS320C54X-DSP
编程举例:
DSP技术及其应用 14
TMS320C54X-DSP
编程举例: y0 ai xi a0 x0 a1 x1 a2 x2 a3 x3
i 0
3
间接寻址编程:
.mmregs
a
.bss x, 4, 1 .word 1, 2, 3, 4 .sect “program” STM #a, AR1 STM #x, AR2 LD #0, A LD *AR1+,T MAC *AR2+,A LD *AR1+,T
DSP技术及其应用 10
TMS320C54X-DSP
单操作数间接寻址方框图
DSP技术及其应用 11
单操作数间接寻址类型:
TMS320C54X-DSP

*ARx:
– ARx包含了数据存储器地址


*ARx-/ *ARx+ :
– 访问后, ARx中的地址减1/加1
*+ARx:
– 在寻址之前,ARx中的地址加1
程序存储器地址(pmad)寻址:
FIRS Xmem, Ymem, pmad MACP Smem, pmad, src MACD Smem, pmad, src MVPD pmad, Smem
PORTW Smem, PA
端口地址(PA)寻址
PORTR PA, Smem
*(lk)寻址适用于支持单数据存储器操作数的指令
DSP技术及其应用 29
TMS320C54X-DSP
如何确定循环缓冲的起始地址?
R(BK)=32 ---> 二进制 100000 ---> N=6
DSP技术及其应用 3
TMS320C54X-DSP
短立即数RPT 长立即数RPT
立即数寻址的其他例子:
LD #0,ARP ;ARP=2(#k3) LD #3,ASM ;ASM=3(#k5) LD #50,DP ;DP=50(#k9) LD #1234,A ;A=1234(#k) STM #FFFFh,IMR ;IMR=FFFFh(#lk)
DSP技术及其应用 20
TMS320C54X-DSP
DSP技术及其应用 21
TMS320C54X-DSP
7. 堆栈寻址
系统堆栈用来在中断和子程序期间自动存放程序计数器。 它也能用来存放额外的数据项或传递数据值。处理器使用一 个16-bit的存储器映射寄存器—堆栈指针来对堆栈寻址,它 总是指向存放在堆栈中的最后一个元素。
x(6) x(1) x(5)
0101
0011 0111
W3
x(7)
DSP技术及其应用 24
TMS320C54X-DSP
FFT中混序就是位倒序
FFT运算时输出/输入序列中必有其一要混序。
DSP技术及其应用 25
TMS320C54X-DSP
位倒序寻址的执行
设FFT长度N=16,则AR0赋值为8,位倒序 方式读入数据情况如下:
DSP技术及其应用 16
TMS320C54X-DSP
双数据存储器操作数间接寻址方框图
DSP技术及其应用 17
TMS320C54X-DSP
4. 绝对地址寻址
有个别指令可以使用16bits的绝对地址寻址:
数据存储器地址(dmad)寻址:
MVDK Smem, dmad MVKD dmad, Smem MVDM dmad, MMR MVMD pmad, Smem
DSP技术及其应用 28
TMS320C54X-DSP
if 0≤ index+step < BK: index = index + step else if index + step ≥ BK: index = index + step - BK else if index + step< 0 index = index + step + BK
§3-2 特殊寻址方式说明
本小节重点介绍两种广泛应用的特殊寻址方 式—循环寻址和位倒序寻址。 位倒序寻址
位倒序寻址提高了执行速度和在FFT算法的程序中使 用存储器的效率。在这种寻址方式中,AR0存放的整数N 是FFT点数的一半。一个辅助寄存器指向一数据存放的物 理单元。当使用位倒序寻址把AR0加到辅助寄存器中时, 地址以位倒序的方式产生,即进位是从左向右,而不是从 右向左。间接寻址中*Arn+0B/-0B表示位倒序寻址。
相关文档
最新文档