基于FPGA的电子琴设计

时间:2022-11-15 18:50:13 浏览量:

[摘 要] 本文设计了一种基于FPGA的电子琴,电子琴的61个琴键以8*8矩阵式电路来设计,编程由VHDL硬件描述语言在Altera公司的CycloneⅡ系列的EP2C5Q208C8芯片上实现。

[关键词] FPGA 电子琴 VHDL

电子琴因为操作简单,而广受大众的喜爱。本文基于可编程逻辑控制器件FPGA,利用VHDL语言设计系统的核心部分,配以适当的外围接口电路,可以在琴键上演奏各种电路。该电子琴设计同常用的电子琴一样采用61个按键,总共有5个音区,每个音区总共12个琴键,7个白色琴键和5个黑色琴键(半音键),演奏时可以显示唱名。

该电路共包括5个模块:分频模块,琴键扫描模块,音调产生编码模块,显示模块,扬声器模块。

1.系统组成

该电子琴的系统组成如图1所示。

2.系统各模块电路设计

2.1分频电路模块设计

该系统需要两个主要的分频频率:一是产生对各琴键产生分频系数的系统频率1MHz,一是对琴键进行扫描的频率1KHz.

2.2琴键扫描模块设计

由于共需要61个琴键,因此琴键电路的部分采用矩阵式连接。矩阵式琴键的扫描电路有两种基本方法:扫描法和线翻转法两种。本文采用了扫描法。扫描法的原理是在程序中逐行或是逐列扫描琴键接口,根据端口的输入情况,判断是哪个琴键有按下。

扫描法电路将行接为输出,列接为输入,其扫描的流程为:

(1)判断琴键是否有按下。

(2)琴键去抖动。去抖动电路分为软件和硬件电路,这里采用硬件去抖动电路。

(3)扫描琴键的位置。先令逐个列线输出为0,然后读取行线的状态,若均为高电平,则无琴键按下,如不全为0,则表示其中低电平的行线与为0的扫描列线相交叉的位置的琴键被按下。

2.3音调产生编码模块

音调指频率的高低。音调发生器产生各个音区与音符对应的频率。这里共用到5个音区,每个音区有12个半音,其中C、D、E、F、G、A、B等对应7个白色琴键,C*、D*、F*、G*、A*等对应5个黑色琴键。

该模块的作用是产生各音符的分频预制值。各琴键对应的分频预制值(1MHz)如表1所示。由于对扬声器电路的频率对应的是方波波形,因此这里所使用的分频系数是2倍音符频率的分频值。

其中该模块CODE的输出表示对应的唱名,TONE为各预制值,连接发光二极管,当发光二极管亮时,弹奏的为白色琴键,不亮时,弹奏的是黑色琴键。

2.4扬声器模块

該模块主要是数控分频器电路。该模块的主要结构是采用加法电路来实现。当计数值为音调产生电路TONE的值时,计数值清零,并将SPERK的值取反输出(作用是2分频),否则的话则累加1。这里采用2分频的目的是使得输出的频率的脉宽比较宽,以便于驱动扬声器。

2.5显示模块

该模块的主要作用是将唱名通过数码管显示出来。

3.结束语

该设计将电子琴设计的核心部分集成在FPGA上完成,大大降低了外围电路的设计,而且可以在此的基础上增加相当部分功能,降低了设计的成本。而且可以在设计的各个阶段进行计算机模拟,增加设计的正确性,缩短了设计的周期,具有较为广阔的设计前景。

参 考 文 献

[1]谢自美 电子线路设计﹒实验﹒测试 华中科技大学出版社

[2]赵艳华 曹炳霞 张睿 基于Quartus‖的FPGA/CPLD的设计与应用电子工业出版社

[3]陈中平 高金定 高建芳 基于Quartus‖的FPGA/CPLD的设计与实践 电子工业出版社

[4]侯伯亨 VHDL硬件描述语言与数字逻辑电路设计 西安电子科技大学出版社■

推荐访问:电子琴 设计 FPGA