`

实验七 蜂鸣器控制实验

阅读更多

实验原理

与利用微处理器(CPU 或者MCU)来实现音乐演奏相比较,用纯硬件完成音乐演
奏电路的逻辑要相对复杂很多,如果不借助于强大的EDA工具和硬件描述语言,纯粹
使用传统的数字逻辑技术,即使是最简单的演奏电路也很难实现。
首先,本次实验要在开发板上面试验一下当输入不同的频率的时候,蜂鸣器都发出
什么声音,看看是否是按照下表所列,然后编写程序,在开发板上点的时候从蜂鸣器依
次发出do, re, mi, fa, so, la等音调。

  do re mi fa so la
频率/Hz 262 294 330 349 392 440
周期/us 3816 3401 3030 2865 2551 2273

其次,本次实验还要求使用VerilogHDL 语言编写一个可以控制开发板上面的蜂鸣
器的程序。我们知道,组成乐曲的每个音符的发音频率值和他们的持续时间是保证乐曲
能够连续演奏的两个基本要素,他们的具体获得方法如下:

音符的频率可以由上图中的speaker control部分获得。Speaker control是一个分频控
制器,它由clk1 输入一个较高的时钟频率(如12MHz,25MHz 等),通过分频以后,
有speakout 输出,直接连接到蜂鸣器上面。



 
而音符的持续时间就要根据不同的乐曲的速度和音符持续的拍数来决定了,上图里
面tone index是一个音符的查找表,输入的clk 是相对比较慢的时钟(8Hz或10Hz等),
查找表就按照加一的顺序查找将要演奏的音符,并将它们送到tone maker 模块里面。
这里的tone maker 是一个八位二进制计数器(计数最大值是138),频率选择在4Hz,
这样计一个数值的停留时间是0.25S,正好等于当全音符的持续时间设置为一秒的时候,
四四拍的4分音符的持续时间。
通过上面的描述,我们就能用硬件来实现不同音符的频率和持续时间,这样就可以
将“梁祝”连续地演奏出来了。

  • 大小: 1.7 KB
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics