📄 2191_ezkit_echo.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 + -