简易电子琴的VHDL仿真与实现.doc

简易电子琴的VHDL仿真与实现.doc

ID:50397790

大小:734.50 KB

页数:35页

时间:2020-03-08

简易电子琴的VHDL仿真与实现.doc_第1页
简易电子琴的VHDL仿真与实现.doc_第2页
简易电子琴的VHDL仿真与实现.doc_第3页
简易电子琴的VHDL仿真与实现.doc_第4页
简易电子琴的VHDL仿真与实现.doc_第5页
资源描述:

《简易电子琴的VHDL仿真与实现.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、简易电子琴的VHDL设计与实现35/35一.设计课题与任务要求:设计制作一个简易电子琴演奏器。原理概述:根据声乐知识,产生音乐的两个因素是音乐频率的持续时间,音乐的十二平均率规定,每两个八音度之间的频率相差一倍,在两个八音度之间,又可分为12个半音。每两个半音的频率比为4。另外,音名A(乐谱中的低音6)的频率为440HZ,音名B到C之间,E到F之间为半音,其余为全音。由此可以计算出乐谱中从低音1到高音1之间每个音名的频率如下表所示。表1简谱中的音名与频率的关系音名频率(Hz)音名频率(Hz)音名频率(Hz)低音1261.63中音1523.25高

2、音11046.50低音2293.67中音2587.33高音21174.66低音3329.63中音3659.25高音31318.51低音4349.23中音4698.46高音41396.92低音5391.99中音5783.99高音51567.98低音6440中音6880高音61760低音7493.88中音7987.76高音71975.52基本要求:1、用8×8点阵显示“1234567”七个音符构成的电子琴键盘。其中点阵的第一列用一个LED点亮表示音符“1”,第二列用二个LED点亮表示音符“2”,依此类推,如下图所示。1234567图1点阵显示的电子

3、琴键盘2、用BTN1~BTN7七个按键模拟电子琴手动演奏时的“1234567”七个音符。当某个按键按下时,数码管显示相应的音符,点阵上与之对应的音符显示列全灭,同时蜂鸣器演奏相应的声音;当按键弹开时数码管显示的音符灭掉,点阵显示恢复,蜂鸣器停止声音的输出。下图所示为按下BTN3按键时点阵的显示情况。35/351234567图2按键按下后的点阵显示1、由拨码开关切换选择高、中、低音,并用数码管进行相应的显示。2、通过按键BTN0进行复位,控制点阵显示图1的初始状态。提高要求:1、可通过一个拨码开关进行手动/自动演奏的切换,并与点阵显示配合增加自动

4、演奏乐曲的功能。2、增加手动演奏的音符存储、播放功能。二.系统设计(包括设计思路、总体框图、分块设计)1.设计思路说明:电子琴的设计包括七个模块:弹奏模块keyplay、自动演奏模块autoplay、查表及显示模块table、分频模块fenpin、存储模块store、七段数码管显示模块seg7和点阵的显示模块lattice。弹奏模块keyplay根据按键动作key,和高中低模式选择mode产生指示音调的index_key。自动演奏模块autoplay接收50MHz的时钟信号,输出index_auto。存储录音模块store根据store1选择录

5、音,用数组存储index_key,并将其传输给index_store,作为录音存储的数据。查表及显示模块table根据按键button,replay选择采用index_key或index_auto或者index_store来查分频系数表,输出分频系数tone。对于tone的编码,采用了五位编码方式,高2位存储高中低音对应的11、01、00编码,低3位存储相应输入音调对应的二进制编码。分频模块fenpin接收table输出的分频系数tone,并据此分频,将对应频率的信号buzz输出给扬声器供其发声。七段数码管显示模块seg7根据对应的按键butt

6、on,replay选择采用index_key或index_auto或者index_store,分别对应不同的数码管显示输出。点阵的显示模块lattice根据对应的按键button,replay选择采用index_key或index_auto或者index_store,分别对应不同的数码管显示输出。这样可以保证在不同的模式下点阵以及数码管都可以对应显示输出。35/352.总体框图与流程图图1系统实现流程图35/35图2系统设计框图3.分块设计系统总体设计:图3顶层设计Keyplay模块设计:将输入key[6..0],mode编码为index_ke

7、y[4..0]。index_key[4..0]的高两位表示高、中、低音,00表示低音,01表示中音、11表示高音。index_key[4..0]低三位表示音调,001表示do,010表示re,以此类推,000表示不发音。这样可以实现对不同按键模式下的编码,而这些编码会为后续模块例如seg7,lattice所使用。35/35图4keyplay模块设计autoplay模块设计:把50MHz的输入时钟分频为16Hz,作为节拍。将要自动演奏的歌曲预先写为index_auto的格式(index_auto格式与index_key格式相同)。以16Hz的频率

8、将index_auto输出。这里需要用到计数器,此计数器的长度由演奏的歌曲长度而定。图5autoplay模块设计查表及显示模块table设计:(1)输

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。