蜂鸣器实验报告_第1页
蜂鸣器实验报告_第2页
蜂鸣器实验报告_第3页
蜂鸣器实验报告_第4页
蜂鸣器实验报告_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

实验报告实验名称:实验名称:[蜂鸣器音乐发生器实验]姓名:学号:指导教师:实验时间:[2013年6月15日]信息与通信工程学院信息与通信工程学院1实验要求用所学知识和编程技巧,编写一段程序,实现用蜂鸣器演奏一首歌曲。按下(sw2)按键,蜂鸣器唱出一首歌,歌曲可以自己选择,主要是通过不同的频率来实现不同的音调。2实验原理2.1蜂鸣器类型蜂鸣器主要分为压电式蜂鸣器和电磁式蜂鸣器两种类型。1、压电式蜂鸣器主要由多谐振荡、压电蜂鸣片、阻抗匹配器及共鸣箱、外壳等组成。多谐振荡器由晶体管或集成电路构成。当接通电源后(1.5~15V直流工作电压),多谐振荡器起振,输出1.5~2.5kHZ的音频信号,阻抗匹配器推动压电蜂鸣片发声。2、电磁式蜂鸣器由振荡器、电磁线圈、磁铁、振动膜片及外壳等组成。接通电源后,振荡器产生的音频信号电流通过电磁线圈,使电磁线圈产生磁场。振动膜片在电磁线圈和磁铁的相互作用下,周期性地振动发声。实验箱上蜂鸣器驱动原理:通过FPGA的143管脚驱动蜂鸣器发声,不同的频率使蜂鸣器发出不同的音调。2.2音乐歌曲元素一首歌曲由音调和节拍两个主要的元素组成。对于蜂鸣器来说,频率的高低决定了音调的高低。所有不同频率的信号都是从同一个基准频率分频得来的。由于音阶频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。若基准频率过低,则由于分频比太小,四舍五入取证后的误差较大。若基准频率过高,虽然误差变小,但分频数将变大。实际的设计在尽量减小频率误差的前提下去合适的基准频率。给蜂鸣器输入相应的频率,可以使其发出表中所示的低音、中音、高音的do~xi的声音。将其按照音乐演奏的规律组合,便可以得到所需要的乐曲。2.3任务原理2.3.1音调的控制

频率的高低决定了音调的高低。音乐的十二平均率规定;每两个8度音之间的频率相差1倍。在两个8度音之间,又可分为12个半音,每两个半音的频率比为。另外,音名A的频率为440Hz,音名B到C直接、E到F之间为半音,其余为全音。由此可以计算出简谱中从低音1至高音1之间每个音名对应的频率如表1中所示。音名频率/Hz音名频率/Hz音名频率/Hz低音1261.6中音1523.3高音11046.5低音2293.7中音2587.3高音21174.7低音3329.6中音3659.3高音31318.5低音4349.2中音4698.5高音41396.9低音5392中音5784高音51568低音6440中音6880高音61760低音7493.9中音7987.8高音71975.5表1简谱中的音名与频率的关系所有不同频率的信号都是从同一个基准频率分频的到,由于音阶频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。实际设计中,在尽量减小频率误差的前提下取适合的基准频率,本实验中取6MHz为基准频率。本题需要演奏的是两只老虎乐曲,该乐曲各音阶频率及相应的分频比如表2所示,为了减小输出的偶次谐波分量,最后输出到蜂鸣器的波形应为对称方波,因此在到达蜂鸣器之前,有一个二分频的分频器。音名分频比预置数音名分频比预置数低音391027281中音2511111272低音576538730中音3455211831低音668189565中音5382712556低音7607310310中音6340912974中音1573610647高音1286713516表2各音阶频率对应的分频比及预置数此外,对于乐曲中的休止符,只要将分频系数设为0,即初始值为2141=16383即可,此时蜂鸣器不会发声。2.3.2音长的控制音符的持续时间必须根据乐曲的速度及每个音符的节拍数来确定。本实验中最短的音符为4分音符,如果将全音符的持续时间设为1s的话,则只需要再提供一个4Hz的时钟频率即可产生4分音符的时长。如图1所示是乐曲演奏电路的原理框,其中,乐谱产生电路用来控制音乐的音调和音长。控制音调通过设置计数器来实现,预置不同的数值可以使计数器产生不同频率的信号,从而产生不同的音调。控制音长是通过控制计数器预置数的停留时间来实现,预置数停留时间越长,则该音符的演奏的时间越长。每个音符的演奏时间都是0.25s的整数倍,对于节拍长的音符,在记谱时可连续记录多次即可。2.4实验流程图图1乐曲演奏的电路原理框图3FPGA所用的管脚分配4实验结果:在编辑框内输入好程序以后,对程序进行编译,检查错误,无误后将其下载到实验箱后,即可实现演奏两只老虎歌曲,可用按键sw2对其进行控制,当按键按下后,停止演奏,否则一直循环演奏。5实验心得通过这次实验,第一、我学到了一个有时序功能的器件如何用verilog语言实现其功能。在阅读程序、修改程序的过程中我更加熟悉了verilog语言,掌握了基本的编写程序的技巧和能力。第二、我认识到了实际用软件实现相应功能,原理来源于数字电路的基础知识,但又区别与课本上的内容。而学习了verilog语言,我意识到,不能从原有的思维方式出发进行分析和编程,必须建立整体的概念,从输入输出的整体功能出发用程序建立模块。并通过模块和模块的嵌套或者连接实现相应功能。第三、通过修改程序的联系,我体会到了如何结合实际模块的时序功能用程序实现对器件的控制。为了在课堂上完成这次实验,课下真的需要下一番功夫。首先,自己认真提前学习的语言的编程,又在课上听老师讲解重点。课下自己编写了一些简单的小程序,以熟悉语言,但是在课上分析的整体程序还是有一定困难,在老师的讲解下,才慢慢理解。在理解的基础上修改程序很简单,但是想要自己独立编写这样一个程序,我想,还需要很长时间的实践才能得以实现。所以,还有许多需要努力的地方。通过这次实验,学到了很多东西,体会到了自己实现一个程序功能的小小喜悦,也认识到了自己只是FPGA道路上的新手,还有很多未知的知识需要学习。真正学习的历程需要在课下多下功夫,希望通过这学期的学习自己能熟练掌握一些编程的技术,培养良好的思维模式。6参考文献[1]王金明.《数字系统设计与VerilogHDL》第3版、第2版,电子工业出版社,2009、2005.TP271/W24.[2]夏宇闻.《Verilog数字系统设计教程》,北京航空航天大学出版社,第1、2版,2008.TP312VH/X31.[3]蒋璇,臧春华.《数字系统设计与PLD应用技术》,电子工业出版社,TP271/J63.[4]张前,王次炤,《音乐美学基础》,人民音乐出版社,1992.05,J601/Z22附录1:两只老虎曲谱图附录2:程序清单//音高与频率的对应关系//----------------------------------------------------------------------//| | 1| 2 | 3 |4 | 5 | 6 | 7 |//|低音|261.6Hz|293.7Hz|329.6Hz|349.2Hz|392Hz|440Hz|493.9Hz|//|中音|523.3Hz|587.3Hz|659.3Hz|698.5Hz|784Hz|880Hz|987.8Hz|//|高音|1045.5Hz|1174.7Hz|1318.5Hz|1396.9Hz|1568Hz|1760Hz|1975.5Hz|//----------------------------------------------------------------------module liangzhi(clk,beep); //模块名称song input clk; //系统时钟50MHz output beep; //蜂鸣器输出端reg beep_r; //寄存器reg[7:0]state; //乐谱状态机reg[15:0]count,count_end;reg[23:0]count1;//乐谱参数:D=F/2K(D:参数,F:时钟频率,K:音高频率)parameterL_5=16'd63776,//低音5 M_1=16'd47774, //中音1 M_2=16'd42568, //中音2 M_3=16'd37919, //中音3 M_4=16'd35791,//中音4 M_5=16'd31888, M_6 =16'd28409; //中音5 parameter TIME=12000000; //控制每一个音的长短(250ms) assignbeep=beep_r; //输出音乐always@(posedgeclk)begin count<=count+1'b1; //计数器加1 if(count==count_end) begin count<=16'h0; //计数器清零 beep_r<=!beep_r; //输出取反 endendalways@(posedgeclk)begin if(count1<TIME) //一个节拍250mS count1=count1+1'b1; else begin count1=24'd0; if(state==8'd35)//64个节拍后循环 state=8'd0; else state=state+1'b1; case(state) 8'd0: count_end=M_1;//中音"1",持续1个节拍 8'd1:count_end=M_2;//中音"2",持续1个节拍 8'd2:count_end=M_3;//中音"3",持续1个节拍 8'd3: count_end=M_1;//中音"1",持续2个节拍 8'd4:count_end=M_1; 8'd5: count_end=M_2; 8'd6: count_end=M_3; 8'd7: count_end=M_1; 8'd8:count_end=M_3; 8'd9: count_end=M_4; 8'd10,8'd11: count_end=M_5; 8'd12:count_end=M_3; 8'd13: count_end=M_4; 8'd14,8'd15: count_end=M_5; 8'd16:count_end=M_5; 8'd17: count_end=M_6; 8'd18:count_end=M_5; 8'd19:count_end=M_4; 8'd20: count_end=M_3; 8'd21: count_end=M_1; 8'd22: count_end=M_5; 8'd23: count_end=M_6; 8'd24:count_end=M_5; 8'd25: count_end=M_4; 8'd26: count_end=M_3; 8'd27:count_end=M_1; 8'd28:count_end=M_2

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论