简易触摸电子琴是以FPGA芯片作为系统控制核心,通过数控分频的原理实现音乐自动播放、琴键演奏的功能,有限状态机实现触摸控制和LCD显示驱动,再采用友晶科技的4.3寸液晶触摸显示屏(LTM)完成简易触摸电子琴模式选择控制和琴键显示控制。在DE0?Nano FPGA(Altera Cyclone Ⅳ)开发板上的测试表明,所设计的低成本简易触摸电子琴可以实现触摸控制弹奏和自动播放乐曲的功能,同时具有较高的实用价值。
《电子竞技》杂志凭借对国内外电子竞技市场独到的见解和认识,依托着忠实而稳定的读者群,以高效、便捷的专业报道,以平媒为主体建立多元化的媒体平台,弥补并完善了国内电子竞技平面媒体的空白,为IT、金融、快速消费品等游戏产业相关厂商以及数以千万计的电子竞技爱好者服务。
0 引 言
电子琴因其操作简单,且能模拟各种传统乐器的音色,而深受消费者喜欢。目前市场上有很多种音乐模块,可以直接产生各种乐曲,多数集中在使用单片机、 555定时器、逻辑组合电路、LDQ852集成块等[1?4],这些设计方法各有优缺点,例如使用单片机实现简单、成本低,但是产生的音频过少,很难满足标准电子琴的设计要求及市场需求。FPGA器件具有静态可重复编程和动态可在系统重构的特性,同时其硬件功能可以通过软件编程来修改,故具有很好的设计灵活性和通用性。同时基于FPGA的电子琴设计还具有体积小、系统可靠性高、开发周期短和研制成本低的优点[5?7]。所以本文在FPGA器件上设计一个简易触摸屏电子琴电路,来实现触摸控制弹奏和自动播放乐曲的功能。
1 简易触摸电子琴的系统设计
基于FPGA的简易触摸电子琴的原理结构如图1所示,整个系统主要包括片外系统时钟模块、片内PLL时钟模块、计数分频模块、音乐节拍产生电路模块、键值扫描模块、音符译码电路模块、数控分频电路模块、自动播放与手动输入模式选择模块、液晶触摸屏显示驱动模块、扬声器驱动模块等。
图1 简易触摸电子琴的结构图
整个系统的工作过程大致如下:DE0?Nano FPGA开发板提供50 MHz的系统时钟经锁相环分频后得到33 MHz的时钟信号,而33 MHz的时钟信号经计数器分频得到一个4 Hz的时钟信号给音乐节拍产生电路,作为产生1拍的时长。当LCD触摸屏接通电源后,触摸屏上会显示不同的功能按键,其中通过选择自动播放和手动弹奏输入模式转换按键,最终实现自动播放乐曲和手动弹奏控制音乐输出的功能。图1所示的简易触摸电子琴的核心模块分别是音乐节拍产生电路模块、音符译码电路模块、 LCD驱动模块。下面就针对这三个关键模块给出详尽的设计描述。
2 音乐节拍产生电路模块
该模块利用FPGA的片内ROM存放乐曲简谱真值表,由一个二进制计数器作为乐曲数据存储器ROM的地址发生器。该计数器的计数频率为4 Hz,即每一计数值的停留时间为0.25 s,当音乐节拍产生器中计数器按4 Hz的时钟频率做加法计数时,即随地址值递增时,乐曲数据存储器ROM中的音符数据,将从ROM中的输出端传送到音符译码电路,所存储的乐曲就开始连续自然地演奏起来。二进制计数器的位数将根据所存放乐曲简谱基本节拍数来决定。 4 Hz频率信号作为输出音符的快慢信号,即每一计数值的停留时间为0.25 s计1拍,四四拍的四分音符的持续时间为1 s,频率越高,时钟的输出节拍速度就快,演奏的速度就越快,反之演奏的速度就变慢。音乐节拍发生器模块的电路图包含在图2中。 3 音符译码电路模块
音符译码电路即音调发生器,它实际上是一个音符频率查表电路,音符译码电路模块放置了21个音乐简谱对应的频率表,如表1所示,根据该表
表1 音名与频率对应表 Hz
为数控分频模块提供所发音符频率的初始值,音符译码电路模块的作用就是产生获得音阶的分频预置值,程序中设置了21个音符所对应的音符频率的初始值,这 21个值的输出由对应于音符译码电路的输入索引值确定,该值中音符在数控分频模块入口的停留时间由音乐节拍发生器中的音符数据决定,该数据重复的次数为该音符的节拍数。每个音符的停留时间由音乐节拍发生器的时钟频率决定,在此为4 Hz信号。
音阶的频率可以通过高频时钟进行分配得到,采用时钟的频率越高,分频系数越大,分频后的音阶频率就越准确,但是由于分频系数大使得要使用的计数单元增加,需要耗费更多的逻辑单元,而且为了减少发音的误差,本次设计直接以系统给定的50 MHz的等占空比脉冲信号作为系统的基准频率。数控分频器设计为20位的二进制加法计数器。其中分频预置值的计算公式如下:分频预置值=220-基准频率 /音符频率,本次设计中每个音符的频率是已知的,基准频率是50 MHz,这样就可以依次算出每个音符对应的分频预置值,又因为用小数表示比较麻烦,所以在本次设计中分频预制值均取整数,允许微小的偏差存在。音符译码电路模块的RTL级视图如图2所示。
图2 音符译码电路模块RTL级视图
4 LCD驱动模块
设计LCD显示驱动模块,关键在于需要根据液晶屏的控制时序和用户指令集,采用硬件描述语言设计有限状态机来实现LCD显示驱动模块的初始化、写入数据和命令操作;LCD显示驱动模块的状态转换如图3所示[8?9]。在图3所示的状态转换图中,当系统上电后,首先完成持续大约0.05 s的自动复位,然后才进入LCD模块的图形显示初始化过程。在状态机中设置有初始化命令、起始行地址和屏显示数据三条转换路径来适应LCD屏的不同工作阶段,同时也在关键转换路径上设置有可以配置的延时循环。这样既可以方便LCD模块的工作调试,又可以使LCD模块一直工作在写屏模式(RW=0),驱动 LCD模块的动态实时显示。
图3 LCD驱动模块状态转换图
5 简易触摸电子琴的设计验证
使用 DE0?Nano FPGA开发板(Altera Cyclone Ⅳ EP4CE22F17C6N)和友晶科技公司生产的4.3寸液晶触摸显示屏(LTM)组成简易触摸电子琴的硬件测试平台;设计项目经过Quartus Ⅱ 10.1开发工具编译和芯片下载配置后得到的实际验证效果图如图4所示。经实际电路测试验证,达到了设计要求。
图4 简易触摸屏电子琴实物图
6 结 语
本文所设计的以友晶科技公司生产的4.3寸液晶触摸显示屏(LTM)为触摸显示控制终端的低成本简易触摸电子琴。在FPGA开发板上的验证结果表明,完全实现了触摸控制弹奏和自动播放乐曲的功能。同时将乐曲硬件演奏电路的核心部分集成在FPGA芯片上,不但大大简化了外围电路,有效地提高了设计的灵活性,而且具有体积小、功耗低、可靠性高的特点,极大的降低了设计成本,缩短了设计周期,由此可见FPGA技术在设计电子产品方面体现出极大的优越性。
参考文献
[1] 曹曼.基于FPGA的电子琴设计[J].信息科技,2012(5):180?181.
[2] 陈华容.基于FPGA的电子琴设计[J].器件与电路,2006(2):26?29.
[3] 孙万麟.基于AT89C51单片机的电子琴设计[J].电脑知识与技术,2010(2):5626?5627.
[4] 周琛晖.基于AT89S51单片机的电子琴设计[J].电脑知识与技术,2009(27):7679?7681.
[5] 张卿.基于FPGA的音乐演奏电路及电子琴的设计[J].现代经济信息,2009(8):143?148.