⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 test_rls.asm

📁 在ADI公司的TigerSharcDSP上实现RLS算法
💻 ASM
字号:
#include "defts201.h"
#define DIMENSION 80
#define STEP      40
#define HALF      20
#define clamda    1.010101
#define lamda     0.99
#define delta     0.01

.section data2a;
             .align 4;
             .var sig[];
         
.section data2b;
             .align 4;
             .var ref[];
             
.section data4a;
             .align 4;
             .var weight1[DIMENSION];
             .align 4;
             .var P_real[1600];
             
.section data4b;
             .align 4;
             .var P_imag[1600];
             .align 4;
             .var temp[DIMENSION];
             .align 4;
             .var K[DIMENSION];
             
.section program;
             j12=4;;
             k12=4;;
             
             k14=-8;;
             j14=-4;;
             
             k13=-2;;
             j13=-2;;
             
             k15=-4;;
             j15=12;;
             
             k16=-1;;
             j16=8;;
             
             k1=k31+weight1;;
             kl1=84;;
             kb1=k31+weight1;;
             
MAIN_START:
             xr1=0;;
             lc0=HALF;;
             
INITIALIZE_WEIGHT:
             .align_code 4;
             if nlc0e,jump INITIALIZE_WEIGHT(P); q[k1+=k12]=xr3:0;;
             
             k1=k31+weight1;;
             
             j8=j31+P_real; lc0=400;;
             k9=k31+P_imag; r0=0;r1=r0-r0;;
             r2=100.0; j9=j7-j7;;
             
INITIALIZE_P:
             q[k9+=4]=yxr1:0;;
             .align_code 4;
             if nlc0e, jump INITIALIZE_P(P); q[j8+=4]=yxr1:0;;
             
             lc0=STEP; j8=j31+P_real; k9=k31+P_imag;;
             
INITIALIZE_P1:
             [j8+j9]=xr2;;
             j9=j9+1;;
             
             .align_code 4;
             if nlc0e, jump INITIALIZE_P1(P); j8=j8+STEP;;
             
             j8=j31+P_real; k9=k31+P_imag;;
          
/*********************************************RLS自适应杂波相消*********************************************/
RLS_FILTER:
             lc1=15000;;
             
BEGIN_RLS_FILTER:
             lc0=HALF; yxr1:0= q[j4+=j12]; r21=r2-r2;;
             yxr5:4=cb q[k1+=k12]; r11=r3-r3;;
             r19=0;	r18=r2-r2; r20=r21*r21;;
              
FILTER_OUTPUT://output=ref*w' k1=j31+weight1  j4=j31+ref  j6=j31+sig j12=4
             fr8=r4*r0;    fr21=r21-r11;;
             fr9=r5*r1;;   
             fr11=r5*r0;   fr18=r18+r8;; 
             fr10=r4*r1;;                
             fr19=r19-r11; xr1:0=yr1:0;; 
             fr18=r18+r9;  yr1:0= l[j4+0];;
                           
             fr8=r4*r0;    fr19=r19+r10;;
             fr9=r5*r1;;                   
             fr10=r4*r1;   fr20=r20+r8;;
             fr11=r5*r0;;   
             fr21=r21+r10;  yxr1:0= q[j4+=j12];;            
              
             .align_code 4;
			 IF NLC0E,jump FILTER_OUTPUT(p);yxr5:4=cb q[k1+=k12];fr20=r20+r9;;//2
				
			 fr21=r21-r11;
			 xr17:16=yr19:18; xyr1:0=l[j6+=2];;    
			 xfr18=r16+r18;   xr23:22=yr21:20;;
			 xfr19=r17+r19;;     					
			 fr18=r0-r18;     j11=j31+temp;; //xr18=err_real;;xr19=err_imag
			 fr19=r1-r19;     j8=j31+P_real;;
			 l[j6+j13]=xr19:18;;
			 xyr3:2=l[j6+=2]; xfr20=r20+r22;;//结果:xr19:18=yr19:18//err->sig
			 yr19:18=xr19:18; xfr21=r21+r23;;   
				
			 fr20=r2-r20;       j4=j4-4;         lc0=STEP;;
			 fr21=r3-r21;       j4=j4-DIMENSION;;
			 l[j6+j13]=xr21:20; k9=k31+P_imag;;
			  
