OutData6[i] = alaw2linear(SourData6[i]); }
for(i=0;i<65535;i++) { OutData7[i] = alaw2linear(SourData7[i]); }
for(i=0;i<65535;i++) { OutData8[i] = alaw2linear(SourData8[i]); }
for(i=0;i<65535;i++) { OutData9[i] = alaw2linear(SourData9[i]); }
for(i=0;i<65535;i++) { OutData10[i] = alaw2linear(SourData10[i]); }
for(i=0;i<65535;i++) { OutData11[i] = alaw2linear(SourData11[i]); }
for(i=0;i<65535;i++) { OutData12[i] = alaw2linear(SourData12[i]); }
for(i=0;i<65535;i++) { OutData13[i] = alaw2linear(SourData13[i]); }
for(i=0;i<65535;i++) { OutData14[i] = alaw2linear(SourData14[i]); }
for(i=0;i<65535;i++) { OutData15[i] = alaw2linear(SourData15[i]); }
for(i=0;i<65535;i++) { while(!MCBSP_xrdy(hMcbsp)) {}; MCBSP_write16(hMcbsp,OutData1[i]);回放程序
}
for(i=0;i<65535;i++) { while(!MCBSP_xrdy(hMcbsp)) {}; MCBSP_write16(hMcbsp,OutData2[i]); }
for(i=0;i<65535;i++) { while(!MCBSP_xrdy(hMcbsp)) {}; MCBSP_write16(hMcbsp,OutData3[i]); } for(i=0;i<65535;i++) { while(!MCBSP_xrdy(hMcbsp)) {}; MCBSP_write16(hMcbsp,OutData4[i]); }
for(i=0;i<65535;i++) { while(!MCBSP_xrdy(hMcbsp)) {}; MCBSP_write16(hMcbsp,OutData5[i]); }
for(i=0;i<65535;i++) { while(!MCBSP_xrdy(hMcbsp)) {}; MCBSP_write16(hMcbsp,OutData6[i]); } for(i=0;i<65535;i++) { while(!MCBSP_xrdy(hMcbsp)) {}; MCBSP_write16(hMcbsp,OutData7[i]); }
for(i=0;i<65535;i++) { while(!MCBSP_xrdy(hMcbsp)) {}; MCBSP_write16(hMcbsp,OutData8[i]); }
for(i=0;i<65535;i++) { while(!MCBSP_xrdy(hMcbsp)) {}; MCBSP_write16(hMcbsp,OutData9[i]); } for(i=0;i<65535;i++) { while(!MCBSP_xrdy(hMcbsp)) {};
MCBSP_write16(hMcbsp,OutData10[i]); } for(i=0;i<65535;i++) { while(!MCBSP_xrdy(hMcbsp)) {}; MCBSP_write16(hMcbsp,OutData11[i]); } for(i=0;i<65535;i++) { while(!MCBSP_xrdy(hMcbsp)) {}; MCBSP_write16(hMcbsp,OutData12[i]); } for(i=0;i<65535;i++) { while(!MCBSP_xrdy(hMcbsp)) {}; MCBSP_write16(hMcbsp,OutData13[i]); } for(i=0;i<65535;i++) { while(!MCBSP_xrdy(hMcbsp)) {}; MCBSP_write16(hMcbsp,OutData14[i]); } for(i=0;i<65535;i++) { while(!MCBSP_xrdy(hMcbsp)) {}; MCBSP_write16(hMcbsp,OutData15[i]); } break; default: break; } } }
/*****a律压缩******/
unsigned char data2alaw(s16 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); } }
/*****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); }
2.实验结果的波形如下: 输入波形:
压缩波形:
输出波形:
3.硬件实现及现象
运行编写的程序会看到DSK板上的3个灯依次点亮,在我们的试验设计中主要通过LED0来指示,当LED0灯亮时,开始在输入端采集音频信号,采集完后,LED0灯灭,在输出端的耳机开始放音,就会听到刚才储存的10秒左右的音频信号。放完音后,LED0灯又重新点亮,随即又开始录音,一直循环下去。
五、 设计(安装)与调试的体会
1、 xx(0921xxx):
通过这次的DSP实验,让我充分认识到了我的不足。我虽然学习过C语言的编程,但一旦将它应用到实际的比较专业的问题上,我所