实验2-音频DSP程序编写与调试.doc
3页广州大学学生实验报告开课学院及实验室:机电学院 电子楼501 2018年 5 月 11 日学院机械与电气工程学院年级、专业、班电信151姓名苏伟强学号实验课程名称音频DSP技术与应用成绩实验项目名称实验二 音频DSP程序编写与调试指导老师张承云1、 实验目的1. 掌握DSP程序的编写方法,调试方法,烧写方法2、 实验设备1. 软件:VisualDSP++5.1.2和matlab2. 硬件:ADSP-21489 EZ-Borad开发板3、 实验内容1. 软件仿真a. 使用VisualDSP++目录下的例程21489 AD1939 Block-Based Talkthru 48 or 96kHz,将实验文件夹exp2目录下的in.dat和sin2.dat拷贝到该工程文件夹下,并且将main.c代替为exp2中的simMain.c,在VisualDSP++打开,设置为软件仿真模式(添加新的simulation的section),编译该程序,如Fig. 1所示b. 如Fig. 1所示,程序编译通过,说明程序没有语法错误,但是这并不意味着程序的算法没有问题,即我们无法知道算法能不能达到预期的效果,所以我们需要进行模拟数据仿真。
在程序中,数据的输入和输出都是以变量的形式表示的,所以我们需要用我们的模拟数据对这些变量进行初始化,这就需要数据流的设置了,数据流是有方向的(source->destination),可以实现数据从source 到destination的传递,这也是所谓“流”的概念点击settings\streams\add添加流,弹出add stream对话框设置流的source和destination,source和destination可以是数据文件,也可以是变量在本实验中,我们将添加数据从文件in.dat传递到输入变量DataIn,实现输入变量的数据初始化;添加输出变量DataOut传递到文件out.dat的流实现输出变量的文件存储如所示Fig. 1 编译工程Fig. 2 添加数据文件导入流和处理结果导出流c. 在语句processData(input,output,N)添加断点,调试,在断点处停下后,在expression数据查看框查看输入数据input ,使用matlab打开文件in.dat,对比数据input和in.dat中的数据,如所示,发现两个一样,证明我们之前设置的原始数据输出入流有效。
从文件in.dat传递到输入变量DataIn)Fig. 3 input和in.dat对比d. 删除断点,执行完程序,将in.dat文件out.dat文件输入到matlab,采样频率为48kHz,绘图,如所示,现在可以知道程序的作用是将输入音频衰减一半Fig. 4 matlab绘制in.dat和out.dat,采样频率48kHz 2. 硬件仿真a. 使用usb-JTAG线连接PC与21489 开发板,开发板电源线连接电源,使用或者其他音频输出设备通过RCA音频线(Radio Corporation of American莲花插座)输入音频到开发板(底层1L,1R),使用耳机接听输出音频(中间层1L,1R)b. 使用VisualDSP++目录下的例程21489 AD1939 Block-Based Talkthru 48 or 96kHz,添加新的section硬件仿真(EZ-KIT Lite),取消所有断点,编译运行,用耳机听到了播放的音频c. 将实验材料exp2文件夹下的Multiply.c,blockProcess_audio.c拷贝到该工程文件夹中并且在VisualDSP++项目目录中右键Add File(s) to Folder往工程中添加前述两个文件。
d. 在blockProcess_audio.c文件中,找出以下代码并且去掉前面的注释符extern void multiply(float inputdata , float outputdata);multiply (inputD, outputD);在multiply.c文件中,将以下代码的注释符去掉void multiply(float inputdata , float outputdata){ outputdata=0.5*inputdata;}编译连接程序,并且运行,发现没有声音,原因是multiply 函数实际上并未将处理完后的数据赋值给outputD,只对临时变量outputD进行赋值,而临时变量outputD将在函数结束后释放内存e. 在blockProcess_audio.c文件中,找出以下代码并且去掉前面的注释符extern void multiply(float inputdata , float* outputdata);multiply (inputD, &outputD);在multiply.c文件中,将以下代码的注释符去掉void multiply(floa* inputdata , float* outputdata){ *outputdata=0.5*inputdata;}编译连接程序,并且运行,发现没有声音,原因是multiply 函数将处理完后的数据赋值给outputD,这里的临时变量为指针类型,通过这个临时变量在内存中索引到变量的值并进行赋值操作,然后函数结束后释放这个指针,然而这并不影响outputD在内存中的数据已经被修改了的事实。
f. 在blockProcess_audio.c文件中,找出以下代码并且去掉前面的注释符extern void multiply(float* inputdata , float* outputdata);multiply (&inputD, &outputD);在multiply.c文件中,将以下代码的注释符去掉void multiply(float* inputdata , float* outputdata){ *outputdata=0.5*(*inputdata);}g. 编译连接程序,并且运行,发现没有声音,原因与e所述大致相同,只是其增加了指向inputdata 的指针临时变量,并且通过指针访问inputdata,由于inputdata 实际上并不需要修改,只用于输入的源数据,和中间处理数据,所以通过临时变量指定和通过临时指针变量指定,在函数结束后释放临时变量,也不会影响outputdata结果,因为在释放之前临时变量已经完成了参与产生outputdata的任务 3. 程序烧写a. 继续步骤2硬件仿真程序,在project->project options中选择编译输出类型为载入文件(即loader file),选择硬件平台21489如Fig. 5所示;在Load选项中选择启动类型(boot type)为并行端口(parallel port),如Fig. 6。
回到项目中,点击编译,即可在项目目录生成.ldr文件Fig. 5 选择编译输出类型为ldrFig. 6 启动类型为并行端口b. 选择tool->flash programmer在driver选项卡,选择驱动文件.dxe,点击load driver加载驱动;在programming选项卡中选择你要烧写的.ldr文件,并且点击烧写(program),等待进度条跑完,完成烧写c. 脱机运行开发板,输入音频可以听到声音,说明程序烧写完成4、 实验分析5、 实验总结与体会a. 如图是该实验一个工程文件的目录,主要包含头文件,源文件,还有连接文件头文件主要用来防止硬件声明例如AD芯片ad1939和DSP芯片21489;源文件主要用来放置头文件中函数的实现,和一些硬件初始化函数的实现,比方说端口初始化SPORT1_isr.c,1939和锁相环初始化init_PLL.c, init1939.c, 还有处理函数源文件multiply.c,处理模块文件blockProcess_audio.c也有主函数Main.c,这里是程序的入口点Fig. 7 工程目录b. 在编写DSP程序的时候,对于初学者,可以利用现成的程序框架,比方说本实验的直通程序21489 AD1939 Block-Based Talkthru 48 or 96kHz,修改里面的multiply.c文件可以实现简单的DSP算法。
需要注意的是,在进行音频处理的时候,如果将音频传入函数中进行处理并返回的话,需传入指针类型的变量,这样才能在函数中使用这个指针索引到内存并且处理其值c. 在将程序烧写到板前,往往需要对程序的可行性进行验证,这时候常常使用软件仿真的方法,通过设置数据流的途径,将模拟数据输入到程序中,并且通过数据流的形式,将处理结果输出到数据文件中,配合matlab将处理前后数据文件显示出来进行分析,确定达到算法预期结果后可以将程序烧写进开发板,进行脱机运行d. 在软件仿真section中,程序编译通过,说明程序没有语法错误,但是这并不意味着程序的算法没有问题,即我们无法知道算法能不能达到预期的效果,所以我们需要进行模拟数据仿真e. 数据流是有方向的(source->destination),可以实现数据从source 到destination的传递,这也是所谓“流”的概念点击settings\streams\add添加流,弹出add stream对话框设置流的source和destination,source和destination可以是数据文件,也可以是变量D6、 实验完成后实验器材照片Fig. 8 硬件连接图Fig. 9 实验完成后设备整理图。

卡西欧5800p使用说明书资料.ppt
锂金属电池界面稳定化-全面剖析.docx
SG3525斩控式单相交流调压电路设计要点.doc
话剧《枕头人》剧本.docx
重视家风建设全面从严治党治家应成为领导干部必修课PPT模板.pptx
黄渤海区拖网渔具综合调查分析.docx
2024年一级造价工程师考试《建设工程技术与计量(交通运输工程)-公路篇》真题及答案.docx
【课件】Unit+3+Reading+and+Thinking公开课课件人教版(2019)必修第一册.pptx
嵌入式软件开发流程566841551.doc
生命密码PPT课件.ppt
爱与责任-师德之魂.ppt
制冷空调装置自动控制技术讲义.ppt


