实验2-音频DSP程序编写与调试
更新时间:2023-04-26 17:28:01 阅读量: 实用文档 文档下载
!
广州大学学生实验报告
开课学院及实验室:机电学院电子楼501 2018年 5 月 11 日
学院机械与电气工
程学院
年级、专
业、班
电信151
姓
名
!
苏伟强
学号51
实验课程名称音频DSP技术与应用成绩
实验项目名称%
实验二音频DSP程序编写与调试指导
老师
张承云
一、实验目的
1.掌握DSP程序的编写方法,调试方法,烧写方法。
二、实验设备
1.软件:VisualDSP++和matlab
2.¥
3.硬件:ADSP-21489 EZ-Borad开发板
三、实验内容
1.软件仿真
a.使用VisualDSP++目录下的例程21489 AD1939 Block-Based Talkthru 48 or 96kHz,将实验文
件夹exp2目录下的和拷贝到该工程文件夹下,并且将代替为exp2中的,在VisualDSP++打开,设置为
软件仿真模式(添加新的simulation的section),编译该程序,如Fig. 1所示。
b.如Fig. 1所示,程序编译通过,说明程序没有语法错误,但是这并不意味着程序的算法没有问
题,即我们无法知道算法能不能达到预期的效果,所以我们需要进行模拟数据仿真。在程序中,数据
的输入和输出都是以变量的形式表示的,所以我们需要用我们的模拟数据对这些变量进行初始化,这
就需要数据流的设置了,数据流是有方向的(source->destination),可以实现数据从source 到
destination的传递,这也是所谓“流”的概念。点击settings\streams\add添加流,弹出add stream
对话框设置流的source和destination,source和destination可以是数据文件,也可以是变量。在
本实验中,我们将添加数据从文件传递到输入变量DataIn,实现输入变量的数据初始化;添加输出变
量DataOut传递到文件的流实现输出变量的文件存储。如所示
Fig. 1 编译工程
&
Fig. 2 添加数据文件导入流和处理结果导出流
c.在语句processData(input,output,N)添加断点,调试,在断点处停下后,在expression数据查看框查看输入数据input ,使用matlab打开文件,对比数据input和中的数据,如所示,发现两个一样,证明我们之前设置的原始数据输出入流有效。(从文件传递到输入变量DataIn)
Fig. 3 input和对比
d.删除断点,执行完程序,将文件文件输入到matlab,采样频率为48kHz,绘图,如所示,现在可
以知道程序的作用是将输入音频衰减一半。
,
Fig. 4 matlab绘制和,采样频率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文件夹下的,拷贝到该工程文件夹中。并且在VisualDSP++项目目录中右键Add
File(s) to Folder往工程中添加前述两个文件。
d.在文件中,找出以下代码并且去掉前面的注释符
extern void multiply(float inputdata ,float outputdata);
multiply (inputD, outputD);
】
在文件中,将以下代码的注释符去掉
void multiply(float inputdata ,float outputdata)
{
outputdata=*inputdata;
}
编译连接程序,并且运行,发现没有声音,原因是multiply 函数实际上并未将处理完后的数据赋值给outputD,只对临时变量outputD进行赋值,而临时变量outputD将在函数结束后释放内存。
e.在文件中,找出以下代码并且去掉前面的注释符
extern void multiply(float inputdata ,float* outputdata);
`
multiply (inputD, &outputD);
在文件中,将以下代码的注释符去掉
void multiply(floa* inputdata ,float* outputdata)
{
*outputdata=*inputdata;
}
编译连接程序,并且运行,发现没有声音,原因是multiply 函数将处理完后的数据赋值给outputD,这里的临时变量为指针类型,通过这个临时变量在内存中索引到变量的值并进行赋值操作,然后函
数结束后释放这个指针,然而这并不影响outputD在内存中的数据已经被修改了的事实。
f.\
g.在文件中,找出以下代码并且去掉前面的注释符
extern void multiply(float* inputdata ,float* outputdata);
multiply (&inputD, &outputD);
在文件中,将以下代码的注释符去掉
void multiply(float* inputdata ,float* outputdata)
{
*outputdata=*(*inputdata);
}
h.%
i.编译连接程序,并且运行,发现没有声音,原因与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 选择编译输出类型为ldr
(
Fig. 6 启动类型为并行端口
b.选择tool->flash programmer。在driver选项卡,选择驱动文件.dxe,点击load driver加载驱动;
在programming选项卡中选择你要烧写的.ldr文件,并且点击烧写(program),等待进度条跑完,完
成烧写。
c.脱机运行开发板,输入音频可以听到声音,说明程序烧写完成。
四、(
五、实验分析
六、实验总结与体会
a.如图是该实验一个工程文件的目录,主要包含头文件,源文件,还有连接文件。头文件主要用来防止
硬件声明例如AD芯片ad1939和DSP芯片21489;源文件主要用来放置头文件中函数的实现,和一些硬件初始
化函数的实现,比方说端口初始化,1939和锁相环初始化, , 还有处理函数源文件,处理模块文件也有主函
数,这里是程序的入口点。
Fig. 7 工程目录
b.在编写DSP程序的时候,对于初学者,可以利用现成的程序框架,比方说本实验的直通程序21489
AD1939 Block-Based Talkthru 48 or 96kHz,修改里面的文件可以实现简单的DSP算法。需要注意的是,在
进行音频处理的时候,如果将音频传入函数中进行处理并返回的话,需传入指针类型的变量,这样才能在函
数中使用这个指针索引到内存并且处理其值。
c.在将程序烧写到板前,往往需要对程序的可行性进行验证,这时候常常使用软件仿真的方法,通过设
置数据流的途径,将模拟数据输入到程序中,并且通过数据流的形式,将处理结果输出到数据文件中,配合
matlab将处理前后数据文件显示出来进行分析,确定达到算法预期结果后可以将程序烧写进开发板,进行脱
机运行。
d.在软件仿真section中,程序编译通过,说明程序没有语法错误,但是这并不意味着程序的算法没有
问题,即我们无法知道算法能不能达到预期的效果,所以我们需要进行模拟数据仿真。
e.¥
f.数据流是有方向的(source->destination),可以实现数据从source 到destination的传递,这也
是所谓“流”的概念。点击settings\streams\add添加流,弹出add stream对话框设置流的source和
destination,source和destination可以是数据文件,也可以是变量。
D
七、实验完成后实验器材照片
Fig. 8 硬件连接图
Fig. 9 实验完成后设备整理图
正在阅读:
实验2-音频DSP程序编写与调试04-26
发电厂安全检查表01-25
2017年陕西省宝鸡市金台区高一下学期期末数学试卷与解析答案12-31
第八届飞思卡尔智能车竞赛摄像头组浙工大银江逐梦队技术报告12-07
中国信贷风险专题分析报告2015年第04期—顶风作案:商业银行柜面业务操作风险案例集萃09-16
药品质量管理制度汇编10-20
管廊废旧管线拆除风险分析及对策措施06-01
庙子小学德育工作计划103-08
2020“延安精神”专题培训心得体会三篇09-10
- 教学能力大赛决赛获奖-教学实施报告-(完整图文版)
- 互联网+数据中心行业分析报告
- 2017上海杨浦区高三一模数学试题及答案
- 招商部差旅接待管理制度(4-25)
- 学生游玩安全注意事项
- 学生信息管理系统(文档模板供参考)
- 叉车门架有限元分析及系统设计
- 2014帮助残疾人志愿者服务情况记录
- 叶绿体中色素的提取和分离实验
- 中国食物成分表2020年最新权威完整改进版
- 推动国土资源领域生态文明建设
- 给水管道冲洗和消毒记录
- 计算机软件专业自我评价
- 高中数学必修1-5知识点归纳
- 2018-2022年中国第五代移动通信技术(5G)产业深度分析及发展前景研究报告发展趋势(目录)
- 生产车间巡查制度
- 2018版中国光热发电行业深度研究报告目录
- (通用)2019年中考数学总复习 第一章 第四节 数的开方与二次根式课件
- 2017_2018学年高中语文第二单元第4课说数课件粤教版
- 上市新药Lumateperone(卢美哌隆)合成检索总结报告
- 调试
- 编写
- 音频
- 实验
- 程序
- DSP
- 新编英语教程6第三版练习册答案
- 2015年证券从业资格考试《证券投资基金》【历年真题+章节题库+考
- 高考冲刺复习--陪你冲刺100天之“每日鲜素材”03.06
- 注册岩土工程师专业考试复习方法
- 中学XX——XX学年上期中层干部反思会发言稿
- 管道大开挖穿越公路施工方案
- 选修四原电池说课稿
- 2018年宝鸡高三教学质量检测试卷分析
- 山东省公开选拔镇副科级领导干部最新考试试题库
- 中华人民共和国职业病防治法知识竞赛
- 计算机指导应用专业求职简历
- 九年级数学下册2.2二次函数图象与性质教案3(新版)北师大版
- 动物的主要类群初二上册生物知识点
- 桩基施工组织设计方案
- 再生资源交易大市场建设项目可研报告
- 3位代码类目表(ICD-10)
- 2016年超星尔雅大学生安全教育完整版答案
- 离散事件建模及仿真
- 55【解析版】2013年广西钦州市中考数学试卷及答案
- 导师对毕业生的评语及从事工作的建议