梁祝基于Verilog HDL的演奏设计_第1页
梁祝基于Verilog HDL的演奏设计_第2页
梁祝基于Verilog HDL的演奏设计_第3页
梁祝基于Verilog HDL的演奏设计_第4页
梁祝基于Verilog HDL的演奏设计_第5页
已阅读5页,还剩11页未读 继续免费阅读

下载本文档

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

文档简介

1、设计题目:“梁祝乐曲发生器”一、 设计任务及要求:利用EDA/SOPC实验开发平台提供的16*16点阵LED以及EP2C35核心板,实现“梁祝”乐曲发生器。1、查阅相关资料,明确设计步骤;2、采用Verilog HDL编程语言设计程序;3、能够按照设定节拍(每拍持续1s)顺畅的播放“梁祝”乐曲并且听着基本无错;4、 扩张要求:自主设计(如快放、倒放、换歌等)。二、 设计原理及方案乐曲播放器的基本原理是,一个音符对应一个频率信号。频率的高低决定了音调的高低。音乐的十二个平均率规定:每两个八度音之间的频率相差一倍。在两个八度音之间又可以分为十二个半音,每两个半音的频率比为2.另外,音名A(简谱中的

2、低音6)的频率为440HZ,音名B到C之间、E到F之间为半音,其余为全音。由此可以计算出简谱中从低音1至高音1之间每个音名对应的频率,;利用高低音如下关系可得下表:低8度音:基本音频率/2 , 例如低音1的频率为523/2=261.5;高8度音:基本音频率2,例如高音1的频率为5232=1046音符与频率的对应关系如下音名频率(Hz)音名频率(Hz)音名频率(Hz)低音1261.5中音1523高音11046低音2293.5中音2587高音21174低音3329.5中音3659高音31318低音4349中音4698高音41396低音5392中音5784高音51568低音6440中音6880高音6

3、1760低音7499中音7998高音71996各音阶频率对应的分频比及预置数音名分频比预置数音名分频比预置数音名分频比预置数低音11912135中音19561091高音14781569低音21704343中音28521195高音24261621低音31517530中音37591288高音33791668低音41433614中音47161331高音43581689低音51276771中音56381409高音53191728低音61136911中音65681479高音62841763低音710021045中音75011546高音72501797对于乐曲中的休止符,只要将分频系数设为0,即初始值为1

4、047,此时扬声器不发音。从上表中可以看出,最大分频系数为1912,所以采用11位二进制计数器分频可满足需要。对于不同的分频系数,只要加载不同的预置数即可。采用加载预置数实现分频的方法比采用反馈复零法节约资源,实现起来也容易一些。音符的持续时间须根据乐曲的速度及每个音符的节拍数来确定。本设计中将全音的持续时间设为1s,提供的4Hz的时钟频率即可产生四分音符的时长。控制音长通过控制计数器预置数的停留时间来实现的,预置数停留的时间越长,则该音符演奏的时间也就越长。每个音符的演奏时间都是0.25s的整数倍,对于节拍较长的音符,如二分音符,在记谱时将该音名联系记录两次即可。对照以上规则可编制乐谱的程序

5、。为了减小输出的偶次谐波分量,最后输出到扬声器上的波形应为对称方波,因此在扬声器之前有一个二分频的分频器。为了使演奏能循环进行,需另外设置一个时长计数器,当乐曲演奏完成时,保证能自动从头开始演奏! 综上所述编制“梁祝”乐曲发生器需要编制分频器、11为计数器、乐谱等部分,综合以上各功能即可实现乐曲发生器。三、 电路设计与实现 电路原理图如下:1、外部输入脉冲信号时钟源(50Mhz)经分频器输出4Hz、1Mhz的脉冲信号,分别供控制器和受控器使用。2、控制器根据乐曲的节拍产生受控器所需要的预置值,乐曲的一拍持续1s。3、受控器在1MHz时钟信号的控制下从11位预置值开始做加1计数。输出并进行二分频

