设计目的:
学习设计硬件乐曲演奏电路以及相关的控制电路。
设计原理一:
组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需要的两个基本要素,问题是如何来获取这两个要素所对应的数值以及通过纯硬件的手段来利用这些数值实现乐曲的演奏效果。
如图1所示为乐曲硬件演奏的电路原理图。其中rom_liangzhu为歌曲“梁祝”部分音符数据产生器,cnt_1为地址发生器,decoder_1为初始值设置译码器,dvf为数控分频器,PLL2和PLL3为分频器,其中PLL2将10MHz的信号分频成为1MHz和2KHz的信号clk1M和clk2K,而PLL3将2KHz的信号分频成为4Hz的信号clk4Hz。

当一个4Hz的时钟脉冲来到时,rom_liangzhu模块输出一个音符数据q[3..0]给decoder_1模块,decoder_1模块就会输出此音符相应的计数初值到数控分频器模块dvf,当一个1MHz的时钟脉冲来到时,数控分频器模块就根据计数初值输出相应的频率给扬声器,扬声器就发出对应音符的声音来。连续的4Hz时钟脉冲就这样一个一个地把乐谱发生器中的音符传送到扬声器。
设计原理二:
音符的频率由数控分频模块dvf获得,其由clk输入一具有较高频率(1MHz)的时钟,通过dvf分频由spks输出。Dvf首先根据输入的11位预置数tone[10..0]对1MHz信号分频,由于直接分频得出的信号是脉宽极窄的信号,为了有利于驱动扬声器,在dvf中另加一个2分频器以均衡占空比,但这时的频率将是原来的1/2。Spks的输出频率将决定每一音符的音调;这样decoder_1的预置数tone[10..0]与输出频率就有了对应关系,而输出的频率又与音乐音符的发声有对应关系。例如decoder_1模块中若取tone[10..0]=11’H305,将由spks发出音符为“5”音的信号频率392Hz。其中预置数tone[10..0]可由下面的公式来表示:
音乐频率对应列表如表1和图2所示,根据表1和公式1,可以算出不同音符的预置数。
音频 |
C(1) |
D(2) |
E(3) |
F(4) |
G(5) |
A(6) |
B(7) |
低音 |
131 |