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

📄 2191_ezkit_echo.asm

📁 ADI-219x dsp的回声消除代码
💻 ASM
字号:
/************************************************************************************************
* TITLE: 	2191_EZKIT_echo
* PURPOSE:	Show a Echo Cancellation demo for the ADSP-2191 EZ-KIT	
* 
*
* Modified: 07/12/2001 - GJO
*
************************************************************************************************/

#include 	<def2191.h>
#include 	"2191_EZ_KIT.h"

/*****************************************************************************************************
   CONSTANT & MACRO DEFINITIONS
*****************************************************************************************************/
/* TDM Timeslot Definitions */
#define		TAG_PHASE				0
#define		COMMAND_ADDRESS_SLOT	1
#define		COMMAND_DATA_SLOT		2
#define		STATUS_ADDRESS_SLOT		1
#define		STATUS_DATA_SLOT		2
#define		LEFT					3
#define		RIGHT					4

/************************************************************************************************/
/*			   GLOBAL & EXTERNAL DECLARATIONS													*/	
/************************************************************************************************/    
.GLOBAL 	Start;
.GLOBAL 	codec_tx, codec_rx;
.GLOBAL 	move_disp;
.EXTERN 	Codec_Reset;
.EXTERN		Program_SPORT0_Registers;
.EXTERN		Program_DMA_Controller;
.EXTERN		AD1885_Codec_Initialization;
.EXTERN		tx_buf;
.EXTERN		rx_buf;
.EXTERN 	codec_init_commands;              /* DM buffer which holds CODEC initializarion control words */
.EXTERN 	temp;
.EXTERN		RX_Status;
.EXTERN		codec_rx;
.EXTERN		codec_tx;
.EXTERN		move_disp;

/************************************************************************************************/
/* 				DM data 																		*/
/************************************************************************************************/
.section/dm data1;
.var        sync_value = 0x7FFF;
.global 	sync_value;
.var 		echo[l];
.var 		input[n];
.var 		disp[m];
.var 		beta;
.global		beta;
.global		delay_val;
.var 		delay_val = 0;

/************************************************************************************************/
/* 				PM data 																		*/
/************************************************************************************************/
.section/pm	data2;
.var/init24	        f_coeff[m] = "echoeff.dat";
.var                a_coeff[n];

/************************************************************************************************/

.SECTION /pm program;
Start:
	call Codec_Reset;	
	call Program_SPORT0_Registers;		/* Initialize SPORT0for codec communications */
	call Program_DMA_Controller;		/* Start Serial Port 0 tx and rx DMA Transfers */
	call AD1885_Codec_Initialization;	/* Initialize & program AD1885 */

	ax0 = 0;
    dm(tx_buf + COMMAND_ADDRESS_SLOT) = ax0;
    dm(tx_buf + COMMAND_DATA_SLOT) = ax0;

	i0 = echo;                 		/* Assign i0 to point to the echo buffer */
    l0 = l;
    i1 = disp;                 		/* Assign i1 to point to the buffer used to output coefficients to the oscilloscope */
    l1 = m;
    i2 = input;                		/* Buffer used for input samples */
    l2 = n;
    i3 = echo;
    l3 = l;
      
    i4 = f_coeff;
    l4 = m;
    i7 = a_coeff;
    l7 = n;

    i6=i7; l6=l7; 					/* This is for the display/scope pointer */

 	ay0=i6;

	ax0 = i0;
	reg(B0) = ax0;
	
	ax0 = i1;
	reg(B1) = ax0;

	ax0 = i2;
	reg(B2) = ax0;

	ax0 = i3;
	reg(B3) = ax0;

    i3 = echo+delay;

	ax0 = i4;
	reg(B4) = ax0;

	ax0 = i6;
	reg(B6) = ax0;

	ax0 = i7;
	reg(B7) = ax0;



    m0 = 0;
    m2 = 2;
    m3 = -1;
    m4 = 2;
    m7 = -1;
    
    m5 = 1;                   
    m1 = 1;

	ax0=0;
 	dm(beta)=ax0;
      
    cntr = n;
    si = 0;
    do zeroloop1 until ce;
zeroloop1:         pm(i7,m5) = si;  /* Clear the adaptive filter coefficients */

    my1=0;                       	/* Beta = 0 disables canceller initially */

    ena ar_sat, dis av_latch, dis bit_rev; 
	/* Clear RX_Status flag indicating incoming RX data is audio data and can be processed  according */
	ax0=0x0000;
	dm(RX_Status) = ax0; 
	
wait_forever:
	idle;
	jump wait_forever;

Start.end:




⌨️ 快捷键说明

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