欢迎来到天天文库
浏览记录
ID:59827975
大小:529.50 KB
页数:3页
时间:2020-11-25
《实验2-音频DSP程序编写与调试.doc》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、广州大学学生实验报告开课学院及实验室:机电学院电子楼5012018年5月11日学院机械与电气工程学院年级、专业、班电信151姓名苏伟强学号实验课程名称音频DSP技术与应用成绩实验项目名称实验二音频DSP程序编写与调试指导老师张承云一、实验目的1.掌握DSP程序的编写方法,调试方法,烧写方法。二、实验设备1.软件:VisualDSP++5.1.2和matlab2.硬件:ADSP-21489EZ-Borad开发板三、实验内容1.软件仿真a.使用VisualDSP++目录下的例程21489AD1939Blo
2、ck-BasedTalkthru48or96kHz,将实验文件夹exp2目录下的in.dat和sin2.dat拷贝到该工程文件夹下,并且将main.c代替为exp2中的simMain.c,在VisualDSP++打开,设置为软件仿真模式(添加新的simulation的section),编译该程序,如Fig.1所示。b.如Fig.1所示,程序编译通过,说明程序没有语法错误,但是这并不意味着程序的算法没有问题,即我们无法知道算法能不能达到预期的效果,所以我们需要进行模拟数据仿真。在程序中,数据的输入和输出
3、都是以变量的形式表示的,所以我们需要用我们的模拟数据对这些变量进行初始化,这就需要数据流的设置了,数据流是有方向的(source->destination),可以实现数据从source到destination的传递,这也是所谓“流”的概念。点击settingsstreamsadd添加流,弹出addstream对话框设置流的source和destination,source和destination可以是数据文件,也可以是变量。在本实验中,我们将添加数据从文件in.dat传递到输入变量DataIn,实
4、现输入变量的数据初始化;添加输出变量DataOut传递到文件out.dat的流实现输出变量的文件存储。如所示Fig.1编译工程Fig.2添加数据文件导入流和处理结果导出流c.在语句processData(input,output,N)添加断点,调试,在断点处停下后,在expression数据查看框查看输入数据input,使用matlab打开文件in.dat,对比数据input和in.dat中的数据,如所示,发现两个一样,证明我们之前设置的原始数据输出入流有效。(从文件in.dat传递到输入变量Data
5、In)Fig.3input和in.dat对比d.删除断点,执行完程序,将in.dat文件out.dat文件输入到matlab,采样频率为48kHz,绘图,如所示,现在可以知道程序的作用是将输入音频衰减一半。Fig.4matlab绘制in.dat和out.dat,采样频率48kHz1.硬件仿真a.使用usb-JTAG线连接PC与21489开发板,开发板电源线连接电源,使用手机或者其他音频输出设备通过RCA音频线(RadioCorporationofAmerican莲花插座)输入音频到开发板(底层1L,1
6、R),使用耳机接听输出音频(中间层1L,1R)。b.使用VisualDSP++目录下的例程21489AD1939Block-BasedTalkthru48or96kHz,添加新的section硬件仿真(EZ-KITLite),取消所有断点,编译运行,用耳机听到了手机播放的音频。c.将实验材料exp2文件夹下的Multiply.c,blockProcess_audio.c拷贝到该工程文件夹中。并且在VisualDSP++项目目录中右键AddFile(s)toFolder往工程中添加前述两个文件。d.在b
7、lockProcess_audio.c文件中,找出以下代码并且去掉前面的注释符externvoidmultiply(floatinputdata,floatoutputdata);multiply(inputD,outputD);在multiply.c文件中,将以下代码的注释符去掉voidmultiply(floatinputdata,floatoutputdata){outputdata=0.5*inputdata;}编译连接程序,并且运行,发现没有声音,原因是multiply函数实际上并未将处理完
8、后的数据赋值给outputD,只对临时变量outputD进行赋值,而临时变量outputD将在函数结束后释放内存。e.在blockProcess_audio.c文件中,找出以下代码并且去掉前面的注释符externvoidmultiply(floatinputdata,float*outputdata);multiply(inputD,&outputD);在multiply.c文件中,将以下代码的注释符去掉voidmultiply(floa*inputda
此文档下载收益归作者所有