www.pudn.com > TEST_RLS.rar > TEST_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自适应杂波相消完毕*******************************************/