6、将输出信号分频。4、管脚对应表信号名称对应FPGA管脚名说明50MHzL1基准时钟OUH14扩张接口 JP3-80程序实现如下:module song (clk,speaker);input clk;output speaker;reg3:0 high,med,low;reg10:0 divider,origin;reg7:0 counter;reg speaker;reg5:0 count1;reg23:0 count2;reg clk_1mhz,clk_4hz;wire carry;always(posedge clk)/分频器设计1beginif(count1=49)begincount

7、1=count1+1;clk_1mhz=0;endelsebegincount1=0;clk_1mhz=1;endendalways(posedge clk)/分频器设计2beginif(count2=)begincount2=count2+1;clk_4hz=0;endelsebegincount2=0;clk_4hz=1;endendassign carry=(divider=2047);always(posedge clk_1mhz)begin if(carry) divider=origin; else divider=divider+1;endalways(posedge carry

8、)begin speaker=speaker;/2分频产生方波信号endalways(posedge clk_4hz)begincase(high,med,low)/分频比预置b0:origin=2047;b1:origin=135;b0:origin=343;b1:origin=530;b0:origin=614;b1:origin=771;b0:origin=911;b1:origin=1045;b0:origin=1091;b0:origin=1195;b0:origin=1288;b0:origin=1331;b0:origin=1409;b0:origin=1479;b0:origi

9、n=1546;b0:origin=1569;b0:origin=1621;b0:origin=1668;b0:origin=1689;b0:origin=1728;b0:origin=1763;b0:origin=1797;endcaseendalways (posedge clk_4hz)beginif(counter=214) counter=0; /计时,以实现循环演奏else counter=counter+1;case(counter) /记谱0: high,med,low=b0;/休止符1: high,med,low=b0;2: high,med,low=b0;/中音73: hig

10、h,med,low=b0;4: high,med,low=b0;/中音65: high,med,low=b0;6: high,med,low=b0;/中音77: high,med,low=b0;8: high,med,low=b0;/中音5,持续3个时钟节拍9 : high,med,low=b0;10: high,med,low=b0;11: high,med,low=b0;/中音612: high,med,low=b0;/中音413: high,med,low=b0;14: high,med,low=b0;/中音315: high,med,low=b0;16: high,med,low=b0

11、;/中音217: high,med,low=b0;/中音318: high,med,low=b0;/中音419: high,med,low=b0;/中音320: high,med,low=b0;/中音521: high,med,low=b0;22: high,med,low=b0;23: high,med,low=b0;/中音324: high,med,low=b0;25: high,med,low=b0;26: high,med,low=b0;27: high,med,low=b0;28: high,med,low=b0;29: high,med,low=b0;30: high,med,lo

12、w=b0;31: high,med,low=b0;32: high,med,low=b0;/中音1,持续6个时钟节拍33: high,med,low=b0;34: high,med,low=b0;35: high,med,low=b0;36: high,med,low=b0;37: high,med,low=b0;38: high,med,low=b0;/中音539: high,med,low=b0;40: high,med,low=b1;/低音741: high,med,low=b1;42: high,med,low=b0;/中音243: high,med,low=b0;44: high,m

13、ed,low=b0;/低音645: high,med,low=b0;46: high,med,low=b0;/中音147: high,med,low=b0;48: high,med,low=b1;/低音5,持续6个时钟节拍49: high,med,low=b1;50: high,med,low=b1;51: high,med,low=b1;52: high,med,low=b1;53: high,med,low=b1;54: high,med,low=b0;/低音655: high,med,low=b0;/中音156: high,med,low=b1;/低音5,持续8个时钟节拍57: high

14、,med,low=b1;58: high,med,low=b1;59: high,med,low=b1;60: high,med,low=b1;61: high,med,low=b1;62: high,med,low=b1;63: high,med,low=b1;64: high,med,low=b1;/低音3,无言开始,持续4个时钟节拍65: high,med,low=b1;66: high,med,low=b1;67: high,med,low=b1;68: high,med,low=b1;69: high,med,low=b1;70: high,med,low=b1;71: high,m

15、ed,low=b0;72: high,med,low=b0;/中音1发三个时钟节拍73: high,med,low=b0;74: high,med,low=b0;75: high,med,low=b0;76: high,med,low=b0;77: high,med,low=b0;78: high,med,low=b1;79: high,med,low=b1;80: high,med,low=b0;/中音5持续三个时钟节拍81: high,med,low=b0;82: high,med,low=b0;83: high,med,low=b0;/高音184: high,med,low=b0;85:

16、 high,med,low=b0;86: high,med,low=b0;87: high,med,low=b0;88: high,med,low=b0;/中音2持续8个时钟节拍89: high,med,low=b0;90: high,med,low=b0;91: high,med,low=b0;92: high,med,low=b0;93: high,med,low=b0;94: high,med,low=b0;95: high,med,low=b0;96: high,med,low=b0;97: high,med,low=b1;98: high,med,low=b1;99: high,me

17、d,low=b0;100: high,med,low=b0;101: high,med,low=b1;102: high,med,low=b1;103: high,med,low=b1;104: high,med,low=b0;105: high,med,low=b0;106: high,med,low=b0;107: high,med,low=b0;108: high,med,low=b0;109: high,med,low=b1;110: high,med,low=b1;111: high,med,low=b0;112: high,med,low=b0;113: high,med,low=

18、b0;114: high,med,low=b1;115: high,med,low=b0;116: high,med,low=b0;117: high,med,low=b1;/低音5持续8个时钟节拍118: high,med,low=b1;119: high,med,low=b1;120: high,med,low=b1;121: high,med,low=b1;122: high,med,low=b1;123: high,med,low=b1;124: high,med,low=b1;125: high,med,low= b0;126: high,med,low= b0;127: high,

19、med,low= b0;128: high,med,low= b0;129: high,med,low= b1;130: high,med,low= b1;131: high,med,low= b0;132: high,med,low= b0;133: high,med,low= b0;134: high,med,low= b0;135: high,med,low= b1;136: high,med,low= b1;137: high,med,low= b1;138: high,med,low= b1;139: high,med,low= b0;140: high,med,low= b0;14

20、1: high,med,low= b1;142: high,med,low= b1;143: high,med,low= b1;144: high,med,low= b1;145: high,med,low= b1;146: high,med,low= b0;147: high,med,low= b1;148: high,med,low= b0;149: high,med,low= b0;150: high,med,low= b0;151: high,med,low= b0;152: high,med,low= b0;153: high,med,low= b0;154: high,med,lo

21、w= b0;155: high,med,low= b1;156: high,med,low= b0;157: high,med,low= b0;158: high,med,low= b0;159: high,med,low= b0;160: high,med,low= b0;161: high,med,low= b0;162: high,med,low= b0;163: high,med,low= b0;164: high,med,low= b0;165: high,med,low= b0;166: high,med,low= b0;167: high,med,low= b0;168: hig

22、h,med,low= b0;169: high,med,low= b0;170: high,med,low= b0;171: high,med,low= b0;172: high,med,low= b1;173: high,med,low= b1;174: high,med,low= b1;175: high,med,low= b1;176: high,med,low= b1;177: high,med,low= b0;178: high,med,low= b0;179: high,med,low= b0;180: high,med,low= b0;181: high,med,low= b0;

23、182: high,med,low= b0;183: high,med,low= b0;184: high,med,low= b1;185: high,med,low= b1;186: high,med,low= b1;187: high,med,low= b0;188: high,med,low= b0;189: high,med,low= b1;190: high,med,low= b1;191: high,med,low= b1;192: high,med,low= b1;193: high,med,low= b1;194: high,med,low= b1;195: high,med,low= b1;196: high,med,low= b1;197: high,med,low=b0;198: high,med,low=b0;199: high,med,low=b0;200: high,med,low=b0;201: high,med,low=b0;202: high,m

温馨提示

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

评论

0/150

提交评论