




已阅读5页,还剩19页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
dsp课程设计实 验 报 告语音压缩、存储与回放成绩:工程设计50报告20答辩30总分评语:指导教师签字: 日期:一、 实验背景与内容语音通信是现代多媒体通信中一个重要的组成部分,而语音信号是信息的重要形式, 语音信号处理有着广泛的应用领域,同时语音压缩在语音信号的传输、存储等方面有非常广泛的作用,而且在通信领域中已经有较成熟的发展和广泛应用。本设计要求采用dsp及其a/d、d/a转换器进行语音信号的压缩、存储和回放。语音的数字通信无论在可靠性、抗干扰能力、保密性还是价格方面都远优于模拟语音信号,但这是以信道占用宽频带宽为代价的。因此为了减少语音信号所占用的带宽或存储空间,就必须对数字语音信号进行压缩编码。一个优秀的语音压缩系统要求能够在软硬件资源占用比例低和压缩编解码时间短的同时,可以实现多通道语音实时压缩。dsp仿真器用于dsp的在线调试开发,可以通过软件在线控制dsp的运行状态,并能够查看dsp内部寄存器。pc是开发人员和dsp系统之间的交互界面,通过pc上安装的ccs集成开发环境,开发人员可以在友好的图形界面下对目标系统进行操作。本次实验采用dsp c5402实验板实现语音信号的压缩解压的。seed-vc5402 dsk实验板上集成了sram,flash,音频输入输出接口等部件。二、 实验目的1、应用dsp算法实现对语音信号的压缩、存储和回放。2、熟悉使用c语言编写较复杂的程序; 3、熟悉c语言对外设(dsk板或示波器)的访问(软件编程、硬件连接); 4、熟练使用软件ccs5000对程序的完整调试过程。三、实验设计要求及目标1要求(1)使用dsp实现语音压缩和解压缩的基本算法,算法类型自定,例如可以采用g.711、g.729等语音压缩算法。(2)采用a/d转换器从mic输入口实时采集语音信号,进行压缩后存储到dsp的片内和片外ram存储器中,存储时间不小于10秒。(3)存储器存满之后,使用dsp进行实时解压缩,并从speaker输出口进行回放输出。(4)使用指示灯对语音存储和回放过程进行指示。2设计思路 语音信号的幅度(发音强度)并非均匀分布,由于小信号占的比例比大信号大很多,因此可以进行非均匀量化。达到这一目标的基本做法是,对大信号使用大的量化间隔,而小信号则使用小的台阶。itu-t g.711建议的pcm a律和律语音压缩标准可以分别将13比特和14比特压缩为8比特,达到语音压缩的目的。四、实验原理1、 dsk 包括:主芯片 1枚:100 mhz tms320vc5402 dspram 1枚:1个软件等待的64k16bit的sram(cy7c1021v33)flash 1枚:256k16bit 的 flash存储器(am39vf400a)接口 2个:一个连接到pc机并口的主机端接口hpi和用于仿真的jtag测试总线控制器 信号采集和输出端口:麦克风/耳机音频接口 c5402的硬件特点:增强型哈佛结构,一个程序总线,三个独立的数据总线;40bit的算术逻辑单元alu ;可寻址的程序空间达1mx16bit;4kx16bit片内rom ;16kx16bit双口片内ram;片内外设:软件可编程等待状态发生器;片内锁相环时钟发生器;两个多通道缓冲串口;增强型8bit并行hpi口;两个16bit定时器;六通道dma控制器;节电模式idle1,idle2,idle3做功耗控制;单周期定点指令(100mips)执行时间为10ns。 c5402硬件优点:内部多总线结构保证在一个机器周期内可以多次访问程序空间和数据空间;指令执行时的多重流水线结构将指令周期降低到了最小值;多处理单元可以在一个指令周期内同时进行运算,而这种结构恰好满足了数字信号处理中的一些特殊要求如fir、iir、fft等运算。 c5402的软件特点:7种有效灵活的寻址方式,仅为10ns的指令执行周期。2、tms320c5402的结构及原理 tms320c5402采用先进的改进的哈佛结构和8条总线结构,解决了冯诺伊曼(von-neumann)结构中高速数据传输时的传输通道上的瓶颈现象,使处理器的性能大大提高,程序数据总线相互独立,允许同时访问程序存储器和数据存储器,实现高度并行操作。此外,还可以在数据总线与程序总线之间相互传送数据,从而使处理器具有在单个周期内同时执行算数运算、逻辑运算、移位操作、乘法/累加运算以及访问程序和数据存储器的强大功能。tms320c5402的内部多总线结构保证在一个机器周期内可以多次访问程序空间和数据空间;指令执行时的多重流水线结构将指令周期降低到了最小值;多处理单元可以在一个指令周期内同时进行运算,而这种结构恰好满足了数字信号处理中的一些特殊要求如fir、iir、fft等运算。由于c5402有7种有效灵活的寻址方式的软件特点,仅为10ns的指令执行周期,还有一些特殊的运算指令更好地满足了数字信号处理中特有的运算需要。 tms320c5402具有高速的,全双工串行口,可用来与系统中的其他c54x器件,编码解码器,串行a/d,d/a转换器以及其他的串行器件直接接口。这两个串行口均为多通道缓冲串行口mcbsp(multi-channel buffered serial port)。它支持全双工通信,双缓冲数据寄存器,允许连续的数据流。内置-律和a-律压扩硬件。 dsp结构框图3、ad50的结构与原理ad50是单片音频接口芯片(aic)。它内部集成了16位的d/a和a/d转换器,采样速率最高可达22.05kb/s,其采样速率可通过dsp编程来设置。在dac之前有一个插值滤波器以保证输出信号平滑和adc之后有一个抽取滤波器以提高输入信号的信噪比。 ad50内部有7个数据和控制寄存器,用于编程控制它们的工作状态。它的数据传输模式和采样速率都可以通过dsp对其控制寄存器的编程来实现,因此,在许多场合下,ad50都作为dsp的aic来实现音频处理。寄存器0:空操作寄存器。 寄存器1:软件复位 软件掉电 选择16位或15位工作方式 硬件或软件二次通信请求方式的选择 寄存器2:使能altdata输入端 为adc选择16/15位方式 寄存器3:选择fs与fsd之间延迟sclk的个数 告诉主机有几个从机被联上 寄存器4:为输入和输出放大器选择放大器增益 选择n来设置采样频率,fs=mclk/(128*n)或mclk/(512*n) 在mclk输入端使能外部时钟输入并旁通内部的pll 寄存器5,6:保留 ad50与c5402之间的数据传送采用串行方式,包括两种传输模式:16位和15+1位传输模式。15+1位模式时,其中的d0位表示二次通信。它们各自的时序如下: 4、程序存储芯片实验中,电路选用的芯片sst39vf400是一个低功耗flash。芯片硬件特点:a17至a0为外部地址管脚,d15至d0为1条数据线,ce#为片选控制管脚(低有效),oe#为输出控制管脚(低有效),we#为写入控制管脚(低有效)。工作在2.7v至3.6v电压下,存储容量位256kw,其。中的数据可以保持100年以上,可重复编程次数高达10万次。5、u_law/a_law的压扩硬件处理 在电信中常常利用u律和a律对数据进行压扩处理,c5400在mcbsp中提供了专门的硬件实验这一功能。压扩处理时,cpu访问到的都是16位的,他分别是利用线性的14位数据(u律)和13位(a律)数据左对齐获得的。压扩硬件结构和相应的数据如下图所示。在本实验中,我们通过软件编程来完成线性码转换成a律。语音信号通常是小信号概率大,大信号出现的概率小,为提高小信号时的量化信躁比,压缩比特速率,可为非线性量化。语音压缩是把16位的数据比特转化为8位数据比特,从而到达语音压缩的目的。在主程序中通过a/d抽样量化,可以得到16位的线性编码,再由编码表通过软件计算得到8位a律编码,其中最高位为符号位,第6位到第4位为段落码,低4位为段内码。将8位的压缩结果存储到系统ram中进行缓存,根据抽样率、语音存储时间以及系统ram的容量设置语音存储缓冲区的大小,待缓冲区存满后,将缓冲区内的数据进行解压缩,然后输出到speaker接口输出端。若使用a/d转换器,必须首先对a/d转换器进行初始化设置,即设置a/d转换器的工作模式、输入增益以及抽样频率等。 a律压缩编码表线性输入编码压缩编码0000000wxyza000wxyz0000001wxyza001wxyz000001wxyzab010wxyz00001wxyzabc011wxyz0001wxyzabcd100wxyz001wxyzabcde101wxyz01wxyzabcdef110wxyz1wxyzabcdefg111wxyz 五、程序设计思路dsp程序设计应包括用户程序、存储器配置程序。为了实现语音信号的采集与回放,先将语音信号采集,运用a律压缩算法将信号压缩并存入存贮器中,当放音开始时运用a律解压算法将信号解压并从存储器中释放出来,实现语音的回放。1、软件设计流程开始初始化board板成功?调用_led_display(2)使灯都闪两次初始化codec片选flash为外部存储器等待接受instance处的采样led灯0亮开始录音采样送voice_sample压缩存储voice_sampleled灯1熄灭放音结束读取,解压缩并送voice_sample1led灯1亮开始放音led灯0熄灭录音结束是否2、tms320vc5402 mcbsp的串口的初始化首先将dsp的串口1复位,再对串口1的16个寄存器进行编程,使串口1工作在以下状态:禁止spi模式,但数据相,每帧一字,每字16位,帧同步脉冲低电平有效,并且帧同步信号和移位信号有外部时钟产生。 hhandset = codec_open(handset_codec); 此语句调用了函数codec_open()对串口1进行了初步设置,设置成功返回codec的句柄放在变量 hhandset中,作为调用其他函数的实参。3、ad50的初始化:该初始化过程调用了5个函数对ad50的5项参数进行了设置,包括adc和dac的工作模式,模拟输入和输出的增益;以及ad,da的转换速率。4、从mcbsp的接收通道读取a/d转换的值,然后经过压缩解压后将其发送到mcbsp的发送通道,讲解压后的数据将数据写入d/a转换器。程序如下:while (1) /* wait for sample from handset */ while (!mcbsp_rrdy(handset_codec) ;/* read sample from and write back to handset codec */ data=*(volatile int*)drr1_addr(handset_codec); pre=int2alaw(data); /*or pre=int2ulaw(data);*/ data=alaw2int(pre); /*or data=ulaw2int(pre);*/ *(volatile int*)dxr1_addr(handset_codec)=data;六、实验程序1 c语言程序/*/* 头文件 */*/#include #include #include #include /*/* 变量宏定义 */*/#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. */*/* 函数声明 */*/void delay(s16 period);void led(s16 cnt);void initcodec(void);void flashenable(void);unsigned char data2alaw(s16 pcm_val);int alaw2data(unsigned char a_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 buffer22000;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为片外存储器 while (1) while (!mcbsp_rrdy(handset_codec) ; /等待接收handset处的采样 if (i=0) brd_led_toggle(brd_led0); /点亮二极管0,表示录音开始 data = *(volatile u16*)drr1_addr(handset_codec); /从handset处读取采样 temp1=data2alaw(data); /对采样进行a律压缩 /*/* 把低地址数据放在高八位 高地址数据放在低八位 */ /*/ i=i+1; if(i%2=1) bufferj=(temp1=44000) i=0;if(j=22000)j=0;brd_led_toggle(brd_led0); /熄灭数码管0 表示录音结束brd_led_toggle(brd_led1); /点亮二极管1 表示放音开始 /*/* 放音部分 */*/ for(k=0;k8)&0x0ff;elsetemp2=bufferl&0x0ff;l+;if(l=22000)l=0;data1=alaw2data(temp2); while (!mcbsp_xrdy(handset_codec) ; *(volatile u16*)dxr1_addr(handset_codec) = data1; /*/* 放音结束 */*/if(k=44000) brd_led_toggle(brd_led1); /熄灭二极管1 表示放音结束 /主程序结束/*/ /* 子函数 */ /*/*延时*/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);delay(1000);brd_led_toggle(brd_led1);delay(1000);brd_led_toggle(brd_led2);delay(1000);/*初始化codec*/void initcodec(void) /* open handset codec */ hhandset = codec_open(handset_codec); / acquire handle to codec /* set codec parameters */ 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) 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 1) & quant_mask;elseaval |= (pcm_val seg) & quant_mask;return (aval mask);/*alaw的子程序*/static int search(int val,short *table,int size)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) seg_shift;if(seg=0) t += 8;t=(t3);if(seg0) t +=0x108;t=(t(4-seg);if(seg3)t+=0x108;t=(t 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七、ccs程序调试与结果1、启动setup ccs程序设置ccs的环境。选择浮动菜单import configuration-available configuration 列表中,然后选中c5402 device simulator (没接dsk板时)、c5402 dsk via parallel port emulation (接dsk板时)。选中import,最后选中save and quit以保存目标dsp的配置。2、运行ccs2(5000),出现ccs界面。新建一个工程,向工程中添加c语言程序文件、cmd程序、头文件和库文件。 c程序运行支持库: c:ti c5400cgtools rts.lib相关的头文件 c:ti c5400cgtoolsinclude*.h dsk板库文件: c:ti c5400dsk5402 drv5402.lib,dsk5402.lib相关的头文件 c:ti c5400dsk5402include*.h在程序中还用到其他头文件:#include #include #include #include c语言程序文件、cmd程序和库文件的加入可通过project里的add files to project找到相应的文件直接加入。最好是将.h和.lib文件都拷贝到自己的工程中,或者在ccs的example中进行调试、编译,这样一般就不会出现找不到头文件的错误信息。当汇编出现找不到头文件的错误时,如下图。这时需要通过build options里的“include searchpath(i)option”加入头文件所指定的位置。如下图:3、程序汇编、链接
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 论旅游保险的现状与创新
- 公司职能发挥管理制度
- 公司责权体系管理制度
- 2025国内货物买卖合同示范文本
- 福建省部分高中2024-2025学年高二下册3月联考数学试卷附解析
- 北京市2024~2025学年 高一下册第五学段数学试卷附解析
- 安徽省蚌埠市2023−2024学年高二下册7月期末学业水平监测数学试卷附解析
- 2024年深圳市大鹏新区区属公办中小学招聘教师真题
- 员工素质报告评语
- 射频传感器技术基础知识点归纳
- 我的家乡山东枣庄
- 铁路专业职业生涯规划书
- 部编版课件-道德与法治九年级上册课件第五课第一框延续文化血脉
- 公司账户公安解冻申请书
- 《危险化学品仓库企业安全风险评估细则(试行)》解读
- 电子警察系统维护与管理方案
- 2024年辽宁省中考数学真题卷及答案解析
- 新教科版小学1-6年级科学需做实验目录
- 信息工程部岗位职责表、绩效评估表
- 建筑地基处理技术规范JGJ79-2002
- 办公区改造合同协议书
评论
0/150
提交评论