📄 gaecnlpa.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 ".ftext2"
;-------------------------------------------------------------------------
_NLP_CRIT_THR .set (12*170)
_MULT .set (31821)
_INC .set (13849)
;-------------------------------------------------------------------------
.global _gaec_nlp_add_noise
;-------------------------------------------------------------------------
_gaec_nlp_add_noise
; S16 *psSeed = ar0,
; S16 *psTo = ar1
; S16 sLevel = t0
;
; .arms_off
; bit(ST2, #ST2_ARMS) = #0;
; bit(ST1, #ST1_FRCT) = #1;
;
brc0 = #(GAEC_ERR_SZ-1)
ac1 = t0;
ac1 = ac1 << #16; ; ac1 = sLevel
ac2 = #_MULT << #16; ; ac2 = MULT
ac3 = #_INC; ; ac3 = INC
ac0 = #_INC;
t1 = *ar0; ; t1 = Seed
|| localrepeat {
ac0 = ac0 + (ac2 * t1);
t1 = ac0;
|| ac0 = *ar1 << #15;
ac0 = ac0 + (ac1 * t1);
*ar1+ = HI(saturate(rnd(ac0 << #1)));
|| ac0 = ac3;
} ; 9*4*20*200 = 0.15 MIPS
*ar0 = t1; ; save Seed
return;
;-------------------------------------------------------------------------
.global _gaec_nlp_mix_noise
;-------------------------------------------------------------------------
_gaec_nlp_mix_noise
; GAEC_tDb *pDb = ar0
; GAEC_tSc *pSc = ar1
; U16 uUseDtCrit = t0
ac3 = #(13*170);
tc1 = *ar0(#(GAEC_tDb.uControl)) & IGAEC_CMD_NSE_RED_OFF;
if (!tc1) execute (D_unit)
ac3 = #(6*170);
xar2 = mar(*ar0(#(GAEC_tDb.asVadErrNse)));
xar3 = mar(*ar1(#(GAEC_tSc.u.asTmp)));
brc0 = #(GAEC_BANDS+1-1)
localrepeat {
ac0 = ac3 + *ar2+;
*ar3+ = ac0;
}
;
; exp
xar2 = mar(*ar1(#(GAEC_tSc.u.asTmp)));
brc0 = #(GAEC_BANDS+1-1)
localrepeat {
ac0 = *ar2;
ac1 = ac0 << #-10;
t1 = ac1;
ac0 = ac0 << #2;
ac0 = ac0 & #4095;
*ar2 = ac0;
ac0 = *ar2 * *ar2;
ac0 = ac0 << #-13;
ac0 = ac0 + *ar2;
ac0 = ac0 << #16
ac0 = ac0 * #21845;
ac0 = ac0 << #-15;
ac0 = ac0 + #4096;
*ar2+ = LO(ac0 << t1);
}
;
; if use uDtCrit
xar2 = mar(*ar1(#(GAEC_tSc.asAttErr)));
xar3 = mar(*ar1(#(GAEC_tSc.u.asTmp)));
ac2 = #4096 << #16;
brc0 = #(GAEC_BANDS+1-1)
localrepeat {
ac1 = ac2 - (*ar2+ << #16);
ac1 = ac1 * *ar3;
if (t0 != #0) execute (D_unit)
|| *ar3+ = HI(saturate(rnd(ac1 << #4)));
}
xar2 = mar(*ar1(#(GAEC_tSc.u.asTmp+GAEC_BANDS+1)));
xar3 = mar(*ar1(#(GAEC_tSc.u.asTmp+1)));
repeat (#(GAEC_BANDS-1-1))
*ar2+ = *ar3+
brc0 = #(2*GAEC_BANDS-1)
brc1 = #(GAEC_ERR_SZ-1)
xar2 = mar(*ar1(#(GAEC_tSc.aasErr0)));
xar3 = mar(*ar1(#(GAEC_tSc.u.asTmp)));
ac2 = #_MULT << #16; ; ac2 = MULT
ac3 = #_INC; ; ac3 = INC
t1 = *ar0(#(GAEC_tDb.sNseSav)); ; t1 = Seed
localrepeat {
ac1 = *ar3+ << #16; ; ac1H = sLevel
ac0 = ac3;
|| localrepeat {
ac0 = ac0 + (ac2 * t1);
t1 = ac0;
|| ac0 = *ar2 << #15;
ac0 = ac0 + (ac1 * t1);
*ar2+ = HI(saturate(rnd(ac0 << #1)));
|| ac0 = ac3;
} ; 9*4*20*200 = 0.15 MIPS
}
*ar0(#(GAEC_tDb.sNseSav)) = t1; ; save Seed
.if 0
.endif
return;
;-------------------------------------------------------------------------
.global _gaec_nlp_att_rx
;-------------------------------------------------------------------------
_gaec_nlp_att_rx
; GAEC_tDb *pDb = ar0
; GAEC_tSc *pSc = ar1
;
xar2 = mar(*ar1(#(GAEC_tSc.asAttErr)));
xar3 = mar(*ar1(#(GAEC_tSc.u.asTmp)));
repeat (#(GAEC_BANDS+1-1))
*ar3+ = *ar2+
xar2 = mar(*ar1(#(GAEC_tSc.u.asTmp+1)));
repeat (#(GAEC_BANDS-1-1))
*ar3+ = *ar2+
xar2 = mar(*ar1(#(GAEC_tSc.u.asTmp-1)));
xar3 = mar(*ar1(#(GAEC_tSc.aasErr0)));
xar4 = mar(*ar0(#(GAEC_tDb.aasErrSav)));
brc0 = #(GAEC_BANDS*2-1);
brc1 = #(GAEC_ERR_SZ-1);
localrepeat {
mar(*ar2+)
|| localrepeat {
ac0 = *ar4+ * *ar2;
*ar3+ = HI(rnd(ac0 << #4));
}
}
return
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -