米客-显示驱动专家

【嵌入式】基于盈科FPGA开发板的梁祝播放器

0
阅读(3580)


本次设计要求使用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 0 4 4|3 1 2|1 —

根据声乐知识,组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的两个基本要素,获取这两个要素所对应的数值以及通过纯硬件的手段来利用这些数值实现所希望乐曲的演奏效果是本实验的关键。


该设计在Quartus II的EDA软件平台上,通过定制LPM-ROM存储音乐数据,达到了以纯硬件的手段来实现乐曲的演奏效果。只要修改LPM-ROM中所存储的音乐数据,就可以实现其它乐曲的演奏。    

3.原理图


4. 源代码

  请移步到musicplayer_liangzhu.rar