📄 gaeccnla.s55
字号:
*-------------------------------------------------------------------------*
* *
* THIS IS AN UNPUBLISHED WORK CONTAINING CONFIDENTIAL AND PROPRIETARY *
* INFORMATION. IF PUBLICATION OCCURS, THE FOLLOWING NOTICE APPLIES: *
* "COPYRIGHT 2002 MIKET DSP SOLUTIONS, ALL RIGHTS RESERVED" *
* *
*-------------------------------------------------------------------------*/
.mmregs
.cpl_on
.arms_on
.include "gaeci.h55"
.sect ".ftext1"
;-------------------------------------------------------------------------
;-------------------------------------------------------------------------
.global _gaec_cancel_dc
;-------------------------------------------------------------------------
_gaec_cancel_dc
; GAEC_tDb *pDb = ar0
; GAEC_tSc *pSc = ar1
; S16 *psAdf = ar2
; S16 *psErr = ar3
; S16 blk = t0
; S16 band = t1
;
.arms_off
bit(ST2, #ST2_ARMS) = #0;
bit(ST1, #ST1_FRCT) = #1;
pshboth(xar5)
xcdp = dbl(*ar0(#(GAEC_tDb.psRcv)))
mar (*+cdp(#(GAEC_ADF_BSZ)));
xar4 = mar(*ar1(#(GAEC_tSc.aasSin)))
xar5 = mar(*ar0(#(GAEC_tDb.asShft)))
;
; account for blk number
mar (*(ar3 + t0)), mar (*(ar4 + t0)), mar (coef(*(cdp + t0)))
;
; advance pointers if band != 0
if (t1 != #0) execute(AD_unit)
mar (*+cdp(#(GAEC_RCV_SZ*GAEC_BANDS)));
if (t1 != #0) execute(AD_unit)
|| mar (*ar2+);
if (t1 != #0) execute(AD_unit)
|| mar (ar3 + #(GAEC_BLKS*GAEC_BANDS));
if (t1 != #0) execute(AD_unit)
|| mar (ar4 + #(GAEC_BLKS*GAEC_BANDS));
if (t1 != #0) execute(AD_unit)
|| mar (ar5 + #(GAEC_BANDS));
t1 = #2;
t0 = #16;
t0 = t0 - *ar5
ac0 = *ar4 << t0;
t0 = *ar5;
repeat (#(GAEC_ADF_SZ-1))
ac0 = ac0 - (*(ar2+t1) * coef(*cdp-));
*ar3 = HI(rnd(ac0 << t0));
bit(ST1, #ST1_FRCT) = #0;
.arms_on
bit(ST2, #ST2_ARMS) = #1;
xar5 = popboth()
return;
;-------------------------------------------------------------------------
.global _gaec_cancel_ac
;-------------------------------------------------------------------------
_gaec_cancel_ac
; GAEC_tDb *pDb = ar0
; GAEC_tSc *pSc = ar1
; S16 *psAdf = ar2
; S16 *psErr = ar3
; S16 blk = t0
;
pshboth(xar5);
pshboth(xar6);
push(t2)
push(t3)
.arms_off
bit(ST2, #ST2_ARMS) = #0;
bit(ST1, #ST1_FRCT) = #1;
; cdp = psAdf (both I and Q)
; ar2 = psRcvI
; ar3 = psErr
; ar4 = psSnd
; ar5 = psRcvQ
;
xcdp = mar(*ar2(#(GAEC_ADF_SZ*2)))
xar2 = dbl(*ar0(#(GAEC_tDb.psRcv)))
; mar (ar2 + #(GAEC_ADF_BSZ + GAEC_RCV_SZ));
mar (*+ar2(#(GAEC_ADF_BSZ + GAEC_RCV_SZ)));
xar4 = mar(*ar1(#(GAEC_tSc.aasSin + GAEC_BLKS)))
xar5 = mar(*ar2(#(GAEC_RCV_SZ*GAEC_BANDS)));
xar6 = mar(*ar0(#(GAEC_tDb.asShft+1)))
mar (ar3 + #GAEC_BLKS)
;
; account for blk number
mar (*(ar2 + t0)), mar (*(ar5 + t0)), mar (coef(*cdp))
mar (*(ar4 + t0)), mar (*(ar3 + t0)), mar (coef(*cdp))
brc0 = #(GAEC_BANDS-2);
mar (t0 = #2);
mar (t1 = #(GAEC_BLKS*GAEC_BANDS));
.localalign
localrepeat {
t2 = #16
t2 = t2 - *ar6
t3 = *ar6+
ac0 = *(ar4 + t1) << t2;
ac1 = *(ar4 - t1) << t2;
|| repeat (#(GAEC_ADF_SZ-1));
ac0 = ac0 - (*ar2- * coef(*(cdp+t0))),
ac1 = ac1 - (*ar5- * coef(*(cdp+t0)));
mar (*+ar2(#(GAEC_ADF_SZ)));
mar (*+ar5(#(GAEC_ADF_SZ)));
mar (*+cdp(#(1-GAEC_ADF_SZ*2)))
repeat (#(GAEC_ADF_SZ-1));
ac0 = ac0 - (*ar5- * coef(*(cdp+t0))),
ac1 = ac1 + (*ar2- * coef(*(cdp+t0)));
*(ar3 + t1) = HI(rnd(ac0 << t3));
*(ar3 - t1) = HI(rnd(ac1 << t3));
mar (*cdp-);
mar (*+ar2(#(GAEC_ADF_SZ + GAEC_RCV_SZ)));
mar (*+ar5(#(GAEC_ADF_SZ + GAEC_RCV_SZ)));
mar (ar4 + #GAEC_BLKS);
mar (ar3 + #GAEC_BLKS);
}
bit(ST1, #ST1_FRCT) = #0;
.arms_on
bit(ST2, #ST2_ARMS) = #1;
t3=pop()
t2=pop()
xar6 = popboth();
xar5 = popboth();
return;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -