欢迎来到天天文库
浏览记录
ID:16228843
大小:60.50 KB
页数:11页
时间:2018-08-08
《《友谊地久天长》乐曲演奏电路设计》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、《友谊地久天长》乐曲演奏电路设计1.实验任务音高与频率的对应关系见表1-1。表1-1音高频率对照表1234567低音262Hz294Hz330Hz349Hz392Hz440Hz494Hz中音532Hz578Hz659Hz698Hz784Hz880Hz988Hz高音1046Hz1175Hz1318Hz1397Hz1568Hz1760Hz1976Hz《友谊地久天长》乐谱见图1-1。友谊地久天长图1-1《友谊地久天长》乐谱注:N一拍;N两拍;N·四拍;N·八拍;N为音谱。此程序使用4MHz时钟,时钟不同则需要修改常数。总体框图如图1-2所示。图1
2、-2总体框图2.模块及模块功能模块TONE见图1-2。该模块控制每一个音的长短,送初值给SPEAK模块,从而控制音高。//**************************************************************////《友谊地久天长》乐曲////时钟:4MHz////**************************************************************////音高与频率的对应关系//-------------------------------------------
3、--------------------//
4、
5、1
6、2
7、3
8、4
9、5
10、6
11、7
12、//
13、低音
14、262Hz
15、294Hz
16、330Hz
17、349Hz
18、392Hz
19、440Hz
20、494Hz
21、//
22、中音
23、523Hz
24、578Hz
25、659Hz
26、698Hz
27、784Hz
28、880Hz
29、988Hz
30、//
31、高音
32、1046Hz
33、1175Hz
34、1318Hz
35、1397Hz
36、1568Hz
37、1760Hz
38、1976Hz
39、//---------------------------------------------------------------//如果时钟不同则需改参数module
40、tone(clock,q);//I/O口声明inputclock;output[13:0]q;//I/O口寄存器reg[13:0]q_r;//内部寄存器reg[20:0]cnt1;//375ms计数器(一个节拍)reg[3:0]cnt2;//节拍计数器reg[5:0]n;//乐谱状态机//乐谱参数//参数由上表音高与频率对应关系计算得出。//公式为:D=F/K//其中D为参数值,F为时钟频率,K为音高频率//如(中音1)M_1=4000000/523=7648parameterL_5=14'd10204,//低音5L_6=14'd9090,
41、//低音6M_1=14'd7648,//中音1M_2=14'd6920,//中音2M_3=14'd6069,//中音3M_5=14'd5102,//中音5M_6=14'd4545,//中音6H_1=14'd3824;//高音1parameterTIME=1500000;//控制每一个音(节拍)的长短(375ms)assignq=q_r;always@(posedgeclock)beginif(cnt142、n)6'd0:beginq_r<=L_5;//此值为低音5的计数初值,送给SPEAK模块if(cnt2<4'd1)//两个节拍cnt2<=cnt2+4'd1;elsebegincnt2<=4'd0;n<=6'd1;endend6'd1:beginq_r<=M_1;if(cnt2<4'd6)cnt2<=cnt2+4'd1;elsebegincnt2<=4'd0;n<=6'd2;endend6'd2:beginq_r<=M_3;if(cnt2<4'd1)cnt2<=cnt2+4'd1;elsebegincnt2<=4'd0;n<=6'd3;en43、dend6'd3:beginq_r<=M_2;if(cnt2<4'd3)cnt2<=cnt2+4'd1;elsebegincnt2<=4'd0;n<=6'd4;endend6'd4:beginq_r<=M_1;n<=6'd5;end6'd5:beginq_r<=M_2;if(cnt2<4'd1)cnt2<=cnt2+4'd1;elsebegincnt2<=4'd0;n<=6'd6;endend6'd6:beginq_r<=M_3;if(cnt2<4'd1)cnt2<=cnt2+4'd1;elsebegincnt2<=4'd0;n<=6'd744、;endend6'd7:beginq_r<=M_1;if(cnt2<4'd4)cnt2<=cnt2+4'd1;elsebegincnt2<=4'd0;n<=6'd8;endend
42、n)6'd0:beginq_r<=L_5;//此值为低音5的计数初值,送给SPEAK模块if(cnt2<4'd1)//两个节拍cnt2<=cnt2+4'd1;elsebegincnt2<=4'd0;n<=6'd1;endend6'd1:beginq_r<=M_1;if(cnt2<4'd6)cnt2<=cnt2+4'd1;elsebegincnt2<=4'd0;n<=6'd2;endend6'd2:beginq_r<=M_3;if(cnt2<4'd1)cnt2<=cnt2+4'd1;elsebegincnt2<=4'd0;n<=6'd3;en
43、dend6'd3:beginq_r<=M_2;if(cnt2<4'd3)cnt2<=cnt2+4'd1;elsebegincnt2<=4'd0;n<=6'd4;endend6'd4:beginq_r<=M_1;n<=6'd5;end6'd5:beginq_r<=M_2;if(cnt2<4'd1)cnt2<=cnt2+4'd1;elsebegincnt2<=4'd0;n<=6'd6;endend6'd6:beginq_r<=M_3;if(cnt2<4'd1)cnt2<=cnt2+4'd1;elsebegincnt2<=4'd0;n<=6'd7
44、;endend6'd7:beginq_r<=M_1;if(cnt2<4'd4)cnt2<=cnt2+4'd1;elsebegincnt2<=4'd0;n<=6'd8;endend
此文档下载收益归作者所有