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

📄 gaeccnla.s55

📁 TI公司DSP/tms320c55x/tms320c54x系列的声学回声消除代码
💻 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 + -