APP下载

基于FPGA的电子琴设计

2012-08-15

科技传播 2012年5期
关键词:音区电子琴琴键

曹 曼

琼州学院,海南三亚 572022

电子琴由于操作相对比较简单,并且能够模拟几乎所有传统乐器的音色,因而深受广大消费者的喜爱。

近年来,在数字系统的设计领域融入了一种新型的设计技术:数字系统设计的自动化技术EDA(Electronic Design Automation)。

该技术优越之处在于系统设计的效率高、保密性强、集成度好、易于修改和实现等。

因此,一跃成为当下数字系统设计领域的主流技术,并被越来越广泛地应用到相关领域中,其中,被应用到电子琴的设计与实现中去就是一个相当重要的尝试及应用。本文所设计的电子琴基于一种可编程逻辑控制器件:FPGA(Field Programmable Logical Device)芯片,首先采用Visual Basic来设计上位机琴键的控制界面程序,再利用VHDL硬件描述语言设计系统的核心部件(演奏电路)以及配合使用一些适当和必要的外围电路,并且,核心部件的模块通过QUARTUS II这个平台,自顶而下地进行下载到Altera芯片上,其中,上位机经RS232串行口能够直接和FPGA进行通信,从而完成数据的交换工作。该演奏电路由琴键控制界面直接进行音调的输入,并通过RS232的通信方式来控制从而可以发出DO、RE、MI等共计8个音调,经由蜂鸣器出声,顺利行使完成演奏功能。可从琴键上手动直接进行演奏各种电路,亦可自动开始乐曲演奏,而且能够模拟笛子、小号、风琴、单簧和双簧等传统乐器。同通常所见到的电了琴的设计一样,该电子琴采用总计61个按键,共划分为5个音区,每个音区包含12个琴键,即7个白色的琴键与5个黑色的琴键(为半音键),在进行演奏的时候能够动态显示各音名。

1 系统设计

为了使电子琴的演奏电路完美实现8个音键的控制和顺利播放已经编好的音乐,对系统的设计就应有所要求。根据各个音调的频率差异来实现当演奏者按不同的音键时从而发出的声音又了差别。

当八位发声控制键的输入中有一位是高电平时,那么,对应这一音阶其初始计数值被作为获得此音阶分频的预置值而将送至预制数计数器,而后预制数计数器就会输出相应的频率,同时输出的还有对应音阶简谱的显示代码,然后,该频率通过二分频器被送至扬声器,在扬声器处能够发出相对应该音符的声音,与此同时,该音名将显示在数码管上。

该设计采用Altera芯片第一代Cyclone系列FPGA EP1C6器件,它是在全1.5V SRAM工艺的基础之上,容量由2910个逻辑单元上升至20060,具有多达294912bit 的嵌入RAM Cyclone FPGA,其支持所有的单端I/O 标准;EP1C6 具有4000个逻辑单元(Logical Units),17 个M4K RAM块以及2个 PLL。

其中,U3是蜂鸣器。当IO 134输出不同的频率时,U3蜂鸣器就会发出相对应的声音。FPGA核心的供电部分采用了AMS1117-1.5V LDO芯片,可提供高达1.5V、800mA。

电子琴演奏电路程序设计采用了顶层原理图,在Quartus II9.0环境下进行设计。

基于FPGA设计的电子琴电路总共涉及5个模块,分别为分频模块、显示模块、扬声器模块、琴键扫描模块以及音调产生编码模块。现分别围绕这5个电路模块进行详细阐述。

2 分频模块与显示模块

这个系统共需要2个重要的分频频率:一个是对各个琴键产生分频系数l MHz的系统频率,另一个是扫描琴键为l KHz的频率。显示模块的作用主要是通过数码管把唱名显示出来。

3 扬声器模块(speaker模块)

扬声器模块主要为数控分频器电路,其主要结构采用了加法电路得以实现。倘若计数值是音调产生电路(TONE)的数值时,计数值将会清零,并且将SPERK的数值进行反输出即作用为两分频,否则就累计加一。此处所采用的两分频目的是使输出较宽的频率脉宽,以便较好地驱动扬声器。

4 琴键扫描模块

由于总共需要61个琴键,因此,琴键电路部分采用矩阵连接方式。矩阵式琴键扫描电路有扫描法、线翻转法这两种摹本方法,这里采用扫描法,其原理就是在程序中通过逐行或逐列对琴键接口进行扫描,再依据端口输入情况来判断哪个琴键被按下。扫描法的电路将行接作为输出,而列接作为输入。扫描的流程如下:首先,判断琴键是否被按下;其次,琴键去抖动,其电路包括软件与硬件电路,此处采用后者;然后,扫描琴键的位置,先命令逐列线输出0,之后读取行线状态,如果都是高电平,那么无琴键按下,若不全是0,就表示为0的扫描列线与低电平的行线相交叉处琴键被按下。

5 音调产生编码模块(Tone模块)

音调即频率的高低,由音调发生器来产生各音区和音符相对应的频率。

5个音区每个有12个半音,其中,C、D、E、F、G、A、B等各对应7个白色的琴键,C*、D*、F*、G*、A*等分别对应5个黑色的琴键。

该模块将产生各个音符分频预置值。因扬声器电路频率是方波波形,所以分频系数为2倍的音符频率分频值。

综上,由于设计电子琴的核心部分是集成在FPGA上,所以大大减少了外围电路的设计。在增加部分功能的基础上反而降低了设计成本,将具有广阔的设计和应用前景。

[1]霍福翠.基于FPGA的电子琴设计[J].科学与财富,2011(6):351.

[2]陈华容.基于FPGA的电子琴设计[J].电声技术,2006(2):26-29.

猜你喜欢

音区电子琴琴键
基于AT89C51单片机的电子琴设计
给你的信
探究圆号各音区的练习方法
琴键上的畅想
琴声无边,乐韵悠扬
电子琴
钢琴指套
黑白琴键上的爱