FILTER_TEMP://temp=P*U  j10=step/4   j4=j31+ref  j8=j31+P_real  k9=k31+P_imag
             j10=6;r28=r0-r0;yxr5:4=q[j4+=j12];;
             yxr0=l[j8+=2];  r9=r0-r0; r29=0;; 
             yxr1=l[k9+=2];  r11=0;;
             
FILTER_TEMP1:
             fr28=r28-r9;       fr8=r0*r4;;
             yxr2=l[j8+=2];     fr9=r1*r5;   fr29=r29+r11;;
             yxr7:6=q[j4+=j12]; fr10=r0*r5;  fr28=r28+r8;;
             yxr3=l[k9+=2];     fr11=r1*r4;;
             fr8=r2*r6;         fr29=r29+r10;;
                
             fr10=r2*r7;      fr28=r28-r9;   yxr0=l[j8+=2];;
             fr9=r3*r7;       fr29=r29+r11;  yxr5:4=q[j4+=j12];;
             fr11=r3*r6;      fr28=r28+r8;   j10=j10-1;;       
                                                   
             .align_code 4;
             if njeq, jump FILTER_TEMP1(p); fr29=r29+r10;yxr1=l[k9+=2];;
             fr28=r28-r9;;
             fr29=r29+r11;;
             xr27:26=yr29:28;;//2
             xfr29=r27+r29;     j4=j4-j12;;
             xfr28=r26+r28;     j8=j8-2;;                            
             j4=j4-DIMENSION;   k9=k9-2;; 
             l[j11+=2]=xr29:28;;
                 
             .align_code 4;
             if nlc0e,jump FILTER_TEMP(p);; 
                
             lc0=6;  j11=j11-DIMENSION; r28=r3-r3;;                              
             yxr5:4=q[j4+=j12];         r9=r2-r2;;
             yxr1:0=q[j11+=j12];        r10=r28+r28,r29=r28-r28;;
             
FILTER_U_TEMP://u'*temp
             yxr3:2=q[j11+=j12]; fr8=r0*r4;    fr28=r28+r9;;
             yxr7:6=q[j4+=j12];  fr9=r1*r5;    fr29=r29-r10;;
             fr10=r0*r5;         fr28=r28+r8;;
             fr12=r1*r4;;                        
             fr8=r2*r6;          fr29=r29-r10;; 
             fr10=r2*r7;         fr28=r28+r9;  yxr1:0=q[j11+=j12];;  
             fr11=r3*r6;         fr29=r29+r12; yxr5:4=q[j4+=j12];;                                   
             fr9=r3*r7;          fr28=r28+r8;;         
                                                             
             .align_code 4;
             if nlc0e,jump FILTER_U_TEMP(p);fr29=r29+r11;;
                
             fr29=r29-r10;j11=j11-j12;; //j11现在指向temp的末地址   
             fr28=r28+r9; j4=j4-j12;;
             xr27:26=yr29:28;;
             xfr29=r27+r29; k3=k31+K;;               
             xfr28=r26+r28;   r27=lamda;;  
                                               
             xfr2=r29*r29;    xfr28=r28+r27;;
             xfr0=r28*r28;    r1=1.0;; 
              
             xfr14=r0+r2;; 
                                
             xfr13=recips r14; xr11=2.0;;
                    
             xfr14=r14*r13;;
             xfr1=r13*r1;  xfr13=r11-r14;;
                         
             xfr14=r14*r13;;
             xfr1=r13*r1;  xfr13=r11-r14;;
                    
             xfr14=r13*r14;;
             xfr1=r13*r1;  xfr13=r11-r14;; 
                    
             xfr14=r13*r1;  r0=0;         j8=j31+P_real;;
             xfr29=r14*r29; lc0=STEP;     j4=j4-DIMENSION;   r26=r1-r1;;
		     xfr28=r14*r28; xfr29=r0-r29; k9=k31+P_imag;;
		     
