基于CPLD的MIDI音乐播放器的设计
摘要:本音乐播放器依据MIDI音乐基本原理,结合EDA技术,采用ALTERA公司的可编程逻辑器件(CPLD)EPF10LC84-4作为控制核心而设计的。本文主要阐述了利用VHDL语言设计MIDI音乐发生器芯片,再配上必要的外围电路,从而实现四首音乐选择播放、并配有随音乐节奏而闪烁变化的彩灯等功能的EDA应用系统。
关键字:EDA、CPLD、音乐播放器、VHDL语言
0引言
大规模可编程逻辑器件CPLD和FPGA是当今应用最广泛的两类可编程逻辑器件,电子设计工程师利用它可以在办公室或实验室设计出所自己所需要的专用芯片和专用产品,从而大大缩短了产品上市时间,降低了开发成本。此外,可编程逻辑器件还具有静态可重复编程和动态在系统重构的特性,使得硬件的功能可以像软件一样通过编程来修改,这样就极大的提高了电子系统设计的灵活性和通用性。
1 工作原理
MIDI音乐是Windows下的一种合成音乐,由于它通过记谱的方式来记录一段音乐,因此与wave 音乐相比,它可以极大的减少存储容量。MIDI音乐的基本原理:组成乐曲的每一个音符的频率值(音调)及其持续的时间(音长)是乐曲能连续演奏的两个基本数据,因此只要控制输出到扬声器的激励信号的频率的高低和每个频率信号持续时间,就可以使扬声器发出连续的乐曲。
图1是本文设计的音乐播放器的原理框图。该音乐编码器内储存着预先设定的四首歌曲的编码,通过改变音乐选择开关的状态可以决定当前要播放哪首音乐。音乐编码器控制着音调发生器和彩灯闪烁控制器,每当音乐节奏时钟送给音乐编码器一个时钟脉冲时,音乐编码器就将当前要播放的音符的编码送给音调发生器和彩灯闪烁控制器。音调发生器根据编码对应的分频系数将2MHz的基准时钟分频,得到当前要播放的音符所对应频率的脉冲,再用这个脉冲去激励扬声器,就可以得到这个音符的声音。彩灯闪烁控制器根据编码将当前要播放的音符对应的彩灯亮灭状态送给彩灯。
图1 音乐播放器的工作原理框图
其中音调发生器、音乐编码器、彩灯控制器这三项功能可由ALTERA公司可编程逻辑器件(CPLD)EPF10LC84-4芯片,采用VHDL语言来完成[1-3]。音频放大器、彩灯、各种时钟可由具体的外围电路来实现。
2.MIDI音乐发生器芯片的设计
本设计的关键是要准确地产生音乐中各音符所对应的频率信号,并根据乐曲要求按节拍输出。为了减少系统复杂性,本设计根据可变模值计数器的原理,按照乐曲要求定时改变计数器的预置数,即可产生乐曲所需要的频率信号。芯片原理框图如图2所示,芯片是采用VHDL硬件描述语言,在MUXPLUS II环境下设计的。
图2 芯片原理图
图中节拍控制电路产生节拍定时信号;音符产生电路按节拍要求产生乐曲所需要的音符;预值数产生电路受音符控制,产生该音符频率相对应的预置数,送计数器的置入数据输入端。音符频率发生器根据不同的预置数产生相应的频率信号,从而完成乐曲的演奏功能。
3 外围电路设计
3.1 音乐节奏时钟和彩灯闪烁节奏时钟产生电路
我们需要的音乐节奏时钟是一个4Hz左右的时钟脉冲,其频率很低,利用555定时器构成的多谐振荡器即可产生,如图3所示。
555集成定时器是一种将模拟功能与逻辑功能巧妙结合在一起的混合集成电路,555定时器构成的多谐振荡器电路图如图3所示,由3脚输出的脉冲频率的计算公式为:
改变可变电阻的阻值就可以改变输出频率。我们要求输出的频率为4Hz,C=47Uf,所以R1+R2应为7.66K。
音乐节奏时钟对整个音乐播放器的作用至关重要,要求音乐节奏时钟脉冲非常稳定,这样才能保证音乐的流畅播放,否则播放出来的将是一段杂乱无章的声音,就不是音乐而是噪声了。为了使输出的脉冲比较稳定、减少外界干扰,将输出的脉冲再经过D触发器(7474)后送给CPLD芯片,因此555定时器件脚输出的脉冲频率应提高一倍(即8Hz),这样R1+R2的阻值应为3.83K。
图3 音乐节奏时钟产生电路图
彩灯闪烁节奏时钟产生电路与音乐节奏时钟产生电路原理相同,也是用555定时器构成的多谐振荡器来实现,只是彩灯控制时钟产生电路的频率要比音乐节奏时钟产生电路的频率高,在十几到几十赫兹之间,它的R2值不定,可根据自己的要求来定,如果想要彩灯闪烁快点则频率就高一些,想闪烁频率慢就低一些。
3.2 音频功率放大电路
由CPLD芯片输出的音频信号很微弱,不能直接去驱动扬声器,因此需要一个音频放大电路对输出的音频信号进行放大,然后再去驱动扬声器。我们采用由集成功率放大器LM386组成的音频功率放大器,如图4所示。其中,C2是交流耦合电容,将功率放大器的交流输出送到负载上,输出信号通过Rw接到LM386的同相端。C1是退耦电容,R1-C3网络起到消除高频自激振荡作用。
图4 音频功率放大电路图
3.4 音乐选择开关与彩灯闪烁控制电路
这两部分电路很简单,在音乐选择开关电路中(图5)S1断开时A端为高电平,闭合时A端为低电平,S2 断开时B端为高电平,闭合时B端为低电平,通过S1、S2的开与关来改变A、B的状态,从而实现对四首音乐的选择。
彩灯闪烁控制电路(图6)是由发光二极管构成的,A、B、C、D、E、F、G、H八端电平的高低变化控制着八个发光二极管的亮灭。
4 系统调试
把以上各部分电路与预先设计好的MIDI音乐发生器芯片(EPF10LC84-4)连接起来,形成整个系统。
系统调试主要是对音乐节奏时钟、彩灯控制时钟的频率和音频功率放大电路进行调试。
1.音乐节奏时钟的调试:音乐节奏时钟理论要求时4Hz,在实际的演奏过程中频率稍微高于4Hz效果较好,通过改变R1的电阻来改变音乐节奏时钟,从而改变音乐节奏。表1是音乐节奏时钟调试过程中的记录。
表1 音乐节奏时钟调试记录
R1阻值(KΩ) |
4.38 |
3.83 |
3.40 |
3.06 |
节奏时钟频率(Hz) |
3.5 |
4 |
4.5 |
5 |
音乐节奏效果 |
较慢 |
稍慢 |
适中 |
稍快 |
经过比较,最终将R1的阻值定在3.4 KΩ,音乐节奏时钟的频率为4.5 Hz。
2.彩灯控制时钟的调试:彩灯控制时钟频率要求在十几到几十赫兹之间。表2是彩灯控制时钟调试过程中的记录。
表2 彩灯控制时钟调试记录
R3阻值(KΩ) |
1.53 |
1.28 |
1.09 |
0.958 |
0.851 |
0.766 |
节奏时钟频率(Hz) |
10 |
12 |
14 |
16 |
18 |
20 |
彩灯闪烁效果 |
慢 |
较慢 |
稍慢 |
适中 |
稍快 |
较快 |
经过比较,最终将R1的阻值定在0.958 KΩ,彩灯控制时钟的频率为16Hz。
3.音频功率放大的调试:通过调节RW的阻值来改变输入到音频放大器LM386的音频信号的电压值,调试结果如表3。
表3 音频放大调试记录
RW阻值(KΩ) |
8 |
6 |
4 |
2 |
1 |
0.5 |
0.25 |
音频放大效果
|
声音小,无噪声 |
声音较小,无躁声 |
声音适中,无噪声 |
声音稍大,无躁声 |
声音较大,无躁声 |
声音大,稍有躁声 |
声音大,躁声大 |
经过比较,最终将RW阻值定在1KΩ。
调试完毕后,我们就可以欣赏动听的音乐了。
参考文献
[1] 赵曙光,郭万有,杨颂华.可编程逻辑器件原理、开发与应用,西安:西安电子科技大学出版社,2000:
[2] 曾繁泰,陈美金.VHDL程序设计.第二版,北京:清华大学出版社,2001:
[3] 卢毅,赖杰.VHDL与数字电路设计,北京:北京科学出版社,2001:
负离子发生器相关文章:负离子发生器原理 脉冲点火器相关文章:脉冲点火器原理
评论