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

📄 confg.asm

📁 文件为美军4800bps语音压缩编码标准在TI的DSP芯片TMS320C5X上的实时实现源代码。
💻 ASM
字号:
;=================================================
;AR0,ACC,ACCB
;E0[60]
;=================confg(confg_flag==-1/0/1)========================
;confg(s,l,d1,d2,d3,d4,isw1,isw2,isw3,isw4)
;-1:	confg(s, l, d1a, d2a, d3a, d4a, 0, 1, 1, 1);
;0:	confg(s, l, d1a, d2a, d3a, d4a, 1, 1, 1, 1);
;1:	confg(s, l, d1b, d2b, d3b, d4b, 1, 1, 1, 1);
;=================================================
	.BSS CONFG_FLAG,1
	.BSS CONFG_D1,1
	.BSS CONFG_D2,1
	.BSS CONFG_D3,1
	.BSS CONFG_D4,1
;=================================================
CONFG
	LACC CONFG_FLAG
	BCND CONFG_B,GT
	  LACC #D1A
	  SACL CONFG_D1
	  LACC #D2A
	  SACL CONFG_D2
	  LACC #D3A
	  SACL CONFG_D3
	  LACC #D4A
	  SACL CONFG_D4
	  B CONFG_DO
CONFG_B
	  LACC #D1B
	  SACL CONFG_D1
	  LACC #D2B
	  SACL CONFG_D2
	  LACC #D3B
	  SACL CONFG_D3
	  LACC #D4B
	  SACL CONFG_D4
CONFG_DO
;=================================================
	;setr(MAXNO+1, 0.0, fctemp);
;=================================================
	CLR0 TEMPLPC,10
;=================================================
;if (isw1 != 0) pitchvq(e0, l, d1, idb, bb, "long");
;=================================================
	LACC CONFG_FLAG
	BCND CONFG_OVER_PIT,LT
	  LACC #E0
	  SACL PIT_RAR
	  CALLD PITCHVQ
	    LACC CONFG_D1
	    SACL PIT_BUF
;=================================================
	;if (isw2 != 0)   pole_con(fc, no, d2, e0, l);// wht
;=================================================
CONFG_OVER_PIT
	LACC #LPC
	SACL POLE_A
	LACC #E0
	SACL POLE_XY
	CALLD POLE_CON
	  LACC CONFG_D2
	  SACL POLE_Z
;=================================================
	;movefr(60,e0,syn_s);//wht
;=================================================
	;MOVEFR 60,E0,SYN_S
;=================================================
	;for (i = 0; i < l; i++)
;	{ e0[i] = s[i] - e0[i];
;	  if(fabs(e0[i])>0x7fff) e0[i]= (e0[i]<0)? -0x8000l:0x7fff;
;	}
;=================================================
	LACC SSUB_ADDR
	SAMM AR0
	MAR *,AR0
	LAR AR1,#E0
	LACC #59
	SAMM BRCR
	RPTB CONFG_SUB_E0-1
	  LACC *+,0,AR1
	  SUB *
	  sacb
	  ABS
	  SUB #7FFFH
	  LACB
	  BCND CONFG_SUB_TEST_E0,NC	;JUMP IF |S[I]-E[I]|<0X7FFF
	  ;-------
	    XC 2,GT
	     LACC #7FFFH
	    XC 2,LT
	     LACC #1,15
	  ;-----
CONFG_SUB_TEST_E0
	  SACL *+,0,AR0
	  NOP
CONFG_SUB_E0
;=================================================
	;if (isw3 != 0)    zero_con(fc,no,d3,e0,l);
;=================================================
	LACC #LPC
	SACL ZERO_A
	LACC #E0
	SACL ZERO_XY
	CALLD ZERO_CON
	  LACC CONFG_D3
	  SACL ZERO_Z
;=================================================
	;if (isw4 != 0)
	;  {  bwexp_con(gamma2, fc, fctemp, no);
	;     pole_con(fctemp, no, d4, e0, l);  }
;=================================================
	;LACC #BWPOW_80
	;SACL BW_POW_ADDR
	CALL BWEXP_CON
	;-----------
	LACC #TEMPLPC
	SACL POLE_A
	LACC #E0
	SACL POLE_XY
	CALLD POLE_CON
	  LACC CONFG_D4
	  SACL POLE_Z
	RET
;=================================================
	;setr(MAXNO+1, 0.0, fctemp);
	;if (isw1 != 0)   pitchvq(e0, l, d1, idb, bb, "long");
	;if (isw2 != 0)   pole_con(fc, no, d2, e0, l);// wht
	;movefr(60,e0,syn_s);//wht
	;for (i = 0; i < l; i++)     e0[i] = s[i] - e0[i];
	;if (isw3 != 0)    zero_con(fc,no,d3,e0,l);
	;if (isw4 != 0)
	;  {  bwexp_con(gamma2, fc, fctemp, no);
	;     pole_con(fctemp, no, d4, e0, l);  }
;=================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -