乐曲硬件演奏电路设计-verilog

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

EDA技术及创新实践(设计报告)题目:乐曲硬件演奏电路设计姓名:漩涡鸣人学院:数理与信息工程学院专业:电子科学与技术班级:112学号:1886****20指导教师:汤大智2014年6月第1页共14页一、设计目的及要求实验目的:1、理解音乐演奏的原理及分频器的原理与使用。2、了解怎样控制音调的高低变化和音长,从而完成乐曲的自动循环演奏。3、培养自主学习、正确分析和解决问题的能力。要求:利用分频器设计硬件乐曲演奏电路;能通过数码管显示动态效果;通过一个开关实现两首乐曲的切换;在音乐播放的同时,会有led流水灯的闪烁。二、设计原理乐曲演奏的原理是这样的:组成乐曲的每个音符的频率值(音调)及其持续的时间(音长)是乐曲能连续演奏所需的两个基本数据,因此只要控制输出到扬声器的激励信号频率的高低和持续的时间,就可以使扬声器发出连续的乐曲声。图1、顶层模块图其中,乐谱产生电路用来控制音乐的音调和音长。控制音调通过设置计数器的预置数来实现,预置不同的数值可以使计数器产生不同频率的信号,从而产生不同的音调。控制音长是通过控制计数器预置数的停留时间来实现的,预置数停留的时间越长,则该音符演奏的时间越长。每个音符的演奏时间都是0.25s的整数倍,对于节拍较长的音符,如2分音符,在记谱时将该音名连续记录两次即可。1、音调的控制频率的高低决定了音调的高低。音乐的十二平均率规定:每两个8度音(如简谱中的中音1与高音1)之间的频率相差一倍。在两个8度音之间,又可分为12个半音,每两个半音的频率比为12√2。另外,音名A(简谱中的低音6)的频率为440Hz,音名B到C之间、E到F之间为半音,其余为全音[4]。由此可以第2页共14页计算出简谱中从低音1至高音1之间每个音名对应的频率,如表2所示:表2简谱中的音名与频率的关系音名频率/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所有不同频率的信号都是从同一个基准频率分频得到的。由于音阶频率多为非整数,而分频系数又不能为小数,故必须将计算得到的分频数四舍五入取整。若基准频率过低,则由于分频比太小,四舍五入取整后的误差较大;若基准频率过高,虽然误差变小,但分频数将变大。实际的设计综合考虑这两方面的因素,在尽量减小频率误差的前提下取合适的基准频率。本例中选取6MHz为基准频率。若无6MHz的基准频率,则可以先分频得到6MHz,或换一个新的基准频率。实际上,只要各个音名间的相对频率关系不变,演奏出的乐曲听起来都不会走调。本例需要演奏的是梁祝乐曲,该乐曲各音阶频率及相应的分频比如表2所示。为了减小输出的偶次谐波分量,最后输出到扬声器的波形应为对称方波,因此在到达扬声器之前,有一个二分频的分频器。表2中的分频比就是从6MHz频率二分频得到的3MHz频率基础上计算得出的。由于最大的分频系数为9102,故采用14位二进制计数器分频可满足需要。在表2中,除给出了分频比以外,还给出了对应于各个音阶频率时计数器不同的预置数。对于不同的分频系数,只要加载不同的预置数即可。采用加载预置数实现分频的方法比采用反馈复零法节省资源,实现起来也容易一些,如表3所示:表3各音阶频率对应的分频比及预置数音名分频比预置数音名分频比预置数低音391027281中音2511111272低音576538730中音3455211831低音668189565中音5382712556低音7607310310中音6340912974中音1573610647高音1286713516此外,对于乐曲中的休止符,只要将分频系数设为0,即初始值为2141=16383即可,此时扬声器将不会发声。音长的控制音符的持续时间必须根据乐曲的速度及每个音符的节拍数来确定。本例演奏第3页共14页的梁祝片段,最短的音符为4分音符,如果将全音符的持续时间设为1s的话,则只需要再提供一个4Hz的时钟频率即可产生4分音符的时长。三、底层模块设计由顶层模块图可以看到本方案分成8个模块。1、48MHz分频成12MHz波形分频器,源代码和顶层模块如下//48mhz分成12mhz的分频模块modulediv_clk12mhz(clk_48mhz,clk_12mhz);inputclk_48mhz;outputclk_12mhz;regclk_12mhz;reg[21:0]cnt;always@(posedgeclk_48mhz)if(cnt1)cnt=cnt+1;//(48mhz/12mhz=4,cnt[4/2-1=1])elsebegincnt=0;clk_12mhz=!clk_12mhz;endendmodule2、12MHz分频成6MHz波形分频器,源代码和顶层模块如下://12mhz分成6mhz的分频模块,提供给song模块modulediv_clk6mhz(clk_12mhz,clk_6mhz);inputclk_12mhz;outputclk_6mhz;regclk_6mhz;regcnt;always@(posedgeclk_12mhz)clk_6mhz=!clk_6mhz;endmodule3、12MHz分频成4Hz波形分频器,源代码和顶层模块如下://12mhz分成4hz的分频模块,提供给song模块modulediv_clk4hz(clk_12mhz,clk_4hz);inputclk_12mhz;outputclk_4hz;regclk_4hz;reg[21:0]cnt;always@(posedgeclk_12mhz)if(cnt1499999)cnt=cnt+1;//(12mhz/4hz=3000000,cnt[3000000/2-1=1499999])elsebegincnt=0;clk_4hz=!clk_4hz;第4页共14页endendmodule4、12MHz分频成1mhz波形分频器,源代码和顶层模块如下://12mhz分成1mhz的分频模块,提供给quma模块modulediv_clk1mhz(clk_12mhz,clk_1mhz);inputclk_12mhz;outputclk_1mhz;regclk_1mhz;reg[21:0]cnt;always@(posedgeclk_12mhz)if(cnt5)cnt=cnt+1;//(12mhz/1mhz=12,cnt[12/2-1=5])elsebegincnt=0;clk_1mhz=!clk_1mhz;endendmodule5、12MHz分频成1khz波形分频器,源代码和顶层模块如下://12mhz分成1khz的分频模块,提供给quma模块modulediv_clk1khz(clk_12mhz,clk_1khz);inputclk_12mhz;outputclk_1khz;regclk_1khz;reg[21:0]cnt;always@(posedgeclk_12mhz)if(cnt5999)cnt=cnt+1;//(12mhz/1khz=12000,cnt[12000/2-1=5999])elsebegincnt=0;clk_1khz=!clk_1khz;endendmodule6、song模块源代码和顶层模块如下://音乐产生模块modulesong(clk_6mhz,clk_4hz,speaker,high,med,low,k);inputclk_6mhz,clk_4hz;inputk;outputspeaker;output[3:0]high,med,low;reg[3:0]high,med,low;第5页共14页reg[13:0]divider,origin;reg[9:0]counter;regspeaker;wirecarry;assigncarry=(divider==16383);always@(posedgeclk_6mhz)beginif(carry)divider=origin;elsedivider=divider+1;endalways@(posedgecarry)beginspeaker=~speaker;endalways@(posedgeclk_4hz)begincase({high,med,low})'b000000000011:origin=7281;//低音3'b000000000101:origin=8730;//低音5'b000000000110:origin=9565;//低音6'b000000000111:origin=10310;//低音7'b000000010000:origin=10647;//中音1'b000000100000:origin=11272;//中音2'b000000110000:origin=11831;//中音3'b000001010000:origin=12556;//中音5'b000001100000:origin=12974;//中音6'b000001110000:origin=13347;//中音7'b000100000000:origin=13516;//高音1'b000000000000:origin=16383;//休止符endcaseendalways@(posedgeclk_4hz)if(k==0)beginif(counter==149)counter=0;elsecounter=counter+1;case(counter)//记谱0:{high,med,low}='b000000000011;//低音31:{high,med,low}='b000000000011;//持续4个时钟节拍2:{high,med,low}='b000000000011;3:{high,med,low}='b000000000011;4:{high,med,low}='b000000000101;//低音55:{high,med,low}='b000000000101;//发3个时钟节拍6:{high,med,low}='b000000000101;7:{high,med,low}='b000000000110;//低音68:{high,med,low}='b000000010000;//中音19:{high,med,low}='b000000010000;//发3个时钟节拍10:{high,med,low}='b000000010000;11:{high,med,low}='b000000100000;//中音212:{high,med,low}='b000000000110;//低音613:{high,med,low}='b000000010000;//中音114:{high,med,low}='b000000000101;//低音515:{high,med,low}='b000000000101;16:{high,med,low}='b000001010000;//中音517:{high,med,low}='b000001010000;//发3个时钟节拍18:{high,med,low}='b000001010000;19:{high,med,low}='b000100000000;//高音120:{high,med,low}='b000001100000;//中音621:{high,med,low}='b000001010000;//中音522:{high,med,low}='b000000110000;//中音3第6页共14页23:{high,med,low}='b000001010000;//中音524:{high

1 / 14
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功