DSP寻址方式的研究Word文件下载.docx
- 文档编号:20940890
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:9
- 大小:21.34KB
DSP寻址方式的研究Word文件下载.docx
《DSP寻址方式的研究Word文件下载.docx》由会员分享,可在线阅读,更多相关《DSP寻址方式的研究Word文件下载.docx(9页珍藏版)》请在冰豆网上搜索。
2.3端口寻址3
3累加器寻址4
4直接寻址5
5间接寻址5
5.1单操作数寻址6
5.2循环寻址6
5.3位倒序寻址8
5.4双数据存储器操作数寻址.............................9
6存储器映射寄存器寻址....................................9
7堆栈寻址...............................................10
8几种寻址方式的特点.....................................11
9结束语................................................11
10参考文献
TMS320C54x系列DSP的存储空间包括程序存储空间、数据存储空间和I/O空间。
每个空间都有64K字的大小。
因此,如果采用直接的寻址方式则需16位的地址。
为了节省程序存储空间和提高程序的运行速度,经常采用间接寻址等方法以便使指令字节数减少。
1立即数寻址
在立即寻址方式中,指令里包含了立即操作数。
立即寻址方式中的立即数有两种数值形式,1、5、8、9位短立即数和16位的长立即数,它们在指令中分别编码为单字指令和双字指令。
例如:
LD#0AH,ASM;
5-bit(EDOA)
RPT#99H;
8-bit(EC99)
LD#020H,DP;
9-bit(EA20)
LD#0FE00H,A;
16-bit(F020FE00)
需要注意的是,立即数前面加需“#”以区别于地址表示方法,不得遗漏。
例如,LD#0FE00H,A,表示将立即数FE00H送入累加器A,遗漏#,则变成把地址为0FE00H单元的内容送入累加器A(1000FE00)。
2绝对地址寻址
绝对寻址方式的指令中包含有所寻操作数的16位单元地址。
由于寻址16位绝对地址,故绝对寻址指令长度至少为2个字。
有四种绝对寻址指令:
2.1数据存储器地址(dmad)寻址:
MVDKSmem,dmadMVDMdmad,MMR
MVKDdmad,SmemMVMDMMR,dmad
2.2程序存储器地址(pmad)寻址:
程序存储器寻址由程序地址产生逻辑(PAGEN)完成。
预取指阶段,PAGEN通过程序计数指针PC将指令代码、参数表等所在的程序存储器地址放在PAB上,进而从程序存储器相应的位置取出指令代码。
如果程序顺序执行,即程序地址连续,PC值将自动增加,指向下一条指令的地址;
如果程序执行过程中有跳转、返回、中断或循环操作,程序地址将不连续,这时PC值就要根据具体情况相应改变了。
程序计数指针PC是一个16位的计数器,PC中所加载的16位程序地址与DSP执行的操作有关。
FIRSXmem,Ymem,pmadMVDPSmem,pmad
MACPSmem,pmad,srcMVPDpmad,Smem
2.3I/O端口地址(PA)寻址:
PORTRPA,SmemPORTWSmem,PA
长立即数*(lk)寻址:
LD*(BUFFER),A
MVKDDATA,*AR1;
数据存储器寻址
MVPDTABLE,*AR2;
程序存储器寻址
PORTR0F2F0H,*AR5;
端口寻址
第一条指令表示将数据存储器中以DATA符号为地址单元中的数据传送到由辅助寄存器ARl所指向的数据存储单元中去。
DATA代表数据存储单元的地址dmad。
第二条指令表示将程序存储器中以TABLE符号为地址单元中的数据传送到由辅助寄存器AR2所指向的数据存储单元中去。
TABLE代表程序存储单元的地址pmad。
第三条指令表示将地址为0F2F0H的端口中的数据传送到由辅助寄存器AR5所指向的数据存储单元中去。
3累加器寻址
累加器寻址是利用累加器A的低16位(AL内容)作为地址对程序存储器中的数据进行访问,这种寻址方式常用来寻址存放数据的程序存储空间。
只有两条指令可用于累加器寻址方式。
READASmem
WRITASmem
第一条指令意为将累加器A(AL)的内容作为地址寻找程序存储器中的数据,传送到Smem指定的数据存储单元中。
第二条指令意为将Smem指定的数据存储单元中的数据(1个字),写到累加器A(AL)指定地址的程序存储器中去。
4.直接寻址
直接寻址指令中包含有数据存储器地址的低7位(dma)。
以dma为偏移地址,与基地址(数据页指针DP或堆栈指针SP)共同构成
16位数据存储器的物理地址。
Ø
数据指针(DP),当ST1中的CPL位=0
堆栈指针(SP),当ST1中的CPL位=1
CPL=0,选择数据页指针DP,用DP中的9位作为高位与指令中指定的7位作为低位,共同构成16位数据存储单元的地址。
CPL=1,选择堆栈指针SP,用SP的值与指令中指定的7位正偏移量
相加,构成16位数据存储单元的地址。
利用这种寻址方式,可以在不改变数据页指针DP和堆栈指针SP内容的情况下,随机地寻址128个存储单元中的任何一个单元。
直接寻址的优点是寻址速度快且为单字指令。
5.间接寻址
间接寻址根据8个辅助寄存器AR0—AR7中定义的任一寄存器给出的16位地址寻址。
每一个寄存器都可以用来寻址64K字数数据存储空间中的任何一个单元。
间接寻址很灵活,不仅能从存储器中读或写一个单16-bit数据操作数,而且能在一条指令中访问两个数据存储器单元(即从两个独立的存储器单元读数据,或读一个存储器单元同时写另一个存储器单元,或读写两个连续的存储器单元)。
VC5402有两个辅助寄存器算术运算单元ARAU0和ARAU1,它们与8个辅肋辅助寄存器一起,可以进行无符号数算术运算,实现16种单操作数间接寻址方式
5.1单操作数寻址
间接寻址时:
间址寄存器前加*号
“+”号在前,修改生成新值后再寻址
“+”号在后,寻址后再修改生成新值
有0符号,与AR0有关
有B符号,位倒序寻址
有%符号,循环寻址
5.2循环寻址
在卷积、相关、FIR滤波算法中,要求在存储器中设置一个缓冲区作为滑动窗,保存最新一批数据。
循环寻址过程中,不断有新的数据覆盖旧的数据,从而实现循环缓冲区寻址。
循环缓冲区长度BK决定缓冲区的大小,循环寻址时首先应将缓冲区的长度值R加载至循环缓冲区长度寄存器BK。
STM#lk,BK;
设置循环缓冲区长度
循环缓冲区从N位的地址边界(N位0)开始,R<
2N。
若R=40,则N=6,开始地址为:
xxxxxxxxxx000000。
循环寻址时用一个ARx指向缓冲区
循环寻址算法:
if0≤index+step<
BK:
index=index+step;
elseif
index+step≥BK:
index=index+step-BK;
else
ifindex+step<
0:
index=index+step+BK;
其中,index是ARx的低N位(缓冲区偏移地址)。
循环寻址
编程举例:
256点16阶FIR滤波器
.sect“fir-prog”
STM#255,BRC;
BlockRepeatCounter
;
Repeat256times
RPTBDfir_filter_loop
STM#16,BK;
FIRcircularbuffersize
LD*AR7+,A;
loadtheinputvalue
STLA,*AR4+%;
replaceoldestsamplewith
;
newestsample
RPTZA,#16
MAC*AR4+0%,*AR3+0%,A;
filtering
STHA,*AR5+;
replacetheoldestbuffervalue
fir_filter_loop
5.3位倒序寻址
倒序及其进位(有B符号)
位倒序表示:
1010,0101;
0011,1100
位倒序进位:
进位不是加到左边一位,而是加到右边的那位。
进位加到左边(正序)进位加到右边(倒序)
11001100
+1000+1000
101000010
16点蝶形FFT运算中,将FFT长度的一半(8)存放AR0中,如果AR2指向X(0)首址2000H,则执行下面2条程序后将以倒序地址:
2000H,2008H,2004H,200CH,2002H,…,2007H,200FH向PA口输出。
RPT#15
PORTW*AR2+0B,PA
5.4双操作数(Dual-OperandMemory)寻址
这种寻址方式用于同时完成两次读操作或完成一次读操作和一次并行存储操作的指令。
这些指令只用于间接寻址方式,而且指令长度均为一个字长。
这种寻址方式对于加减运算、乘法运算、乘法累加运算以及对应于DSP的其他一些特殊数学运算是相当方便的。
我们分别用Xmem和Ymem来代表这两个数据存储器操作数。
※Xmem是一个读操作数,但存储指令可把Xmem变为写操作数;
※Ymem在两个读操作中是读操作数,在一读一写中是写操作数。
如果源操作数和目的操作数指向相同的地址,执行的顺序是先从该地址读取数据,后写入数据。
如果一个双操作数指令通过不同的寻址模式指向同一个辅助寄存器,那么以Xmod域的寻址模式为准。
6.存储器映像寄存器寻址
存储器映像寄存器寻址主要用于不改变DP、SP的情况下,访问MMR中的内容。
因此,这种寻址方式对MMR执行写操作开销小。
存储器映像寄存器MMR寻址有两种方法
(1)采用直接寻址方式,高9位数据存储器地址置0(无论DP、SP为何值),利用指令中的低7位地址直接访问MMR。
(2)采用间接寻址方式,高9位数据存储器地址置0(无论DP、SP为何值),按照当前辅助寄存器的低7位地址访问MMR。
此种方式访问MMR,寻址操作完成后,辅助寄存器的高9位被强迫置成0。
存储器映射寄存器寻址用来访问存储器映射寄存器而不影响当前数据页指针(DP)或堆栈指针(SP)的值。
直接寻址中利用操作数中的低7位访问MMR;
间接寻址中利用ARx访问MMR时ARx高9位被置0。
只有8条指令能使用存储器映射寄存器寻址:
LDMMMR,dst
MVDMdmad,MMR
MVMDMMR,dmad
MVMMMMRx,MMRy
POPMMMR
PSHMMMR
STLMsrc,MMR
STM#lk,MMR
7.堆栈寻址
C54x的堆栈是从高地址向低地址方向生长的,并用16位堆栈指针SP管理堆栈。
SP总是指向存放在堆栈中的最后一个元素,即栈顶。
堆栈寻址就是利用SP完成寻址操作。
共有4条堆栈寻址指令:
PSHD;
数据存储器中的一个数压栈
PSHM;
MMR中的数压栈
POPD;
弹出一个数至数据存储单元
POPM;
弹出一个数至MMR
几种寻址方式的特点
(1)
立即寻址的特点是操作数在指令中,运行速度快,但需要较多的程序存储空间,而且数值不能改变,主要用于表示常数和初始化。
绝对寻址可以访问任何的数据空间,但速度慢,且要求较多
的存储空间,可用于对速度没有苛刻要求的场合。
累加器寻址是利用累加器中的数值寻址程序存储器,故主要
用于程序空间和数据空间的数据传送。
间接寻址是通过辅助寄存器和辅助寄存器指针寻址数据存储
空间任一单元的,较为灵活,可自动实现增量、减量、变址
寻址、循环寻址等操作。
直接寻址指令中包含有数据存储器的低7位地址,与DP或SP内容结合形成l6位地址,可以实现单指令周期寻址128个单元。
速度较快,利用并行流水线操作,用于时间要求较高的场合。
MMR是基地址为零(不考虑SP、DP、CPL)的直接寻
址方式,寻址速度较快,可以直接利用存储器映像
寄存器MMR快速访问数据存储器的0页资源。
结束语:
dsp寻址方式种类很多,我们必须熟悉掌握每种寻址方式的特点和原理,才能对整个寻址流程熟知,才能更好的为学习DSP打下基础。
由于篇幅限制,对寻址方式的介绍不是特别详尽。
读者课参考文献
参考文献:
(1)张雄伟,陈亮,徐光辉 DSP芯片的原理及开发应用【3】, 第三版,北京,电子工业出版社,2003
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- DSP 寻址 方式 研究