钟秀媚 , 陈荣军 ,2, 李伟健
(1.中山大学 信息科学与技术学院,广东 广州 510006;2.中山大学 南方学院,广东 广州 510970)
现代娱乐设备多种多样,各种新奇的发明层出不穷,大大丰富了人们的娱乐休闲和生活。而其中数字音乐电子琴由于其操作简单、价格低廉而广受大众喜爱。数字音乐电子琴是现代电子科技与音乐结合的产物,传统的钢琴由于其体积庞大笨重、价格昂贵,普通家庭的孩子如果想要学琴而又无法买得起钢琴的话,电子琴就是一个很好的选择。国内外均有许多对电子琴的研究和创意发明[1-4],文中介绍的是一种基于FPGA和超声波测距的虚拟电子琴。
该虚拟电子琴可用于家庭娱乐或幼儿初识教育,也可以作适当的修改设计后作为家庭或公共场合卡拉OK系统、跳舞机等。它是一种集娱乐、教育和医疗保健于一体的,同时具有结构简单、成本低廉、对环境友好等特点的装置。
系统总的架构是由FPGA(Cyclone III)、超声波测距模块和蜂鸣器共同组成。系统结构框图如图1所示,FPGA作为系统控制单元,控制超声波模块向空间中发射超声波信号,FPGA控制模块内设定的定时/计数器counter1开始计数,形成一个 “虚拟琴键键盘”,该琴键的键盘宽度由counter1决定,当测量到手指处于某一“键盘”位置,即超声波遇到手指被反射回来由超声波模块接收到,对手指的所处“琴键”位置进行测量,超声波模块向FPGA控制模块返回相应的测量信号,定时/计数器counter0由该回响信号控制进行计数,计算出这一“按键”,选择相应的音符(频率)传送给蜂鸣器,蜂鸣器发出某一音调的声音。当手指在虚拟的“键盘”上灵动跳跃时,蜂鸣器便可以发出一连串美妙的音乐。
图1 虚拟电子琴的系统结构框图Fig.1 Structure diagram of the virtual electronic piano system
虚拟键盘模块是由超声波测距模块和虚拟琴键模块组成。
超声波测距模块是一种通过发射超声波和接收回响信号,测量回响时差来进行测量物体距离的装置。该装置具有结构简单、受环境光度影响小、成本低廉等特点。本设计采用的是DYP-ME007超声波测距模块。由于超声波在空气中的传播速度受环境温度的影响[5],因此,为了更精确灵敏地测量物体位置,DYP-ME007超声波测距模块中加入了温度补偿电路。DYP-ME007超声波测距模块有out和echo两种输出方式,out为只要收到一个回波则输出一个脉冲信号,echo为收到回波后输出一个脉冲宽度与距离成正比的脉冲信号,这里选择的是echo引脚。DYP-ME007模块可提供3~350 cm的非接触式距离感测功能。
DYP-ME007超声波测距模块的echo脚的输出脉冲宽度与距离之间的关系为
其中uS为echo脉冲的宽度,单位为μs。
琴键是一张印有键盘的纸,纸上每个键的宽度是固定的。由于超声波测距是有盲区的,因此在设定“琴键”位置的时候应该避开其盲区。经测试选用的超声波测距模块的盲区在0-3 cm之内,因此,只要把“琴键”位置设在3 cm之外就可以了。这里设定“琴键”总的宽度为35 cm,从距超声波测距模块5 cm远处开始,每5 cm为一个“琴键”。
FPGA(现场可编程门阵列)作为可编程逻辑器件,是在PAL等逻辑器件的基础上发展而来,其规模比较大,可以代替几百块通用IC芯片[6]。FPGA内部具有丰富的逻辑资源,能够实现各种硬件电路,它的结构主要由3部分组成:一个二维的逻辑块阵列,构成了其逻辑组成核心;输入/输出块;连接逻辑块的互连资源。而verilog HDL是一种简单的硬件描述语言,可以很容易地用verilog HDL编写代码实现某一特定功能的电路,而且FPGA是可以多次写入擦除,方便调试和修改。用户可以在其基础上简单快捷的完成设计。本设计采用芯片EP3C25Q240C8N。
图2 FPGA内部硬件电路连接图Fig.2 Hardware circuit connection diagram in FPGA
用芯片EP3C25Q240C8N实现硬件电路如图2所示,U1是超声波测距控制模块,U2模块是音符频率选择模块。clk为系统的时钟输入信号,为50 MHz,rst为复位信号,en为开关使能引脚,echo为超声波测量回波时差得到的脉冲信号,trig为向超声波模块发送的激励脉冲,tune为送给蜂鸣器的一定频率的信号。超声波测距模块测得手指所在 “琴键”位置,当测到的手指距超声波模块的距离在音符i的琴键范围(5*i,5*i+5)cm内,则根据特定的音符频率,分别计算出每个音符的分频系数
其中为音符i的频率,求出分频系数,对时钟信号进行产生相应频率的周期信号tune,传送给蜂鸣器进行发声。
蜂鸣器是一种广泛运用于各种电子产品的电子讯响器件,采用直流供电,其实现电路结构简单,如图3所示。
图3 蜂鸣器电路Fig.3 Circuit of buzzer driver
系统流程如图4所示:counter1为控制超声波模块测量最大范围的计数器,counter0用于计算超声波模块返回的脉冲宽度。counter1和counter0初始值为0,在发射一个激励脉冲trig后counter1开始计时,检查回波信号echo是否为高电平,是则counter0开始计数,直到echo变为低电平counter0停止计数。指定一个最大测量值,由公式(1)计算出一个计数值,当counter1计数到该计数值时,提取counter0的值。为了使测量数据比较稳定,代码总增加了滤波部分,综合考虑灵敏度和稳定性,选择均值滤波器的长度为8。
图4 流程图Fig.4 Flow chart
FPGA选用的时钟频率为50 MHz,参考文献[4]中音阶频率对应关系,根据公式(2)求出各个音符的分频系数如表1所示,根据每个音符对应的分频系数对时钟进行分频,得到相应频率的音符信号tune输出给蜂鸣器。
表1 音阶频率与分频系数表Tab.1 Scale frequency and frequency factor table
本设计是采用verilog HDL进行编写的,在QuartusII编译器上进行综合编译,用ModelSim仿真器进行仿真,验证功能正确后通过QuartusII内的下载器将编译好的电路下载到FPGA(CycloneIII)上。其中超声波测距控制模块部分代码如下:
用ModelSim进行仿真,输入一个模拟的距离值,当距离为某一值时,tune的输出频率为相应值,对该信号进行测量验证了其频率是符合要求的,说明仿真的结果符合设计要求。仿真波形图如图5所示。
如图1所示搭建好系统的硬件电路,运行系统,用手指或者其他物体“敲击”超声波模块前方的“虚拟键盘”,检验蜂鸣器发出的音符是否符合设计要求,实践证明,该音乐系统能够根据敲下的“琴键”较准确地发出相应的音符。
图5 仿真波形图Fig.5 Simulation waveform
快速移动手指或物体的位置,检查该电子琴的灵敏度如何,实验检验发现,当手指或物体在各个“琴键”之间切换时,灵敏度不够高,检查后发现,是因为“琴键”之外的区域的分频设置问题,导致每个音符之间的切换会出现停滞,对verilog代码进行修改,再次检验,灵敏度有了很大改善,各个“琴键“之间的切换更为流畅,基本达到了设计的目标要求。
本设计基本达到设计预想要求:选择不同“琴键”时能够相应地发出某一特定音符。上面描述的是虚拟电子琴的基本的结构和功能。FPGA具有很大灵活性,可以根据需要在本设计的基础上进行多功能改进:如增加若干选择键,可以相应选择低/中/高音;或者加入多个超声波测距模块,制作成一个大型的跳舞机系统。
[1]Suzuki Y,Yamayoshi T,Kato T,et al.Japanese inventors develop electronic piano with remote controller[C]//US Fed News Service, Including US State News,2007.
[2]Raoul Parienti.Foldable Electronic Piano with Means to Make the Keyboard Stiff-KR20090010080A[P].2008-11-26.
[3]LIU Shu-peng, CHEN Lin, ZHU Xiang-ming, et al.Digital piano keyboard based on PVDF piezoelectric film[C]//Audio Language and Image Processing (ICALIP), 2010 International Conference on Digital Object Identifier:10.1109/ICALIP.2010.5684555 Publication Year: 2010:378-382.
[4]闫娟.基于Verilog HDL的简易电子琴设计[J].企业技术开发,2011(7):104-104,109.YAN Juan.Design of electronic piano based on verilog HDL[J].Technological Development of Enterprisf,2011(7):104-104,109.
[5]李云龙,卜雄诛,赵文,等.新型嵌入式超声波测距系统[J].仪表技术与传感器,2012(1):97-9.9 LI Yun-long,BU Xiong-zhu,ZHAO Wen,et la.New embedded ultrasonic distance measurement system[J].Intrument Technique and Sensor,2012(1):97-99.
[6]包明,赵明富,陈渝光.EDA技术与数字系统设计[M].北京:北京航空航天大学出版社,2002.