具有自动乐曲演奏功能的电子琴设计说明

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

具有自动乐曲演奏功能的电子琴设计

先给出设计结果视频: 具有自动乐曲演奏功能的电子琴-视频实录

本文为本人于2012年下学期做的EDA数字系统设计,文章详细介绍了“具有自动乐曲演奏功能的电子琴”的FPGA设计原理与方法,使用了ROM存储音符和节拍,矩阵键盘控制整个系统。

一、选题目的

电子设计自动化,简称EDA(Electronic Design Automation),发展迅速,应用围日益扩大。它以计算机为工具,设计者在EDA软件平台上,用硬件描述语言VHDL完成设计文件,然后由计算机自动地完成逻辑编译、化简、分割、综合、优化、布局、布线和仿真,直至对于特定目标芯片的适配编译、逻辑映射和编程下载等工作。EDA技术的出现,极提高了电路设计的效率和可操作性,减轻了设计者的劳动强度。

本文应用VHDL硬件描述语言,以QuartusⅡ8.0为开发工具设计了一个具有自动演奏乐曲功能的电子琴系统,它能将预先存储在ROM中的多首乐曲自动播放出来,并同时显示音符,此外,还具有电子琴弹奏的功能。选题新颖、实用,趣味性、综合性较强。

二、设计目标

1. 采用44矩阵键盘作为:电子琴按键,高、中、低音选择键,自动播放和电子琴弹奏功能选择键,乐曲选择键。

2. 使用ROM存储乐曲,达到只要在其中存储乐曲音符节拍的信息即可自动播放的目的,对乐曲的编码要简单易用。

3. 可自动播放《世上只有妈妈好》、《长亭送别》、《十年》三首歌曲,带选歌和自动循环播放的功能。

4. 实时显示正在播放的音符。

5. 设计要具有模块化,层次化的特点。

6. 波形仿真时采用时序仿真,以更加贴近实际,使系统的实际效果达到最佳。

三、实现方案

1. 原理框图

具有自动乐曲演奏功能的电子琴系统的原理结构框图如下:

图1 硬件系统结构框图

图2 软件系统结构框图

图3 乐曲自动播放模块结构框图

图4 乐曲弹奏模块结构框图

2. 设计流程图

具有自动乐曲演奏功能的电子琴系统的VHDL程序设计流程图如下图5:

图5 程序设计流程图

四、设计过程

1. 音乐基础知识

简谱应该说是一种比较简单易学的音乐记谱法。它的最大好处是仅用7个阿拉伯数字----1234567,就能将万千变化的音乐曲子记录并表示出来,并能使人很快记住而终身不忘;同时涉及其他的音乐元素也基本可以正确显示。简谱虽然不是出现在中国,但是好像只有在中国得到非常广泛的传播。

乐音的特性:它由四个方面组成:音高、音值、音量、音色。

音高:由物体在一定的时间震动的次数决定,震动次数多,因则高,反之,则低。

音值:即音的长短,是由音的延续时间的不同而决定的,音的延续时间长,音则长,反之,则短。

音量:即音的强与弱,由震幅的大小决定,震幅大,音则强,反之,则弱。

音色:有发音体的性质决定,发音体的形状及泛音的多少决定音色的不同,例如,小提琴、钢琴等各种乐器的音色都是不同的,在合奏时,人们可清楚地辨认。

乐音体系:在音乐使用中有固定音高的音的总和叫乐音体系。

音级:乐音体系中的各音叫音级,音级有基本音级与变化音级两种。

基本音级:在音乐中经常使用的七个具有独立名称的音叫基本音级。基本音级的名称

用字母或唱名两种方式来标记。

音名:用C、D、E、F、G、A、B来标记基本音级的叫音名,它表示一定的音高,简谱中用1,2,3,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个半音的频率比为。另外,简谱中的低音6的频率为440Hz,音符7到1之间、3到4之间为半音,其余为全音。由此可计算出简谱中从低音1至高音7之间每个音符的频率,如下表1所示:

表1 简谱中音符与频率的关系

1.2

表示音乐的长短需要有一个相对固定的时间概念。简谱里将音符分为全音符、二分音符、四分音符、十六分音符、三十二分音符等,如下表2。在这几个音符里面最重要的是四分音符,它是一个基本参照度量长度,即四分音符为一拍。这里一拍的概念是一个相对时间度量单位。一拍的长度没有限制,可以是1秒也可以是2秒或半秒。假如一拍是一秒的长度,那么二拍就是两秒;一拍定为半秒的话,两拍就是一秒的长度。一旦这个基础的一拍定下来,那么比一拍长或短的符号就相对容易了。正如五线谱的附点一样,数字后方加一点会将音符长度增加一半。

表2 简谱中音符长度

半拍

四分之一拍

三十二分音符八分之一拍

2. VHDL程序设计

2.1 顶层文件

采用原理图输入法设计,其原理图如下:

图6 music_player原理图

各模块的设计如下。

2.2 音符的编码及音乐的存储

2.2.1 音符的编码

休止符的编码为:0;音符长度的编码见表2。音名的编码如下表3所示:

表3音名的编码

2.2.2 音乐的存储

以十进制将音乐分别存储于note_rom和tick_rom两个模块中,前者为音符,后者为音符的长度,下面给出《世上只有妈妈好》的存储过程。在Quartus II 主窗体中选择Tools—MegaWizard Pluge-In Manager…,弹出如下对话框,单击Next继续。

相关文档
最新文档