乐曲自动演奏器及简易电子琴的设计

乐曲自动演奏器及简易电子琴的设计

ID:12917783

大小:50.00 KB

页数:6页

时间:2018-07-19

乐曲自动演奏器及简易电子琴的设计_第1页
乐曲自动演奏器及简易电子琴的设计_第2页
乐曲自动演奏器及简易电子琴的设计_第3页
乐曲自动演奏器及简易电子琴的设计_第4页
乐曲自动演奏器及简易电子琴的设计_第5页
资源描述:

《乐曲自动演奏器及简易电子琴的设计》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、乐曲自动演奏器及简易电子琴的设计所做的作品2007-01-2821:23:49阅读245评论1字号:大中小乐曲自动演奏器及简易电子琴的设计设计制作者:毛传林,张红,胡根水,聂剑飞,王塞中,钱明刚制作时间:2006年12月20日—31日一、设计要求:1.      设计并实现简易电子琴和音乐发生器。2.      理解音名与频率关系,可变分频器原理。3.      画出原理框图,设计并实现简易电子琴和音乐发生器。4.      能用简易电子琴弹奏一首乐曲,自动播放一首歌曲。二、方案论证与比较方案一.使用用现有的EDA实验箱所提供的矩阵键盘,扬

2、声器,EPF10K10TC144-4,脉源等硬件资源,程序设计使用VHDL语言来编制。VHDL语言有如下优点:1.设计技术齐全、方法灵活、支持广泛VHDL语言可以支持自上至下和基于库的设计方法,而且还支持同步电路、异步电路、FPGA以及其它随机电路的设计。2.系统硬件描述能力强VHDL语言具有多层次描述系统硬件功能的能力,可以从系统的数学模型直到门级电路。另外,高层次的行为描述可以与低层次的RTL描述和结构描述混合使用。VHDL语言能进行系统级的硬件描述,这是它的最突出优点。还可以自定义数据类型,给编程人员带来较大的自由和方便。3.VHDL

3、语言可以与工艺无关编程在用VHDL语言设计系统硬件时,没有嵌入与工艺有关的信息。当门级或门级以上层次的描述通过仿真检验之后,再用相应的工具将设计映射成不同的工艺(如MOS、CMOS)。在工艺更新时,就无须修改原设计程序,只要改变相应的映射工具就行了。无论修改电路还是修改工艺相互之间不会产生不良影响。4.VHDL语言标准、规范、易于共享和复用VHDL语言已作为一种IEEE的工业标准,便于复用和交流。方案二.使用单片机制作需要使用汇编语言或是用C语言来编制程序,无法像VHDL语言一很好的支持层次化设计,这就加大了程序的编制难度。无法像VHDL语

4、言一样在EDA工具中进行逻辑综合和优化。给调试也带来了一定的困难。由于本设计所用到的模块比较多,为了使分开编制程序方便。我们选择方案一实现本设计的全部功能。三、设计原理和程序实现本次设计一共有六个模块组成,分别为键盘模块,乐曲节拍发生器模块,琴/乐选择器模块,编码器模块,可编程分频器模块,二分频器模块。原理框图如下:程序的编制也是按模块编写完成后再进行整,通过一个主程序的调用实现这个功能。各个功能模块的分析说明如下:(1)键盘key0模块我们使用的是EDA实验箱上的键盘显示模组。它是一组2X8的按键,键值从0~F。键盘扫描和数码管选通信号是

5、用同一个3—8译码器送出的,扫描键盘时也选通了数码管。在程序编制时我们没有给数码管送信号,所以在使用键盘时不会点亮数码管。(2)25分频器模块因为音乐节拍发生器需要4HZ的时钟脉冲,但是,在EDA实验箱上没有4HZ的脉冲源,于是,把100HZ的脉冲引入25分频器,进过25分频后使它输出4HZ的脉冲再供给乐曲节拍发生器使用。在此处我们使用了一个数码分频器,它可以根据所给的初始值来分成任何频率。这于下面提到的二分频器原理是有所区别的。下面为25分频器的仿真波形:图一25分频器的仿真波形从图中我们可以看到仿真图与我们设想的一样。(3)乐曲节拍发生

6、器DOU-RAI-MI模块在音乐发生器档位,可自动循环播放如下乐曲旋律:

7、

8、:1•2

9、3•1

10、31

11、3—

12、2•3

13、4432

14、4—

15、4—

16、演奏的乐曲旋律存放在这个模块里,最小的节拍为1/2拍。将一拍的时间长定位为0.5s,则1/2拍时长为0.25s。所以需要4HZ的时钟频率。演奏的时间控制通过记谱来实现,对于占用时间较长的节拍(一定是1/2拍的整数倍,如1拍),只需要将该音名连续(两次)即可。音名持续时间的长短由一个时长计数器控制,其时钟为4HZ。该计数器还可以实现乐曲的循环播放。其仿真波形图如下:图二音乐节拍发生器DOU-RAI-MI模块仿

17、真波形我们可以对照程序中记的乐谱发现仿真完全正确。(3)琴/乐选择器BMUX模块系统工作在简易电子琴状态还是音乐发生器状态由此模块的按键CS控制。琴键按下的状态是由键盘模块判断出来然后传到琴/乐选择器,再有此模块输出到下一个模块(即编码器CODER)。其仿真波形为:图三模块BMUX的仿真波形从图中我们可以看到当CS被置为0时按键值才能被输出,且不同的按键对应着不同的输出。完全的符合设计的要求。(4)编码器CODER模块编码器从上一模块(琴/乐选择器)接受到不同的键值,再经转换后输出音名所对应的初始值。所选的初始值可以用如下公式计算出来:首先

18、,计算出分频系数A及n:分频系数A=f/音名频率分频系数n=分频系数A/2分频系数n=f/音名频率/2然后,选择计数容量为多少的计数器N为计数容量,必须大于“最大分频系数n“即N

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

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

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