语音压缩、存储与回放(3)

2019-04-21 14:10

语音压缩、存储与回放 王哲 09211114 五. 程序设计、调试与结果分析

1. 程序流程图

2. 源程序

/*****************************************************************************/ /* 文件名: CODEC.c */ /* 创建时间:29/06/2012 */ /* 功能描述:DSP课程设计 语音压缩,存储并回放 */ /* 作者: 王哲 09211114 通信0909 */ /*****************************************************************************/ #include

#include #include #include #include #include #include #include

#include \

#include \#include \

#undef CODEC_ADDR #define CODEC_ADDR 0x1A

Uint32 SourData[5][65536]={0};

signed data; Uint16 temp1; Uint8 temp2;

第 9页 共 20 页

语音压缩、存储与回放 王哲 09211114

/*****************************************************************************/ /* 函数声明 */ /*****************************************************************************/

unsigned char data2alaw(signed pcm_val); int alaw2data(unsigned char a_val);

static int search(int val,short *table,int size); void delay(int period);

static short seg_end[8]={0x1F,0x3F,0x7F,0xFF,0x1FF,0x3FF,0x7FF,0xFFF}; Uint8 data2ulaw(signed pcm_val); int ulaw2data(Uint8 input);

#pragma DATA_SECTION (SourData,\

/* 宏定义 */

#define u_law 0xAA0A//u律压缩 #define A_law 0xAA07//A律压缩

#define TESTCOMMAND 1 //操作命令选择

#define SIGN_BIT (0x80) /* Sign bit for a A-law byte. */ #define QUANT_MASK (0xf) /* Quantization field mask. */ #define NSEGS (8) /* Number of A-law segments. */ #define SEG_SHIFT (4) /* Left shift for segment number. */ #define SEG_MASK (0x70) /* Segment field mask. */

// 定义McBSP的句柄 MCBSP_Handle hMcbsp;

/*------------------------------------------------------------------------------------*/ //

// FUNCTION: MAIN //

/*------------------------------------------------------------------------------------*/ void main(void) {

Uint16 i,j,n;

Uint16 TempData;

Uint16 TestCommand =0;

第 10页 共 20 页

语音压缩、存储与回放 王哲 09211114

// Initialize CSL library - This is REQUIRED !!! CSL_init(); #if TESTCOMMAND==1 TestCommand =u_law;//u律压缩 #endif #if TESTCOMMAND==2 TestCommand =A_law;//A律压缩 #endif

// The main frequency of system is 240MHz

// 该频率是为了设置IIC模块的需要设置的,为了使用I2C_setup函数 PLL_setFreq(1, 0xC, 0, 1, 3, 3, 0);

//EMIF初始化 Emif_Config();

// Open McBSP port 1 and get a McBSP type handle hMcbsp = MCBSP_open(MCBSP_PORT1,MCBSP_OPEN_RESET);

// Config McBSP port 1 by use previously defined structure Mcbsp_Config(hMcbsp);

//I2C初始化 I2C_cofig();

//CODEC寄存器初始化(此例采样率为32KHz,详情见AIC23.c) inti_AIC();

/*------------------------------------------------------------------------------------*/

// Receive the ADC output data of CODEC

// Then output the received data to DAC of CODEC

/*------------------------------------------------------------------------------------*/ while(1) { switch(TestCommand) {

/************************************************************************/ /* u律压缩、储存与回放 */

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

第 11页 共 20 页

语音压缩、存储与回放 王哲 09211114

case u_law: asm(\ delay(3000);

asm(\ delay(3000);

asm(\ for(j=0;j<5;j++){

for(i=0;i<65535;i++) {

n=0; while(n<4) { while(!MCBSP_rrdy(hMcbsp)){}; TempData=MCBSP_read16(hMcbsp); temp1=data2ulaw(TempData); switch(n) { case 0:SourData[j][i]=(temp1<<=24);break; case 1:SourData[j][i]=(SourData[j][i]|(temp1<<=16));break; case 2:SourData[j][i]=(SourData[j][i]|(temp1<<=8));break; case 3:SourData[j][i]=(SourData[j][i]|temp1);break; default: break; } n++; } }

}

asm(\ delay(3000);

asm(\

for(j=0;j<5;j++){ for(i=0;i<65535;i++) { n=0; while(n<4){ switch(n) { case 0: temp2=(SourData[j][i]>>24)&0x0ff; case 1: temp2=(SourData[j][i]>>16)&0x0ff; case 2: temp2=(SourData[j][i]>>8)&0x0ff; case 3: temp2=SourData[j][i]&0x0ff;

第 12页 共 20 页

语音压缩、存储与回放 王哲 09211114

} while(!MCBSP_xrdy(hMcbsp)) {}; TempData=ulaw2data(temp2); MCBSP_write16(hMcbsp,TempData); n++; } } }

break;

/**********************************************************************/ /* A律压缩、储存与回放 */

/**********************************************************************/ case A_law: asm(\ delay(3000);

asm(\ delay(3000);

asm(\

for(j=0;j<5;j++){ for(i=0;i<65535;i++) {

n=0; while(n<4) { while(!MCBSP_rrdy(hMcbsp)){}; TempData=MCBSP_read16(hMcbsp); temp1=data2alaw(TempData); switch(n) { case 0:SourData[j][i]=(temp1<<=24);break; case 1:SourData[j][i]=(SourData[j][i]|(temp1<<=16));break; case 2:SourData[j][i]=(SourData[j][i]|(temp1<<=8));break; case 3:SourData[j][i]=(SourData[j][i]|temp1);break; default: break; } n++; }

第 13页 共 20 页


语音压缩、存储与回放(3).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:从佛经翻译看中国翻译传统的特点及其对现今翻译的启示

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: