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

2019-04-21 14:10

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

}

}

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; } while(!MCBSP_xrdy(hMcbsp)) {}; TempData=alaw2data(temp2); MCBSP_write16(hMcbsp,TempData); n++; } } } break; default: break; } } }

/****************************************************************************/ /* 子函数 */ /****************************************************************************/

/*******延时******/ void delay(int period) {

int i, j;

第 14页 共 20 页

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

for(i=0; i

for(j=0; j>1; j++); } }

/*****a律压缩******/

unsigned char data2alaw(signed pcm_val) { int mask; int seg; unsigned char aval; if (pcm_val >= 0) { mask = 0xD5; // 标记 (7th) bit = 1 } else { mask = 0x55; // 标记 bit = 0 pcm_val = -pcm_val; } // Convert the scaled magnitude to segment number. seg = search(pcm_val, seg_end, 8);

// Combine the sign, segment, and quantization bits.

if (seg >= 8) // out of range, 返回最大数. return (0x7F^mask); else { aval = seg << SEG_SHIFT; if (seg < 2) aval |= (pcm_val >> 1) & QUANT_MASK; else aval |= (pcm_val >>seg) & QUANT_MASK; return (aval^mask); } }

static int search(int val,short *table,int size) {

第 15页 共 20 页

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

int i; for (i = 0; i < size; i++) { if (val <= *table++) return (i); } return (size); }

/*****a律解压******/

int alaw2data(unsigned char a_val) { int t; int seg;

a_val ^=0x55;

t = (a_val & QUANT_MASK) << 4; seg = ((unsigned)a_val & SEG_MASK) >> SEG_SHIFT; if(seg==0) { t+= 8; t=(t>>3); } if((seg<4)&&(seg>0)) { t +=0x108; t=(t>>(4-seg)); } if(seg>3) { t+=0x108; t=(t<<=(seg-4)); }

return ((a_val & SIGN_BIT) ? t : -t); }

/*****u律压缩******/

Uint8 data2ulaw(signed pcm_val) { int mask; int seg; unsigned char uval; Uint8 i,output; Uint16 absol,temp;

第 16页 共 20 页

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

if (pcm_val >= 0) { mask = 1; // 标记 (7th) bit = 1 } else { mask = 0; // 标记 bit = 0 pcm_val = -pcm_val; } absol=pcm_val+33; temp=absol; for (i=0;i<16;i++) { output=temp&0x8000; //确定temp中出现1的最高位 if(output) //temp 左移i位后最高位为1 break; temp<<=1; } seg=11-i; uval=(absol>>seg)&0x0f; //量化值 seg--; //段值 seg<<=4; output=seg+uval; //输出值的绝对值 if(absol>8191) //超过最大值8191,输出最大值0x7f output=0x7f; if(mask) return (output^=0xFF); //返回含有符号信息的输出值 else return (output^=0x7F); }

int ulaw2data(Uint8 input) {

int mask; int seg; unsigned char uval; Uint32 temp; int data1; temp=input^0xff; //得到含有符号信息的压缩值 mask=(temp&0x80)>>7; //符号位 seg=(temp&0x70)>>4; //段值 uval=temp&0x0f; //量化值 data1=uval<<1; data1+=33; //扩展后数值中的6位非零值 data1<<=seg;

第 17页 共 20 页

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

if(mask) return (33-data1); //有符号的扩展值 else return (data1-33); }

/*****************************************************************************/ // No more

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

3. 存储器配置程序(.cmd文件)

.cmd是链接器命令文件,用于存储器配置。.cmd由两条链接伪指令来描 述:MEMORY 和SECTIONS,其中:MEMORY定义用户目标系统存储器的配置; SECTIONS控制段的构建和存储器的分配。存储器空间是需要配置的,因为 DSP不同的空间占用相同的地址,因此需要人工分配。

/**********************************************************/ /* */ /* LINKER command file for SDRAM memory map */ /* */ /**********************************************************/

MEMORY {

MMR : origin = 0000000h, length = 00000c0h SPRAM : origin = 00000c0h, length = 0000040 VECS : origin = 0000100h, length = 0000100h DARAM0 : origin = 0000200h, length = 0007E00h DARAM1 : origin = 0008000h, length = 0008000h

CE0 : origin = 0010000h, length = 03f0000h /* 对应ZBTRAM空间 */ FLASH : origin = 0400000h, length = 0100000h /* Flash 空间 */ /* FLASH : origin = 0410000h, length = 00f0000h*/ EXTEND: origin = 0500000h, length = 0300000h /* 状态/控制寄存器、UARTA、UARTB、USB、和扩展总线所对应的空间 */

SDRAM : origin = 0800000h, length = 03FFFFCh /* SDRAM 空间*/ CE3 : origin = 0c00000h, length = 03f8000h /* SDRAM 空间*/

PDROM : origin = 0ff8000h, length = 07f00h

第 18页 共 20 页


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

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

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

马上注册会员

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