DSP课程设计-语音采集压缩存储与回放new

上传人:xins****2008 文档编号:27670956 上传时间:2021-08-19 格式:DOC 页数:22 大小:1.47MB
返回 下载 相关 举报
DSP课程设计-语音采集压缩存储与回放new_第1页
第1页 / 共22页
DSP课程设计-语音采集压缩存储与回放new_第2页
第2页 / 共22页
DSP课程设计-语音采集压缩存储与回放new_第3页
第3页 / 共22页
点击查看更多>>
资源描述
沈阳理工大学DSP课程设计 目 录1 概述1 1.1设计目的1 1.2设计要求1 1.3 语音信号压缩A律设计基本原理1 1.3.1 语音信号压缩编码技术的发展1 1.3.2 DSP硬件实现数据压缩解压的简单流程2 1.3.3 A律语音信号压缩22 系统硬件设计方案4 2.1 DSP芯片的基本原理42.2 指令缓冲单元(I)52.3 程序流程单元(P)52.4 地址程序单元(A)52.5 数据计算单元(D)63 语音信号压缩A律设计的CCS实现6 3.1 简述CCS环境6 3.1.1 CCS主要特点7 3.1.2 DSP/BIOS和API函数以及RTDX插件7 3.2 CCS配置7 3.3 CCS环境中工程文件的使用8 3.3.1 建立工程文件8 3.3.2 创建新文件9 3.4 编译链接和运行目标文件9 3.4.1 对程序进行编译链接并装载.out文件104 软件设计与系统仿真10 4.1软件设计流程图10 4.2 CCS操作过程11 4.3 程序代码实现115 课程设计总结206参考文献211 概述1.1设计目的在CCS环境下基于TMS320VC55X芯片的语音采集压缩存储与回放。通过这次课程设计,加深对CCS集成开发环境的以及DSP试验系统箱的使用。锻炼逻辑思维能力、动手能力以及独立解决问题的能力,对以后更深入地学习和应用数字信号处理及相关知识作准备。1.2设计要求(1)了解DSP开发工具及其安装过程(2)熟悉DSP开发软件CCS使用(3)熟悉工程文件的建立方法、汇编程序开发调试过程(4)熟悉常用C55X系列指令的用法(5)在老师的指导下,独立完成课程设计的全部内容,并按要求编写课程设计论文,能正确阐述和分析设计和实验结果。1.3 语音信号压缩A律设计基本原理1.3.1 语音信号压缩编码技术的发展 随随着通信、计算机网络等技术的飞速发展,语音压缩编码技术得到了快速发展和广泛应用,尤其是最近20年,语音压缩编码技术在移动通信、卫星通信、多媒体技术以及IP电话通信中得到普遍应用,起着举足轻重的作用。 语音压缩编码技术的类别 语音编码就是将模拟语音信号数字化,数字化之后可以作为数字信号传输、存储或处理,可以充分利用数字信号处理的各种技术。为了减小存储空间或降低传输比特率节省带宽,还需要对数字化之后的语音信号进行压缩编码,这就是语音压缩编码技术。 语音的压缩编码方法归纳起来可以分为三大类:波形编码、参数编码和混合编码。1.3.2 DSP硬件实现数据压缩解压的简单流程 DSP将传输来的压缩后的数据进行解压成16位或32位,而后对解压后的数据进行分析,处理,最后将处理后的数据按照要求压缩成8位的数据格式输出到相应设备以供读取:DRRSRRBR解压RJUSTDDRDXR压缩XSRDX 在进行压缩时,采样后的12位数据,默认其最高位为符号位,压缩时要保持最高位即符号位不变;原数据的后11位要压缩成7位。这7位码由3位段落码和4位段内码组成,具体压缩变换后的根据后11位数据大小决定。压缩后数据的最高位(第7位)表示符号,量阶分别为1,1,2,4,8,16,32,64,由压缩后数据的第6位到第4位决定,第3位到第0位是段内码,压缩后数据有一定的失真,有些数据不能表示出,只能取最接近该数据的压缩值。例如数据125,压缩后的值为00111111,意义如下: 从左往右,第一个0为符号位,表示为一个正数;后面的011为段落码,表示量阶为4,起始数据为64,后面的4个1111为段内码,表示值为15最终结果为:64+4*15=124.1.3.3 A律语音信号压缩A律限制采样值为12比特,A律的压缩可按照下列公式定义: F(x)=sgn(x)A|x|/(a+lnA)0=|x|1/A=sgn(x)(1+lnA|x|)/(1+lnA)1/A=|x| PRAM PAGE 0 .text PRAM PAGE 0 .vectors VECS PAGE 0 init_var PRAM PAGE 0 detect PRAM PAGE 0 vrcprg PRAM PAGE 0 matprg PRAM PAGE 0 .stack STACK PAGE 1 .trap SCRATCH PAGE 1 .const EXRAM PAGE 1 .data EXRAM PAGE 1 .bss EXRAM PAGE 1 .cio EXRAM PAGE 1 .switch EXRAM PAGE 1 tables EXRAM PAGE 1 var EXRAM PAGE 1 svctab EXRAM PAGE 1 /* SS_V LSP table */ vctab EXRAM PAGE 1 /* V LSP table */ uvctab EXRAM PAGE 1 /* UV LSP table */ cuvtab EXRAM PAGE 1 /* Stochastic codebook */ cdbktab EXRAM PAGE 1 /* various codebook tables*/ logtab EXRAM PAGE 1 /* table for log2 */ powtab EXRAM PAGE 1 /* table for pow2 */ hamtab EXRAM PAGE 1 /* table for hamming */ lgwtab EXRAM PAGE 1 /* table for lag window */ acostab EXRAM PAGE 1 /* table for arccos */ sqrtab EXRAM PAGE 1 /* table for square root */ acbtab EXRAM PAGE 1 /* table for thresholds in acb */ pm03tab EXRAM PAGE 1 /* table for x(-0.3) computation */ costab EXRAM PAGE 1 /* table for cosine */ V23 INRAM PAGE 1 FSK INRAM PAGE 1 hpibuff0 HPRAM0 PAGE 1 hpibuff1 HPRAM1 PAGE 1 hpibuff2 HPRAM2 PAGE 1 dma_buff DMARAM PAGE 1/*主程序设计*/*语音采集及回放程序,用A律进行压缩及解压,采用AD50进行A/D,D/A转换 */ /*灯循环闪烁程序开始,L0:录音,L1:放音*/#include /* 头文件*/#include #include #include #defineSIGN_BIT(0x80)/* Sign bit for a A-law byte. */#defineQUANT_MASK(0xf)/* Quantization field mask. */#defineNSEGS(8) /* Number of A-law segments. */#defineSEG_SHIFT(4) /* Left shift for segment number. */#defineSEG_MASK(0x70)/* Segment field mask. */void delay(s16 period);void led(s16 cnt);void initcodec(void);void flashenable(void);unsigned char data2alaw(s16 pcm_val);int alaw2data(unsigned chara_val);static int search(int val,short*table,int size);HANDLE hHandset;s16 data;s16 data1;u16 i=0;u16 temp1;u16 j=0;u16 k,l=0;u8 temp2;u16 buffer20000;static short seg_end8=0x1F,0x3F,0x7F,0xFF,0x1FF,0x3FF,0x7FF,0xFFF;void main() if (brd_init(100) return; led(2); /闪灯两次 initcodec(); /初始化codec flashenable(); /选择片外FLASH为片外存储器 delay(100); brd_led_toggle(BRD_LED0); for(i=0x9000;i0xefff;i+) REG_WRITE(i,*(volatile u16*)DRR1_ADDR(HANDSET_CODEC); delay(20); brd_led_toggle(BRD_LED1); delay(200); for(i=0x9000;i0xefff;i+) *(volatile u16*)DXR1_ADDR(HANDSET_CODEC)=REG_READ(i); delay(20); brd_led_toggle(BRD_LED2) while (1) while (!MCBSP_RRDY(HANDSET_CODEC) ; /等待接收handset处的采样 brd_led_toggle(BRD_LED0); data = *(volatile u16*)DRR1_ADDR(HANDSET_CODEC); /从handset处读取采样 temp1=data2alaw(data); /对采样进行a律压缩 i=i+1; if(i%2=1) bufferj=(temp1=40000) i=0; if(j=20000) j=0; brd_led_disable(BRD_LED0); brd_led_toggle(BRD_LED1); /点亮二极管1 表示放音开始 /* 放音部分 */ for(k=0;k8)&0x0ff; else temp2=bufferl&0x0ff; l+; if(l=20000) l=0; data1=alaw2data(temp2); / a律解压 while (!MCBSP_XRDY(HANDSET_CODEC) ; *(volatile u16*)DXR1_ADDR(HANDSET_CODEC) = data1;/将数据写入D/A转换器 /* 放音结束 */ brd_led_toggle(BRD_LED0); brd_led_toggle(BRD_LED1); /主程序结束 /*延时子程序*/void delay(s16 period) int i, j; for(i=0; iperiod; i+) for(j=0; j1; j+); /*闪灯*/void led(s16 cnt)while ( cnt- )brd_led_toggle(BRD_LED0); /切换LED指示灯0的显示状态delay(1000);brd_led_toggle(BRD_LED1);delay(1000);brd_led_toggle(BRD_LED2);delay(1000);/*初始化codec*/void initcodec(void)/* Open Handset Codec 获取设置codec的句柄*/ hHandset = codec_open(HANDSET_CODEC); / Acquire handle to codec codec_dac_mode(hHandset, CODEC_DAC_15BIT); / DAC in 15-bit mode codec_adc_mode(hHandset, CODEC_ADC_15BIT); / ADC in 15-bit mode codec_ain_gain(hHandset, CODEC_AIN_6dB); / 6dB gain on analog input to ADC codec_aout_gain(hHandset, CODEC_AOUT_MINUS_6dB); / -6dB gain on analog output from DAC codec_sample_rate(hHandset,SR_8000); / 8KHz sampling rate /*设置flash*/void flashenable(void)CPLD_CTRL2_REG|=0x0010;CPLD_DMCTRL_REG|=0x0040;/*a律压缩*/unsigned char data2alaw(s16 pcm_val) intmask;intseg;unsigned charaval;if (pcm_val = 0) mask = 0xD5; / 标记 (7th) bit = 1 else mask = 0x55; / 标记 bit = 0 pcm_val = -pcm_val;seg = search(pcm_val, seg_end, 8); if (seg = 8) / out of range, 返回最大数. return (0x7F mask);else aval = seg SEG_SHIFT;if (seg 1) & QUANT_MASK;elseaval |= (pcm_val seg) & QUANT_MASK;return (aval mask);/*alaw的子程序*/static int search(int val,short*table,int size)inti;for (i = 0; i size; i+) if (val = *table+)return (i);return (size);/*a律解压*/int alaw2data(unsigned chara_val) intt;intseg;a_val = 0x55; t = (a_val & QUANT_MASK) SEG_SHIFT;if(seg=0) t += 8; t=(t3);if(seg0) t +=0x108; t=(t(4-seg);if(seg3)t+=0x108;t=(t=(seg-4);return (a_val & SIGN_BIT) ? t : -t);/* 结束 *5 课程设计总结CCS为信号处理器的开发过程提供配置、构造、调试、跟踪和分析程序的工具,在基本代码产生工具的基础上增加了调试和实时分析的功能。开发设计人员可在不中断程序运行的情况下检查算法的对错,实现对硬件的实时跟踪调试,从而大大缩减了程序的开发时间。这里以C算法的实现为例,从View菜单,选择Graph Time/Frequency命令,系统弹出“图形属性”对话框,在该对话框中填入如图5所示的参数。 6参考文献1 汪春梅,孙洪波.TMS320C 55x DSP原理及应用.第二版.北京:电子工业出版社 20082 姜 阳,周锡青.DSP原理与应用实验.西安:西安电子科技大学出版社,20083 方华刚. DSP原理与应用. 北京:机械工业出版社,2006.14 程佩青,数字信号处理教程第二版,清华大学出版社,2001.85 TMS320C55X DSP Programmers Guide SPRU376AZ.Texas Instruments,20016 TMS320C55X DSP Mnemonic Instruction Set Reference Guide SORU374GZ. Texas Instruments,200221
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 图纸专区 > 小学资料


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!