FILTER_U_P:
             yxr5:4=q[j4+=j12]; r27=r25-r25;; 
             j10=HALF;  r11=r0-r0; r9=r26*r26;;   
                
FILTER_U_P1://u'*P              
             xr0=[j8+=STEP];  xr1=[k9+=STEP];;              
             yr0=[j8+=STEP];  yr1=[k9+=STEP];; 
               
             fr8=r0*r4;   fr26=r26+r9;;              
             fr9=r1*r5;   fr27=r27+r11;; 
                
             fr10=r0*r5;  fr26=r26+r8;;
             fr11=r1*r4;  j10=j10-1;;
                   
             .align_code 4;
             if njeq,jump FILTER_U_P1(p);fr27=r27-r10; yxr5:4=q[j4+=j12];;
             fr26=r26+r9;;
             fr27=r27+r11;;
             xr25:24=yr27:26;j4=j4-DIMENSION;;           
             xfr26=r26+r24;  j8=j8-1599;;
             xfr27=r27+r25;  k9=k9-1599;j4=j4-j12;;
                                
             l[k3+=2]=xr27:26;;                           
             .align_code 4;
             if nlc0e,jump FILTER_U_P(p);r26=r1-r1;;
             
             lc0=HALF;       j11=j31+temp;;                
             k3=k31+K;       yr29:28=xr29:28;;               
             r30=clamda;     yxr1:0=q[j11+=j12];;  
             j8=j8-STEP;     k9=k9-STEP;; 
             
FILTER_K://K=temp/(lamda+u'*temp)
             fr2=r0*r28;   j10=HALF;;
             fr3=r1*r29;; 
             fr4=r0*r29;;    
             fr5=r1*r28;   fr6=r2-r3;;
                                 
             fr8=r6*r18;   fr7=r5+r4;;
             fr9=r7*r19;   yxr3:2=q[k3+=4];;     
             fr10=r6*r19;  yxr15:14=q[k1+0];;
             fr11=r7*r18;  fr12=r8+r9;;
             fr13=r11-r10;;
             fr12=r12+r14;; 
             fr13=r13+r15;;
             cb q[k1+=k12]=yxr13:12;; //w=w+K*conj(err(k+L-1));
                           
FILTER_P://P=(P-K*u'*P)/lamda                
             fr4=r6*r2;   j3=j8+STEP;  k5=k9+STEP;;
             fr5=r7*r3;   xr1:0=yr3:2; xr21:20=l[j8+0];; 
             fr9=r7*r2;   yr1:0=xr3:2; yr21:20=l[j3+0];;
             fr8=r6*r3;   fr16=r4-r5;  xr23:22=l[k9+0];; 
             fr4=r6*r0;   fr17=r8+r9;  yr23:22=l[k5+0];; 
             fr5=r7*r1;                xfr12=r20-r16;;
             fr9=r7*r0;                yfr13=r21-r16;;
             fr8=r6*r1;   fr10=r4-r5;;
             xfr14=r22-r17;;
             fr11=r8+r9;;
             yfr12=r20-r10;;
             xfr13=r21-r10;;
             yfr14=r22-r11;     fr12=r12*r30;;
             xfr15=r23-r11;     fr13=r13*r30;;
             yfr15=r23-r17;     fr14=r14*r30;  l[j8+=2]=xr13:12;;
             yxr3:2=q[k3+=k12]; fr15=r15*r30;  l[j3+=2]=yr13:12;;
             j10=j10-1;                        l[k9+=2]=xr15:14;;
                                                                       
             .align_code 4;
             if njeq,jump FILTER_P(p); l[k5+=2]=yr15:14;;
               
             j8=j8+STEP;  k9=k9+STEP;;
                     
             .align_code 4;
             if nlc0e, jump FILTER_K(p); k3=k3-84;yxr1:0=q[j11+=j12];; 
                
             .align_code 4;
			 if nlc1e,jump BEGIN_RLS_FILTER(p);j4=j4+j12; cb q[k1+=k12]=yxr1:0;;
			 
			 SQCTLCL=0xFFFFDFFF;;
			 .align_code 4;
			 cjmp(abs)(np);;
/*********************************************RLS自适应杂波相消完毕*******************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -