?? xcorrs_two_codes_one_frame.asm
字號:
#include "SS_SYN.h"
#ifdef __ADSPTS201__
#include "defts201.h"
#endif
#define DEBUG_COMP_WITH_TH
.section program;
.global _xcorrs_two_codes_one_frame;
.extern Pointer0;
.extern q_time_code;
.extern xcorrs_result_X;
.extern xcorrs_result_Y;
.align_code 4;
_xcorrs_two_codes_one_frame :
[j27+=4]= cjmp; [k27+=4]= yr0;;
[j27+=4]= lc0; [k27+=4]= yr0;;
[j27+=4]= lc1; [k27+=4]= yr0;;
q[j27+=4]= xr3:0; q[k27+=4]= yr3:0;;
q[j27+=4]= xr7:4; q[k27+=4]= yr7:4;;
q[j27+=4]= j3:0; q[k27+=4]= k3:0;;
//r31= DEC r31;;//1:
r30=XCORR_TH;;//門限
j0=[ j31+Pointer0 ];;//7:指向天線數據Sample0 ,此處不要加Path_window_length;
k4=q_time_code;;//1:第一個量化碼字=>X路
j8=j0;k5=q_time_code+20;;//1:第二個量化碼字=>Y路,save j0 to j8
j6=xcorrs_result_X;;//1:
k6=xcorrs_result_Y;;//1:
lc0=3570;;//1:幀長/8=28560/8=3570次循環.
.align_code 4;
_xcorrs_outer_loop:
r7:4=q[j0+=4]; r3:0=q[k4+=4];;//data,code
r15:12=q[j0+=4]; r11:8=q[k5+=4];;//data,code
xTHR3:0=r3:0;yTHR3:0=r11:8;j7=j0;k7=k4-4;;//j7,k7: save code pointer for next time.
//first 4
.align_code 4;
tr15:0=xcorrs(r7:4,thr3:0)(cut -7)(ext)(clr); r11:8=q[j0+=4];r21:20=l[k4+=2];;
tr15:0=xcorrs(r15:12,thr3:0)(cut -3)(ext); r19:16=q[j0+=4];r23:22=l[k5+=2];;
tr15:0=xcorrs(r11:8,thr3:0)(ext); r7:4=q[j0+=4];lc1=7;;
tr15:0=xcorrs(r19:16,thr3:0)(ext);r15:12=q[j0+=4];;
//mid 56
.align_code 4;
_xcorrs_main_loop:
tr15:0=xcorrs(r7:4, thr3:0)(ext);r11:8=q[j0+=4];;
tr15:0=xcorrs(r15:12,thr3:0)(ext);r19:16=q[j0+=4];;
tr15:0=xcorrs(r11:8, thr3:0)(ext);r7:4=q[j0+=4];;
tr15:0=xcorrs(r19:16,thr3:0)(ext);r15:12=q[j0+=4];xTHR3:2=r21:20;yTHR3:2=r23:22;;
tr15:0=xcorrs(r7:4, thr3:0)(ext);r11:8=q[j0+=4];r21:20=l[k4+=2];;
tr15:0=xcorrs(r15:12,thr3:0)(ext);r19:16=q[j0+=4];r23:22=l[k5+=2];;
tr15:0=xcorrs(r11:8, thr3:0)(ext);r7:4=q[j0+=4];;
.align_code 4;
if NLC1E, jump _xcorrs_main_loop;
tr15:0=xcorrs(r19:16,thr3:0)(ext);r15:12=q[j0+=4];;
//last 6:
tr15:0=xcorrs(r7:4, thr3:0)(ext);r11:8=q[j0+=4];;
tr15:0=xcorrs(r15:12,thr3:0)(ext);r19:16=q[j0+=4];;
tr15:0=xcorrs(r11:8, thr3:0)(ext);r7:4=q[j0+=4];;
tr15:0=xcorrs(r19:16,thr3:0)(ext);r15:12=q[j0+=4];xTHR3:2=r21:20;yTHR3:2=r23:22;;
xytr15:0=xcorrs(r7:4,thr3:0)(cut 7)(ext);r7:4=q[j0+=4];k4=k7;;//5:write back pointer for next time
xytr15:0=xcorrs(r15:12,thr3:0)(cut 3)(ext);r15:12=q[j0+=4];;
#ifdef DEBUG_COMP_WITH_TH
//do not save, compare with th if sync, jump _SYNC;;
j0=j7;k5=k4+20; r3:0=tr3:0;;
//8個相位點,每個都和峰值比較,如果比峰值大的,就替換成為新的峰值.
//假設xr30,j10存放的是x路的最大相關值和其所在位置,yr30,j11是y路的;
//.code column1................................|| ......code column2..........
r4=r0*r0;; //r1:0是第一個結果,r0=I,r1=Q;
r5=r1*r1; r11:8=tr7:4;; // Q*Q+I*I, r30是最大值.
r4=r4+r5; r6=r2*r2;;
comp(r4,r30); r7=r3*r3(NF);;
if nxale;do, xr30=xr4;do,j10=j0-8;;//最大值r30,最大值對應的位置r31應該是j0-8,
if nyale;do, yr30=yr4;do,j11=j0-8;;
//r3:2是第2個結果,r2=I,r3=Q;
[j6+=1]=xr4;[k6+=1]=yr4; r3:0=tr11:8;;
r4=r8*r8; r6=r6+r7;;
r5=r9*r9(NF); comp(r6,r30);;
if nxale;do, xr30=xr6;do,j10=j0-7;;
if nyale;do, yr30=yr6;do,j11=j0-7;;
r4=r4+r5;[j6+=1]=xr6;[k6+=1]=yr6; r6=r10*r10;;
comp(r4,r30); r7=r11*r11(NF);;
if nxale;do, xr30=xr4;do,j10=j0-6;;
if nyale;do, yr30=yr4;do,j11=j0-6;;
r11:8=tr15:12;;
r4=r0*r0;[j6+=1]=xr4;[k6+=1]=yr4; r6=r6+r7;;
r5=r1*r1(NF); comp(r6,r30);;
if nxale;do, xr30=xr6;do,j10=j0-5;;
if nyale;do, yr30=yr6;do,j11=j0-5;;
r4=r4+r5;[j6+=1]=xr6;[k6+=1]=yr6; r6=r2*r2;;
comp(r4,r30); r7=r3*r3(NF);;
if nxale;do, xr30=xr4;do,j10=j0-4;;
if nyale;do, yr30=yr4;do,j11=j0-4;;
r4=r8*r8;[j6+=1]=xr4;[k6+=1]=yr4; r6=r6+r7;;
r5=r9*r9(NF); comp(r6,r30);;
if nxale;do, xr30=xr6;do,j10=j0-3;;
if nyale;do, yr30=yr6;do,j11=j0-3;;
r4=r4+r5;[j6+=1]=xr6;[k6+=1]=yr6; r6=r10*r10;;
comp(r4,r30); r7=r11*r11(NF);;
if nxale;do, xr30=xr4;do,j10=j0-2;;
if nyale;do, yr30=yr4;do,j11=j0-2;;
[j6+=1]=xr4;[k6+=1]=yr4; r6=r6+r7;;
comp(r6,r30);;
if nxale;do, xr30=xr6;do,j10=j0-1;;
if nyale;do, yr30=yr6;do,j11=j0-1;;
[j6+=1]=xr6;[k6+=1]=yr6;;
//outer_loop:
.align_code 4; if nlc0e,jump _xcorrs_outer_loop;;
#endif
j27=j27-4 ; k27=k27-4 ;;
j3:0=q[j27+=-4] ; k3:0=q[k27+=-4] ;;
xr7:4=q[j27+=-4] ; yr7:4=q[k27+=-4] ;;
xr3:0=q[j27+=-4] ; yr3:0=q[k27+=-4] ;;
lc1= [j27+=-4] ; yr0= [k27+=-4] ;;
lc0= [j27+=-4] ; yr0= [k27+=-4] ;;
cjmp= [j27+= 0] ; yr0= [k27+= 0] ;;
.align_code 4;
cjmp(abs);;
.align_code 4;
_xcorrs_two_codes_one_frame_End :
nop;;
nop;;
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -