乐曲演奏的原理:组成乐曲的每个音符的频率值(音调)以及持续时间(音长)
是乐曲能持续演奏所需要的两个基本数据,因此只要控制输出到扬声器的激励
信号的频率的高低和持续的时间,就可以使扬声器发出持续的乐曲声。
音调的控制
频率的高低决定了音调的高低。音乐的十二平均率规定:每两个八度音(如
简谱中的中音 1 与高音 1)之间的频率相差一倍。在两个八度音之间,又可
分为十二个半音,每半个音的频率比为 。另外,音名 A(简谱中的低音 6)
的频率为 440HZ,音名 B 到 C 之间,E 到 F 之间为半音,其余为全音。由
此可以计算出简谱中从低音 1 至高音 1 之间的每个音名对应的频率如图所示:
音名 频率(HZ) 音名 频率(HZ) 音名 频率(HZ)
低音 1
261.6
中音 1
523.3
高音 1
1046.5
低音 2
293.7
中音 2
587.3
高音 2
1174.7
低音 3
329.6
中音 3
659.3
高音 3
1318.5
低音 4
349.2
中音 4
698.5
高音 4
1396.9
低音 5
392
中音 5
784
高音 5
1568
低音 6
440
中音 6
880
高音 6
1760
低音 7
493.9
中音 7
987.8
高音 7
1975.5
所有不同频率均从同一基准频率分频得到。将分频数四舍五入进行取整,并
尽量减小误差。在本设计中选取 5MHZ 作为基准频率。从下表中可以看出
最大分频系数为 11468,采用 14 位二进制计数器分频可满足要求。此外还
应给出预置数,对应不同的预置数,只需加载不同的预置数即可。采用加载
预置数实现分频的方法比采用反馈复零法节省资源,实现起来更加容易。
音名 分频比 预置数 音名 分频比 预置数 音名 分频比 预置数
低音 1
9557 6826
中音 1
4777 11606
高音 1
2389 13994
低音 2
8512 7871
中音 2
4257 12126
高音 2
2128 14255
低音 3
7585 8798
中音 3
3792 12591
高音 3
1896 14487
低音 4
7159 9224
中音 4
3579 12804
高音 4
1790 14593
低音 5
6378 10005
中音 5
3189 13194
高音 5
1594 14789
低音 6
5682 10701
中音 6
2841 13524
高音 6
1420 14963
低音 7
5062 11321
中音 7
2531 13852
高音 7
1266 15117
音长的控制
音符的持续时间须依据音乐的速度及每个音符的节拍数来确定。如果设定全音符的持续时
间为 1S 的话,假设产生 4 分音符,则产生四分频即可实现四分音符的时长,并提供 4HZ
分频器。如图为乐曲演奏的原理图,其中,乐谱产生电路用来控制音乐的音调和时长。控
制音调通过设置计数器的预置数来实现,预置不同的数值会可以使计数器产生不同频率的
信号,从而产生不同的音调。控制音长是通过控制计数器预置数的停留时间来实现的,预
置数的停留时间越长,则该音符的演奏时间越长,如 2 分音符,在记谱时将该音符记录两
次即可。
4.1.2 总体方案
本次设计课程的目的是让我们在学习 verilogHDL 的基础上更加深入的了解硬件设计语言的