【嵌入式】基于盈科FPGA开发板的梁祝播放器
0赞本次设计要求使用EDA工具,设计实现简易音乐演奏器,理解音名与频率的关系及数控分频原理,经过对整体进行模块化分析、编程、综合、仿真及最终下载,完整实现简易音乐器的播放功能。
本设计由四个模块组成,如图1所示。
音调 发生 |
数控 分频 |
音调 编码 |
图1 乐曲演奏电路的结构示意
2. 工作原理
1、音调的控制:
频率的高低决定了音调的高低。通过查阅资料,得到下面的音符名与频率的关系表:
音符名 |
频率/hz |
音符名 |
频率/hz |
音符名 |
频率/hz |
低音1 |
262 |
中音1 |
523 |
高音1 |
1046 |
低音2 |
294 |
中音2 |
587 |
高音2 |
1175 |
低音3 |
330 |
中音3 |
659 |
高音3 |
1318 |
低音4 |
349 |
中音4 |
698 |
高音4 |
1397 |
低音5 |
392 |
中音5 |
784 |
高音5 |
1568 |
低音6 |
440 |
中音6 |
880 |
高音6 |
1760 |
低音7 |
494 |
中音7 |
988 |
高音7 |
1976 |
分频比预置数的计算:
分频比就是从6Mhz基准频率通过二分频得到的3Mhz频率基础上计算得到的。对于乐曲中的休止符,只需将其分频系数设为0,将分频预置数设为16383即可。例如:低音3的频率为330hz,分频比为3M/330hz=3000000/330=9091,则其分频预置数为:16383-9091=7292。其他的音符对应的分频比和分频比预置数均按此法计算可得到。依次计算出低、中、高3X7=21个音的预置数。
各音阶对应的预置数如下表:
音符名 |
预置数 |
音符名 |
预置数 |
音符名 |
预置数 |
低音1 |
4933 |
中音1 |
10647 |
高音1 |
13515 |
低音2 |
6179 |
中音2 |
11272 |
高音2 |
13830 |
低音3 |
7292 |
中音3 |
11831 |
高音3 |
14107 |
低音4 |
7787 |
中音4 |
12085 |
高音4 |
14236 |
低音5 |
8730 |
中音5 |
12556 |
高音5 |
14470 |
低音6 |
9565 |
中音6 |
12974 |
高音6 |
14678 |
低音7 |
10310 |
中音7 |
13347 |
高音7 |
14858 |
2、音长的控制:
音符的持续时间必须根据乐曲的速度及每个音符的节拍数来确定。本试验中,设定最短的音符为4分音符,若将全音符的持续时间设为1s的话,则需要提供一个4Hz的时钟频率即可产生4分音符的时间,每1/4个节拍的时间为0.25s,一个完整的节拍为1s。
5 5|6 5 1|7 —5 5|6 5 2|1 —5 5|5 3 1|7 6—|0 04 4|3 1 2|1 —
根据声乐知识,组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的两个基本要素,获取这两个要素所对应的数值以及通过纯硬件的手段来利用这些数值实现所希望乐曲的演奏效果是本实验的关键。
该设计在Quartus II的EDA软件平台上,通过定制LPM-ROM存储音乐数据,达到了以纯硬件的手段来实现乐曲的演奏效果。只要修改LPM-ROM中所存储的音乐数据,就可以实现其它乐曲的演奏。
3.原理图
4. 源代码