
循环寻址是DSP三种数据寻址方式中的寄存器寻址来自的一种(另一种360百科为线性寻址)。其级业投帝候翻止一般使用通用寄存器A4~A7和B4~B7交木刘亮应似,在卷积、滤波运算中经常用到。
循环寻址在卷积、相关、FIR滤波算法中,要求在存储器中设置一个缓冲区作为滑动窗,保存最新一批数据。循环寻址过程中,不断有新的数据覆盖旧的数据,从而实现循环缓冲区寻址。
循环寻址通过设置状态寄存器ST2_55中相应的状态位(ARnLC或CDPLC)独立地将每个辅助寄存器(AR0-AR7)和系数数据指轻虽支浓针(CDP)配置运准学成线性寻址或循环寻址方式款斗倍给绿增双.当ARnLC或CDPLC=0时,线性寻址,当ARnLC或CDPLC矿纪态义双丝易=1时,循环寻址.循环缓冲的字节数由(BK03,BK47或B委顺KC)定义,这些寄存酸尼字围席省益协器与辅助寄存器和系数数据指针之间存在着对应关系.建立一个循环寻址方式的步骤为:(1)对使用的指针,将状态标片寄存器ST2_55中相应的状态位设置成循环模式.(2)用AMOV指令初们坏理北消先烧员城始化扩展寄存器(XARy 或 XCDP).例如,若将AR3作为循环指针,则对扩展辅助寄存器2进行初始化.根据DSP原理在移动通信中的应用P31。
- 中文名 循环寻址
- 外文名 ST2_55
- 原 理 状态寄存器
- 模式. ARnLC
简介
循环寻址通常是指定一个辅助寄存器ARx指向循环缓冲区;
循环缓冲区的有效基地址(EFB)就是用户指定的辅助寄存器(ARx)的低N位置0后所得到的值;
循环缓冲区的尾基地址(E来自OB)是通过用BK的低N代替ARx的低N位得到;
循环缓冲区的偏移量(index)就是ARx的低N位;
循环寻址的步长(step)就是加到辅助寄存器ARx或从辅助寄存器ARx中减去的值。
循环寻址的算法:
If 0 £偏移量+步长<BK;
偏移量=偏移量+步长;
Elseif 偏移量360百科+步长3BK;
偏移量=偏移量+步长-BK;
Elseif 偏移量+步长<0;
偏移量=偏移量+步长+BK;
若BK=0,则为不作修正的辅助寄存器间接寻址。
若BK医=0,则为不作修正的辅助寄存器间接寻址。
循环寻址操作过程
①首先要指定一个ARx方父走子频比采指向循环缓冲区,根据A虽响Rx的低N位作为循环缓冲阿妈脸于段区的偏移量进行规定的寻址操作。
②寻址完成后,再根据循环寻址算法修正偏移量,并返回ARx的低N位。
寄存器位寻址;直接寻址和间接寻址都可以用于寄存器位寻址,而绝对寻址方式不支持寄存器位寻址.只有寄存器位的"测试/置位/清零/取反"指令支持该寻重客址方式.
I/O空间寻址:纸兵兴跟粒解目绝对寻址,直接寻址和间接寻址都可以用于I/O空间外设寄存器的存取.1,I/O空间的绝对寻址:该模式将16位无符号常数指定为1个I/O地址,访问I/O空间的任何一个单元.在代数指令中,使用*po况工rt(#k16)操作数,在助记符指令中,使用port(#k16),操作数前不加*2,P道弦得粮什帝爱块DP直接寻址
算法
if 0 ≤ index+step <BK: index = index+step;
else if
inde护月祖x+step ≥ BK: 会民预同该研index = index+step- BK;
else
if index+step <0: index = index+step+ BK;
其中,index是ARx的低N位(缓冲区偏移地址)
编程举例
256点16阶FIR滤波器:
.sect "fir-prog"
STM #255, BRC Block Repeat Counter
Repeat 256 times RPTBD fir_filter_loop
STM #16, BK ;
FIR circu来自lar buffer size L束D *AR7+, A ;
l360百科oad the input value STL A, *AR4+% ;
replace oldest sample with ;
newest sample RPTZ A, #16
MAC *AR4+0%, *AR3+0%, A ;
filte劳议怕防府厚ring
STH A, *AR5+ ;
replace the oldest buffer value fir_filter_lo世财许局部鱼op