《现代电子技术》2006年第19期摘录:《现代电子技术》2006年第1
-
如发现有乱码,请点击下面链接浏览原文
正文摘录:
《现代电子技术》2006年第19期总第234期》电子技术应用q调”’。而要准确地演奏出一首乐曲,仅仅让扬声器能够发声是不够的,还必须准确地控制乐曲的节奏,即每个音符的持续时间,也就是节拍。设计的关键是要准确地产生乐曲中每个音符的发音频率,并根据乐曲要求按音符需要的节拍输出,这是乐曲能够演奏的两个关键因素。2.2音符频率的产生在基于FPGA的数字系统设计中,多个不同频率的信号,一般是通过对某个基准频率进行分频获得的。在尽量减少频率误差的前提下,选取合适的基准频率。由于现有FPGA芯片上外接的高频时钟频率为20MHz,先对其进行分频或利用锁相环变成4MHz和4Hz的时钟频率,再对4MHz通过数控分频器将根据高、中、低音音符编码分频成各音符所需要的声音频率的2倍,由于数控分频器输出的波形是脉宽极窄的脉冲波,为减小输出偶次谐波分量和更好的驱动扬声器发声,最后在到达扬声器之前再进行一次二分频,从而生成各音符对应频率的方波输出,以成功完成乐曲演奏的功能0]。2.3音符编码的设计分析在动态显示乐曲演奏器的设计中,采用音符编码输出的方式,即乐曲中每一个高、中、低音音符对应着不同的编码,由编码确定对应音符的输出频率,同时控制编码输出的速度,决定音符的持续时间,也就是控制每个音符在乐曲中的节拍,从而达到乐曲演奏的目的,与此同时可以根据动态输出的编码来确定显示演奏乐曲的高、中、低音调及音符。各音符的频率与对应的分频系数和编码数关系见表1。表1各音符的频率与对应的分频系数和编码数关系表(基准频率为2MHz)音符另蠢:龛篓粥芬赫音符另吉:龛芟是蒡分赫音符另吉:龛茭嚣蒡另赫低音l261.637·1661中音1523.2538228高音11045.50191215低音2293.6768102中音2587.333·d.069高音21174.661‘70216低音3329.6360683中音3659.25303410高音31318.5l151617低音4349.235’7264中音4698.46286411高音41396.92143218低音5391.9951025中音5783.99255212高音51567.98127619低音6440.oO45466中音6880.00227213高音61760.oo113620低音7—493.8840507中音7987.76202414高音71975.52101221┗┻┻┛2.4节拍控制电路的设计分析每个音符持续的时间是乐曲能连续演奏所需的另一个基本要素。《奉献》中最小的节拍为1/4拍,将1拍的时间长度定为1s,则只需由一个4Hz的时钟频率即可产生1/4拍的时长。演奏的节拍控制通过音符编码输出来完成,每输出一次编码占用时间为1/4拍,乐曲中节拍一般是1/4拍的整数倍,如2/4拍、4/4拍等,2/4拍只需将该音符的编码连续输出2次即可。设计中设置了一个多位二进制计数器,计数器的计数频率选为4Hz,所以每一计数值的停留时间为O.25s,即4/4拍的4分音符持续时间0]。例如,《奉献》乐曲的第一个音符为“高音1”(4/4拍),停留的时间需用4个计数时钟节拍,即1s。相应该音符的编码15连续输出4次,随着计数器按4Hz的时钟速率作加法计数时,则连续按节拍输出乐曲中各音符的编码,乐曲就自动连续演奏起来,若停止4Hz时钟频率,则乐曲演奏也随即停止。动态显示乐曲演奏器原理框图如图2所示。图2动态显示乐曲演奏器原理框图3动态显示乐曲演奏器VHDL模块化设计根据动态显示乐曲演奏器系统的设计分析,采用VHDL语言使用模块化的设计方法设计的顶层电路文件如图3所示。iL卿!暖毫≥=一4忑忑ij磊1二—i五—;k鼍SP胤EAKER器=告聿L捌仁j【nsIlIrl几sM而-———__-hw::II?Lf忑i司‘_J斗忑—忑i睫鲤qlG..H[3l亚:j一}i上;篓巨瑟图3动态显示乐曲演奏器的顶层电路图3中Clock模块为时钟电路模块,将20MHz频率时钟分频成4MHz和4Hz的时钟频率,以提供音符频率所需的分频时钟和节拍输入的时钟,同时PLAY和STOP控制演奏器的起停。Clock模块VHDL程序设计较简单,源程序从略。Speaker模块为音符频率生成模块,根据音符对应编码将4MHz时钟2次分频成音符对应频率输出,其中在输出之前进行二分频是为减小输出偶次谐波分量和更好的驱动扬声器发声。Speaker模块VHDL源程序设计如下:I。IBRARYIEEE:IJSEIEEE.STD—LOG配一1164.AI。I.163
阅读此文(图):
点击此处在线翻阅