电子琴课题设计论文.docx
《电子琴课题设计论文.docx》由会员分享,可在线阅读,更多相关《电子琴课题设计论文.docx(27页珍藏版)》请在冰豆网上搜索。
电子琴课题设计论文
简易电子琴制作
xx班
组员:
xx
xx
xxx
指导老师:
xxx
分工:
芯片资料:
xx、xx
电路资料:
xx、xx
目录
绪论…………………………………………………………………3
1.本论文设计的任务…………………………………………………4
2.总体方案设计与论证………………………………………………4
3.硬件系统选择与设计………………………………………………5
3.1FPGA开发板………………………………………………………5
3.2时钟电路…………………………………………………………5
3.3矩阵键盘设计………………………………………………………7
3.4键盘编码电路……………………………………………………8
3.5译码与显示电路……………………………………………………11
3.6预置数存储电路……………………………………………………15
3.7预置数控分频电路…………………………………………………17
3.8蜂鸣器……………………………………………………………19
4.开发环境介绍……………………………………………………19
5.系统功能的软件设计………………………………………………21
5.1按键消抖处理…………………………………………………………21
5.2键盘扫描……………………………………………………………21
5.3发声延时模块…………………………………………………………23
6.顶层模块设计………………………………………………………24
6.1顶层模块连接图如下………………………………………………24
6.2管脚分配,不用的管脚置三态………………………………………24
总结……………………………………………………………………25
参考文献…………………………………………………………26
基于FPGA的电子琴设计
前言
电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。
它在现代音乐扮演着重要的角色,
电子乐器的结构较为复杂,音源是由晶体管产生的电振动,并通过音色回路而产生各种音色;同时由周波数调制产生颤音效果,由振幅调制产生各种乐器的音效。
电子琴的外形很像普通键盘乐器,只是某些种类多一排脚踏键盘,而且手触键盘也往往分为两层。
键盘式电子琴声音丰富、优美,有变音装置,能发出多种不同的音色,可以作为独特的乐器进行演奏,还能代替传统的风琴、钢琴供音乐课教学。
传统乐器的声音是通过机械的方法产生的,电子琴的声音是用“电”产生的。
振荡器是根据需要产生一定频率的振荡信号,振荡信号通过分频器分解成不同频率的信号输送到放大器,放大器将信号放大,推动扬声器发出声音。
键盘实际是一些开关,如果没有键盘,许多种频率的信号一齐进到放大器里,通过扬声器发出的声音就会乱七八糟,不成音乐。
按下键盘的一支键,就等于接通一只开关,只允许某一种频率的信号通过到放大器里去,扬声器就发出一个音来。
这样,按照一定的演奏规律来按键,就能奏出美妙的音乐来。
摘要:
电子琴的设计原理是通过3*8矩阵键盘读入键值,由分频器得到所需的频率,从而驱动蜂鸣器的发声,并在数码管上显示相应的音节。
设计的关键之处在于矩阵键盘的扫描式读取、按键消抖处理、等占空比任意分频、蜂鸣器发声延时这四个方面的问题。
本论文对上述问题作了详细的阐述,设计出了完整的原理图,并自行焊接了3*8矩阵键盘,与A-CV84开发板结合制作成功。
关键词:
电子琴;矩阵键盘;任意分频;
1、本论文设计的任务
本论文所设计的是一种简单的基于FPGA语言的电子琴。
琴键为3*8矩阵键盘,使用蜂鸣器输出声音,并在数码管上显示相应的音阶。
电子琴具有延时发声200ms的功能。
2、总体方案设计与论证
本方案可分为键盘扫描模块、按键消抖模块、输出控制模块、发声延时模块、分频模块。
首先,由3*7矩阵键盘读入键值(行)经过消抖处理后,对键值进行编码,并输出不同分频比,再由分频器得到不同的频率,通过输出控制模块发出使能指令,从而驱动蜂鸣器发出响声,再发声由延时模块对音乐作简要优化。
方案原理图如下:
图1设计原理图
3、硬件系统选择与设计
3.1FPGA开发板
设计中的核心控制器件FPGA选用Ahrea公司的EP2C8Q208C8。
EP2C8Q208C8是AheraCycloneII系列器件中的一种,CycloneIIFPGA是基于StratixII的90nm工艺生产的低成本FPGA。
CycloneIIFPGA的应用主要定位在终端市场,如消费类电子、计算机、工业和汽车等领域。
EP2C8Q208C8内部有2个锁相环(PLL)和8个全局时钟网络,8256个逻辑单元(LE)个,36个M4KRAM,18个乘法器模块,可用I/O数138个。
EP2C8Q208C8具有低成本、高性能、低功耗和对IP-PBX系统的可扩展性(足够多的I/O接口)的优点,因此这里选择该器件作为系统的控制器件。
3.2时钟电路
时钟电路将有源晶振的20MHZ的频率分别进行2、4、8、16、32、64、128、256分频。
74LS393高速双四位二进制计数器:
引出端符号:
1A、2A-----时钟输入端(下降沿有效)
1clear,2clear------异步清零端(MR)
1Qa-1Qd、2Qa-2Qb--------输出端
74393为两个4位二进制计数器,也称为异步清零器,
异步清零端(1clear,2clear)为高电平时,不管时钟端1A,2A状态如何,即可以完成清除功能。
当1clear,2clear为低电平时,在1A,2A脉冲下降沿作用下进行计数操作
3.3矩阵键盘
由于设计需要24个按键,为了减少使用I/O接口,故采用矩阵键盘读取键值。
设计所用的矩阵键盘为手工焊接的3*8轻触式矩阵键盘。
其关键部分是:
1、键值扫描式读取;2、按键编码。
图33*8矩阵键盘原理图
3.4键盘编码电路
由图可知使用八线三线优先编码器74LS148可完成24键键盘编码。
74LS148为8线-3线优先编码器,将八条数据线(0-7)进行3线二进制优先编码,即对最高位数据线进行编码。
利用选通端(EI)和输出选通端(EO)可进行八进制拓展。
引出端符号:
0-7编码输入端(低电平效)
EI选通输入端(低电平效)
A0、A1、A2编码输出端(低电平有效)
GS宽展端(低电平有效)
EO选通输出端
真值表
将键盘电路与编码电路相连实现了3片74148的相连
表1-224键键盘编码表
编码24线输入
编码输出
即ROM地址
十六
进制
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
0
0H
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
0
1
01H
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
1
0
02H
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
0
1
1
03H
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
1
0
0
04H
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
1
0
1
05H
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
1
1
0
06H
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
0
1
1
1
07H
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
0
0
0
08H
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
0
0
1
09H
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
0
1
0
0AH
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
1
0
1
0
1
1
0BH
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
1
0
1
1
0
0
0CH
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
1
0
1
1
0
1
0DH
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
1
0
1
1
1
0
0EH
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
1
1
1
1
0FH
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
1
0
0
0
0
10H
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
1
0
0
0
1
11H
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
1
0
0
1
0
12H
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
1
0
0
1
1
13H
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
0
1
0
0
14H
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
0
1
0
1
15H
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
0
1
1
0
16H
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
0
1
1
1
17H
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
1
0
1
1
1
1
18H
3.5译码与显示电路
①电路主要对编码之后的数据通过门电路再用74139数据分配器选择高、中、低对应的D1、D2、D3三盏LED灯点亮。
②用全加器74LS83对译码的数与S0、S1计数,通过7448译码器进行译码,最后用7位共阴数码管显示。
电路图如下:
所需要的芯片资料:
74LS83:
74LS83逻辑器件的功能是一个四位全加器,在此电路中将S1、S0与Q2、Q1、Q0相加,再将所得数据送到译码器进行译码显示。
引脚图
74LS139:
G1、G2选通端(低电平有效)
Y0~Y3译码输出端(低电平有效)
74LS48:
该芯片在译码显示电路中,主要将0~9的BCD码进行译码显示,常与共阴极数码管搭配使用。
逻辑功能图
真值表
①显示测试。
当LTN=0时,数码管的七段全亮,以此来测试数码管的好坏。
②正常译码显示。
当LTN=1,BIN/RBON=1,RBIN=1时,对输入的十进制数0~9的BCD码进行正常译码显示。
共阴极数码管:
共阴极数码管,其公共端接低电平,当在某一段发光二极管上施加正向电压是,该段二极管即被点亮;不加电压则为暗。
为保护各段LED不因电流过大而损坏,需在各个段上外加限流电阻保护,阻值大约为200~510Ω。
共阴极数码管段选码表
74LS245:
它是8路同相三态双向总线收发器,可双向传输数据。
74LS245还具有双向三态功能,既可以输出,也可以输入数
3.6预置数存储电路
预置数存储电路,图如下:
该电路最主要的内容就是HT27C512芯片,它有A0~A15作为地址码,D0~D7端口在存储预置数时作为数据输入端口,在读取预置数时作为输出端口。
引脚图
真值表
从数据开关输入预置数存储地址,在预置数输出到数控分频器端口进行测试,观察测试结果是否与表格填写相符。
预置数(H)
ROM地址码(H)
预置数输出D7~d0
预置数(H)
ROM地址码(H)
预置数输出D7~d0
38
00
00111000
C7
OD
11000111
4E
01
01001110
CD
0E
11001101
61
02
01100001
D3
0F
11010011
69
03
01101001
D7
10
11010111
7A
04
01111010
DA
11
11011010
88
05
10001000
DE
12
11011110
8F
06
10001111
E1
13
11100001
9B
07
10011011
E3
14
11100011
A6
08
10100110
E6
15
11100110
B0
09
10110000
E9
16
11101001
B4
0A
10110100
EB
17
11101011
BC
0B
10111100
FFH
FFH
11111111
C4
0C
11000100
3.7预置数控分频电路
预置数控分频电路是用预置数控制时钟电路中分频所得到的78125HZ信号,对其进行所需相应的分频。
电路图如下:
通过预置数输入,通过8位计数器74191进行全加计数,当有进位溢出时,通过与非门到PL端口进行置数;再通过二分频D触发器获得各种乐音的频率。
需要用到的芯片资料:
74LS74双D触发器
引脚图
每个触发器有数据输入(D)置位输入(SD)复位输入(RD)时钟输入(CK)和数据输出(Q)。
RD、SD的低电平使输出预置或清除,而与其它输入端的电平无关。
当RD、SD均无效(高电平式)时,符合建立时间要求的D数据在CP上升沿作用下传送到输出端。
真值表
72LS191四位二进制计数器:
在此电路中,计数器主要作用是把预置数进行累加,加到256时进位溢出,重新置数。
引脚图
真值表
3.8蜂鸣器
4、开发环境介绍
本设计所使用的电路绘制软件是Multisim9,VHDL程序设计软件是QuartusII9.0。
这里主要对QuartusII9.0的开发环境作简要的介绍。
QuartusII是Altera公司的综合性PLD开发软件,支持原理图、VHDL、VerilogHDL以及AHDL等多种设计输入形式,内嵌自有的综合器以及仿真器,可以完成从设计输入到硬件配置的完整PLD设计流程。
Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了Altera的上一代PLD设计软件MaxplusII友好的图形界面及简便的使用方法。
QuartusII支持Altera的IP核,包含了LPM/MegaFunction宏功能模块库,使用户可以充分利用成熟的模块,简化了设计的复杂性、加快了设计速度。
对第三方EDA工具的良好支持也使用户可以在设计流程的各个阶段使用熟悉的第三方EDA工具。
此外,QuartusII通过和DSPBuilder工具与Matlab/Simulink相结合,可以方便地实现各种DSP应用系统;支持Altera的片上可编程系统(SOPC)开发,集系统级设计、嵌入式软件开发、可编程逻辑设计于一体,是一种综合性的开发平台。
Altera在QuartusII中包含了许多诸如SignalTapII、ChipEditor和RTLViewer的设计辅助工具,集成了SOPC和HardCopy设计流程,并且继承了MaxplusII友好的图形界面及简便的使用方法。
5、系统功能的软件设计
电平高低关系:
按键按下时输出低电平;蜂鸣器为低电平时发声;使能信号“en”为低电平时分频输出有效;数码管为低电平时发光。
5.1、按键消抖处理
由于本设计采用的是接触式按键,故不可避免存在机械抖动。
这种抖动会使系统处于不稳定状态。
故需要进行消抖处理。
本设计是用状态机方法编写一个消抖程序。
当按键按下去后,首先对其进行连续三次取样,如果三次都为低电平,则输出低电平;如果其中有一次高电平,则输出高电平。
分析:
如果检测到低电平时,则进入S1态,如果在下一时钟周期检测到的还是低电平,则进入S2态,同理,如果下一时钟周期检测到的还是低电平,则进入S3态,此时将输出置为低电平。
在期间有任一时刻出现高电平,则进入S0态,输出置为高电平
仿真图:
由仿真图可以看出,当连续三个时钟周期内为低电平时,dout才输出低电平,而前后不稳定信号则被过滤掉了。
5.2键盘扫描
键盘的每一行通过一个上拉电阻接高电平当按键按下时,按键处的行与列就建立了连接。
故将扫描输出列线依次置‘0’,当检测到一个行线被下拉至0时,则其行线与列线的编码信息是唯一的。
行列键值编码关系:
行线输入
列线输出
按键值(十进制)
按键值(二进制)
011
1111110
22935
010*********
011
1111101
20428
010*********
011
1111011
18203
010*********
011
1110111
17181
010*********
011
1101111
15305
0011101111001001
011
1011111
13635
0011010101000011
011
0111111
12147
0010111101110011
101
1111110
11465
0010110011001001
101
1111101
10215
0010011111100111
101
1111011
9100
0010001110001100
101
1110111
8589
0010000110001101
101
1101111
7652
0001110111100100
101
1011111
6817
0001101010100001
101
0111111
6073
0001011110111001
110
1111110
5732
0001011001100100
110
1111101
5106
0001001111110010
110
1111011
4550
0001000111000110
110
1110111
4294
0001000011000110
110
1101111
3827
0000111011110011
110
1011111
3408
0000110101010000
110
0111111
3036
0000101111011100
表3矩阵键盘对应编码关系
用这种方法的缺点是,由于当某个按键按下时,就开始输出扫描信号而由于按键输入信号keyin是与输出信号相关联的,即只有当输出的扫描信号为低电平时,才能检测出是否有按键按下。
而扫描信号是以100/7HZ的频率发出的,即扫描信号是动态输出的,这就会使输入的信号为不连续的信号,经过寻址编码后,蜂鸣器使能信号“en_out”受到了扫描信号的干扰,这样就会使分频进程间断地运行。
因此蜂鸣器信号中会有两种信号,分别是正常分频后的信号和扫面干扰信号。
事实也正是如此,蜂鸣器的音质中含有“杂音”。
经过改进后,使扫描信号先输出,如果有按键按下,则暂停扫描计数,此时输出的扫描信号为静态的,蜂鸣器使能信号“en_out”不再受到干扰了。
由此蜂鸣器能发出纯净的声音。
仿真图:
图6按键扫描仿真
由仿真图可见,按键按下时输出恒定的值。
5.3发声延时模块
由于设计所用的按键并非专业的琴键,而是6*6*9的轻触式按键,在演奏时难免会松下按键,此时声音的陡然消失不太合理,故在此加入一个发声延时模块,是当松开按键时。
蜂鸣器持续发声200ms后才停止。
仿真图如下:
图9发声延时仿真
为了便于观察,仿真中将计数最大值改为5.由仿真图可见,当sig电平由低到高时,en_out过5个时钟周期后才置为高电平。
由此可见设计达到了预期目的。
6、顶层模块设计
6.1顶层模块连接图如下
图10顶层模块连接图
6.2管脚分配,不用的管脚置三态:
图11管脚分配
下载进开发板中测试,能够正常发声。
总结
经过了一段时间的学习,初步掌握了一些QuartusII的基础知识.原以为已经对它有所了解,但是在正打算着手做的时候,不禁有些茫然,不知从何着手.结果仔细分析研究才有了眉目,在设计电路图的过程中,由开始的几种设想统一为一种方案,期间的讨论和研究加深了对知识的理解程度,不觉之间又学到了很多东西。