具有自动乐曲演奏功能的电子琴设计(2021整理).pdf
《具有自动乐曲演奏功能的电子琴设计(2021整理).pdf》由会员分享,可在线阅读,更多相关《具有自动乐曲演奏功能的电子琴设计(2021整理).pdf(29页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、本文为网上收集整理,如需要该文档得朋友,欢迎下载使用具有自动乐曲演奏功能的电子琴设计先给出设计结果视频链接:具有自动乐曲演奏功能的电子琴-视频实录本文为本人于 2012 年下学期做的 EDA 数字系统设计,文章详细介绍了“具有自动乐曲演奏功能的电子琴”的 FPGA 设计原理与方法,使用了 ROM 存储音符和节拍,矩阵键盘控制整个系统。一、选题目的电子设计自动化,简称EDA(Electronic Design Automation),发展迅速,应用范围日益扩大。它以计算机为工具,设计者在 EDA 软件平台上,用硬件描述语言 VHDL 完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合
2、、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA 技术的出现,极大地提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。本文应用 VHDL 硬件描述语言,以 Quartus8.0 为开发工具设计了一个具有自动演奏乐曲功能的电子琴系统,它能将预先存储在ROM 中的多首乐曲自动播放出来,并同时显示音符,此外,还具有电子琴弹奏的功能。选题新颖、实用,趣味性、综合性较强。二、设计目标1.采用 44 矩阵键盘作为:电子琴按键,高、中、低音选择键,自动播放和电子琴弹奏功能选择键,乐曲选择键。2.使用 ROM 存储乐曲,达到只要在其中存储乐曲音符节拍的信息即可自
3、动播放的目的,对乐曲的编码要简单易用。3.可自动播放世上只有妈妈好、长亭送别、十年三首歌曲,带选歌和自动循环播放的功能。4.实时显示正在播放的音符。5.设计要具有模块化,层次化的特点。6.波形仿真时采用时序仿真,以更加贴近实际,使系统的实际效果达到最佳。三、实现方案1.原理框图具有自动乐曲演奏功能的电子琴系统的原理结构框图如下:图 1 硬件系统结构框图精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用图 2 软件系统结构框图图 3 乐曲自动播放模块结构框图图 4 乐曲弹奏模块结构框图2.设计流程图具有自动乐曲演奏功能的电子琴系统的VHDL 程序设计流程图如下图 5:精
4、品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用图 5 程序设计流程图四、设计过程1.音乐基础知识简谱应该说是一种比较简单易学的音乐记谱法。它的最大好处是仅用7 个阿拉伯数字-1234567,就能将万千变化的音乐曲子记录并表示出来,并能使人很快记住而终身不忘;同时涉及其他的音乐元素也基本可以正确显示。简谱虽然不是出现在中国,但是好像只有在中国得到非常广泛的传播。乐音的特性:它由四个方面组成:音高、音值、音量、音色。音高:由物体在一定的时间内震动的次数决定,震动次数多,因则高,反之,则低。音值:即音的长短,是由音的延续时间的不同而决定的,音的延续时间长,音则长,反之,则
5、短。音量:即音的强与弱,由震幅的大小决定,震幅大,音则强,反之,则弱。音色:有发音体的性质决定,发音体的形状及泛音的多少决定音色的不同,例如,小提琴、钢琴等各种乐器的音色都是不同的,在合奏时,人们可清楚地辨认。乐音体系:在音乐使用中有固定音高的音的总和叫乐音体系。音级:乐音体系中的各音叫音级,音级有基本音级与变化音级两种。基本音级:在音乐中经常使用的七个具有独立名称的音叫基本音级。基本音级的名称精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用用字母或唱名两种方式来标记。音名:用C、D、E、F、G、A、B 来标记基本音级的叫音名,它表示一定的音高,简谱中用 1,2,3
6、,4,5,6,7 来标记。唱名:用 do、re、mi、fa、sol、la、si 作为音级名称的叫唱名。音符:用以记录音的长短高低的符号叫音符(以符头在谱表上的位置来表示音的高低,以形状表示音的长短,音符有符头、符干、符尾三部分或其中某些部分组成,而在简谱中以1 2 3 4 5 6 7 或其上下加点来表示不同音高,以短下划线(_)或横()来表示音的长短)。下面重点介绍组成音乐的两个最基本的要素:每个音符发音的频率及其持续的时间。1.1 音符和频率的关系乐曲的十二平均律规定:每2 个八度音(如简谱中的中音1 与高音 1)之间的频率相差一倍。在 2 个八度音之间,又可分为12 个半音,每 2 个半音
7、的频率比为。另外,简谱中的低音 6 的频率为 440Hz,音符7 到 1 之间、3 到 4 之间为半音,其余为全音。由此可计算出简谱中从低音 1 至高音 7 之间每个音符的频率,如下表1 所示:表 1 简谱中音符与频率的关系音名频率(Hz)音名频率(Hz)音名频率(Hz)低音 1中音 1高音 1低音 2中音 2高音 2低音 3中音 3高音 3低音 4中音 4高音 4低音 5392低音 6440低音 7中音 5784中音 6880中音 7高音 51568高音 61760高音 7 1.2 音符的长短表示音乐的长短需要有一个相对固定的时间概念。简谱里将音符分为全音符、二分音符、四分音符、十六分音符、
8、三十二分音符等,如下表2。在这几个音符里面最重要的是四分音符,它是一个基本参照度量长度,即四分音符为一拍。这里一拍的概念是一个相对时间度量单位。一拍的长度没有限制,可以是1 秒 也可以是 2 秒或半秒。假如一拍是一秒的长度,那么二拍就是两秒;一拍定为半秒的话,两拍就是一秒的长度。一旦这个基础的一拍定下来,那么比一拍长或短的符号就相对容易了。正如五线谱的附点一样,数字后方加一点会将音符长度增加一半。表 2 简谱中音符长度音符名称全音符二分音符四分音符八分音符记法5 5时值二拍一拍半拍编码168425 四拍十六分音符1四分之一拍八分之一拍三十二分音符精品文档,word 文档本文为网上收集整理,如需
9、要该文档得朋友,欢迎下载使用2.VHDL 程序设计 2.1 顶层文件采用原理图输入法设计,其原理图如下:图 6 music_player 原理图各模块的设计如下。2.2 音符的编码及音乐的存储 2.2.1 音符的编码休止符的编码为:0;音符长度的编码见表 2。音名的编码如下表 3 所示:表 3 音名的编码音名编码音名编码音名编码低音 111中音 11低音 212中音 22低音 313中音 33低音 414中音 44低音 515中音 55低音 616中音 66低音 717中音 77高音 121高音 222高音 323高音 424高音 525高音 626高音 7272.2.2 音乐的存储以十进制将
10、音乐分别存储于note_rom 和 tick_rom 两个模块中,前者为音符,后者为音符的长度,下面给出 世上只有妈妈好 的存储过程。在 Quartus II 主窗体中选择 ToolsMegaWizard Pluge-In Manager,弹出如下对话框,单击Next 继续。精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用图 7 MegaWizard Pluge-In Manager第一页按下图选择并填入文件名,点击Next。图 8 MegaWizard Pluge-In Manager第二页由于音符编在 16 到 32 之间,所以 q 选为 5 位即可,容量选为
11、1024 个字如下图所精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用示图 9 数据和地址宽度的选择在下图中取消“qoutput port”前面的勾,点击Next 继续。精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用图 10 寄存器信号的选择在下图中,按图示选择并填入,点击Next 继续。精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用图 11 指明 ROM 初始化文件精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用图 12 完成 ROM 的定制2.2.3 建立 ROM 初始化文件
12、初始化 ROM 的数据文件有.mif 格式和.hex 格式,这里采用.mif 格式,可以用文本编辑器编辑,也可以用 Quartus II 自带的功能产生 ROM 数据文件。定制一个 512*8 的 ROM 的初始化.mif 文件可按下列步骤进行:选择菜单File|New,在对话框中选择 Memory Initialization File,然后输入 512 和 8,如下图 13(a)所示,点击 OK随即打开.mif 文件,如下图 13(b)所示,然后可在其中输入数据,默认为十进制。精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用(a)ROM 的初始化设置(b)初始化
13、的空的 ROM 文件图 13 ROM 初始化2.2.4 在 ROM 中存储音乐以世上只有妈妈好为例,其简谱如下图所示:图 14 世上只有妈妈好简谱根据前述对音符的编码规则,可知第一个音为中音6,时值为拍,存储为 6 和 6;再如第二个音符为中音 5,时值拍,存储为 5 和 2;又如第五个音符为高音5,时值 1 拍,存储为 21 和 4。依此类推,可将整首乐曲存储如下:精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用(a)文件(b)文件图 15 世上只有妈妈好简谱在ROM 中的存储其它两首乐曲的存储与此类似,且存储在同一个和文件中即可。矩阵式键盘是一种常见的输入装置,
14、根据其电路连接有共阴极和共阳极两种连接方式,可以采用逐行或逐列扫描法获得按键值。本文根据实验室提供的共阳极矩阵键盘设计,其示意图如图 16 所示,定义各功能键如下图 17 所示,其中 17 对应简谱的 17 音符,H、M、L 分别为高、中、低音选择键,AP(Auto Play)为自动播放选择键,EO(Electronic Organ)为电子琴弹奏选择键,Song 为自动播放时的歌曲选择键,三个短“-”代表休止符。图 16 共阳极矩阵式键盘示意图图 17 本系统矩阵键盘功能键示意下面介绍扫描原理,采取逐行扫描法,以 0111、1011、1101、1110 的顺序依次扫描,然后读取列引脚的电平信号
15、即可判断哪个按键按下。例如,当扫描信号为1011 时,表示在精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用扫描第二行,若列读出的电平信号为 1101,则可知第 3 列的键被按下,即第二行第 3 列的键“7”被按下,其它按键依次类推,下表4 中列出了 4*4 矩阵键盘扫描时的情况表 4 按键扫描信息对照表列011110111101 11101111行01111101151110-26-37-4HL无无无无1101APEOSongM对 该 矩 阵 键 盘 按 从 上 到 下、从 左 至 右 的 顺 序 编 码,依 次 为:1,2,3,4,5,6,7,8,9,10,11
16、,12,13,14,15,16。扫描时,选取的扫描频率为1KHz,由 1MHz 分频得到,具体见源程序。3.2 消抖通常的按键所用开关为机械弹性开关,当机械触点断开、闭合时,由于机械触点的弹性作用,一个按键开关在闭合时不会马上稳定地接通,在断开时也不会一下子断开。因而在闭合及断开的瞬间均伴随有一连串的抖动,如右图。抖动时间的长短由按键的机械特性决定,一般为 5ms10ms。这是一个很重要的时间参数,在很多场合都要用到。图 18 按键抖动常见的消抖方法有采样型防抖微分电路、D 型触发器、移位寄存器、计数器,结合各消抖法的特点,本文采用计数器法。3.3 键盘控制模块如右图 9 所示图 19 键盘控
17、制模块精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用键盘控制模块()仿真波形如下图20 所示:图 20 键盘控制模块仿真波形为方便仿真及观察仿真结果,仿真时采用周期为100ns 的 clk,且将中的获得 clk_kb信号的程序中的 if cnt=499 then,(即具体见源程序中斜体注释部分)改为if cnt=10 then,再将延时近程中 clk_kb 改为 clk,count 改为 3 位,然后对 KBCol0.3赋值(如图),即可得到上图所示结果。注意观察图中圈圈的部分,可以看出,第一个圈,对应“AP”键,他不在音符范围内,故 Key_Note 为 0,且
18、 play,sel 均为 1,表示选择自动播放;第二个圈,对应“5”键,在音符范围内,故 Key_Note 为 5;第三个圈,对应“EO”键,他不在音符范围内,故 Key_Note 为 0,且 play,sel 均为 0,表示选择电子琴弹奏;第四个圈,对应“Song”键,产生一个脉冲,仔细分析还应当发现由于消抖,使输出迟了1 个扫描时钟(0.001s),但对本系统无影响。4.乐曲自动播放模块此模块的框图如图 3 所示,元件符号如右图下 21 所示,包含以下模块:ROM 数据读取控制、音符 ROM、节拍 ROM,如下图 22 所示:图 21 乐曲自动播放模块符号精品文档,word 文档本文为网上
19、收集整理,如需要该文档得朋友,欢迎下载使用图 22 乐曲自动播放模块4.1 ROM 数据读取控制该分模块从 tick_rom 中读取节拍,控制读取 ROM 数据的速度,从而实现音乐的节奏。该模块通过可调模值计数器实现,具体参见源程序。乐曲自动播放模块仿真波形如下:图 23 乐曲自动播放模块仿真波形为方便仿真,将源程序中的CLK_FREQ 这一常量的值改为仿真时的时钟信号频率100Hz,三首乐曲的前几个音符如右图所示,第一首的起始音符为中音6,时值一又二分之一拍;第二首的起始音符为中音5,时值为1 拍;第三首的起始音符为0,接着为 1,2,时值分别为二分之一拍、四分之一拍、四分之一拍。对照仿真结
20、果,可知仿真结果正确,程序正精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用确。图 24 三首乐曲的第一句简谱5.电子琴模块此模块主要完成将上一级键盘控制模块送来的音符按键进行译码输出,元件符号如右图 11 所示。如图 12 所示,使能有效后,开始输出音符码:2,第一个圈中key 值为 8,说明下面的音符将转为高音,如后面的 23,26;第二个圈中 key 值为 12,说明下面的音符将转为中音,如其后的 6。可见,程序正确无误。图 25 电子琴模块图 26 电子琴模块仿真波形6.音符发声及显示模块该模块主要将前端送来的音符码转换成相应的声音频率以驱动扬声器发声,并在
21、七段数码管(实验室提供的为八段数码管,但本设计只需七段)上显示音符,且有高低音指示灯。元件符号如右图。七段数码管的原理及使用很简单,在此不再熬述!本文设计的具有自动乐曲演奏功能的电子琴系统选择的基基准频率为 1MHz,根据表 1 可计算出对应精品文档,word 文档本文为网上收集整理,如需要该文档得朋友,欢迎下载使用的音符的分频系数(divider_mod),如下表 5:表 5 1MHz 下简谱中音符分频数音名分频系数音名分频系数音名分频系数低音 13283低音 23405低音 33034低音 42863低音 52551低音 62273低音 72025中音 11911中音 21703中音 31
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 具有 自动 乐曲 演奏 功能 电子琴 设计 2021 整理
限制150内