当前位置:论文网 > 论文宝库 > 信息科技类 > 软件开发论文 > 正文

基于PLD技术的MIDI音乐播放控制系统设计

来源:UC论文网2015-12-05 20:05

摘要:

引言 系统的设计是依据MIDI音乐基本原理,结合PLD技术,采用ALTERA公司的可编程逻辑器件CPLDEPM240T100C5作为控制单元来实现。系统的核心是运用VHDL语言进行编程,在CPLD内部设计出音调发

  引言

  系统的设计是依据MIDI音乐基本原理,结合PLD技术,采用ALTERA公司的可编程逻辑器件CPLDEPM240T100C5作为控制单元来实现。系统的核心是运用VHDL语言进行编程,在CPLD内部设计出音调发生器、音乐编码器、彩灯闪烁控制三个模块。外围可配时钟、彩灯、开关、扬声器等设备,从而实现音乐选择控制播放、彩灯随音乐节奏闪烁变化等功能的PLD应用系统。

  一、系统组成

  如图1所示,是系统组成的原理框图。其核心模块为CPLD芯片,内部有音调发生器、音乐编码器和彩灯闪烁控制器三个模块。音乐编码器内储存着预先设定的歌曲编码,通过改变音乐选择开关的状态可以决定当前要播放哪首音乐。音乐编码器控制着音调发生器和彩灯闪烁控制器,每当音乐节奏时钟送给音乐编码器一个时钟脉冲时,音乐编码器就当前要播放的音符的编码送给音调发生器和彩灯闪烁控制器。音调发生器根据编码对应的分频系数将基准时钟分频,得到当前要播放的音符所对应频率的脉冲,再用这个脉冲去激励扬声器,就可以得到这个音符的声音。彩灯闪烁控制器根据编码将当前要播放的音符对应的彩灯亮灭状态发送给彩灯。核心部分CPLD利用VHDL语言来完成,其他部分通过外围电路实现。

  图1 系统组成原理框图

  二、MIDI 音乐播放器芯片设计

  MIDI音乐是Windows下的一种合成音乐,由于它通过记错的方式来记录一段音乐,因此与wave音乐相比,它可以极大地减少存储容量。MIDI音乐的基本原理为:组成乐曲的每一个音符的频率值及持续的时间是乐曲能连续演奏的两个基本数据,因此只要控制输出到扬声器的激励信号频率的高低和每一个频率信号的持续时间,就可以使扬声器发生连续的乐曲。如图2所示,为CPLD内部芯片设计原理图。

  图2 CPLD芯片设计原理图

  三、系统控制模块设计

  3.1 音乐编码器模块设计

  此模块包括节拍控制电路和音符产生电路。节拍控制电路以乐曲中最短音符的节拍为基准,产生乐曲所需要的全部节拍。将1/16音符设置为计数器的一个数,对应的1/4音符则是四个计数。在设计中为了让歌曲循环播放,计数器设定计满自动清零计数的功能,只要不断电,不关开关,歌曲就可以自动循环播放。

  3.2 音调发生模块设计

  此模块包括预置数产生电路和频率发生器。预置数产生电路采用查找表形式,按照音符的频率要求产生相应的预置数。根据可变模值计数器的设计原理及音符的分频系数,可算出乐曲中各音符的预置数。

  频率发生器由可变模值计数器实现。由于系数要求产生出的信号频率较高,因此选用4MHz高频率脉冲作为可变模值计数器的计数脉冲,而为了减少输出的偶次谐波分量,最后输出到扬声器的波形应为应为对称方波,因此在到达扬声器之前,有一个2分频的分频器。

  3.3 彩灯闪烁控制模块设计

  彩灯闪烁控制电路主要是控制灯的亮和灭,此电路输出高低电平信号,就可以直接驱动发光二极管。在彩模块,设计为不同音符,对应不同的亮灭,这样,当音乐演奏起来的时候,随着音符的变化,彩灯也因为不同的音符闪烁起来。

  3.4 开关选择模块设计

  采用case语句,对外部电路输入的一个音符串进行判断,芯片内部处理这个字符串,从而判断选择的是哪首歌曲的播放。

  3.5 顶层模块设计

  采用VHDL语言进行顶层模块设计,如图3,将上述所提到的所有模块,利用component语句进行集合,然后利用管脚映射的方法,将所有输入输出连接在一起,这样就设计出了一个完整的MIDI音乐播放芯片,只需要再接入外围电路即可进行演示。

  图3 顶层模块原理图

  四、仿真实现

  将各设计模块在 Quartus II 软件平台上进行仿真调试校验,设计系统顶层模块的仿真波形图如图4所示。

核心期刊推荐