EDA课程设计——乐曲硬件演奏电路.doc
《EDA课程设计——乐曲硬件演奏电路.doc》由会员分享,可在线阅读,更多相关《EDA课程设计——乐曲硬件演奏电路.doc(41页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、Four short words sum up what has lifted most successful individuals above the crowd: a little bit more.-author-dateEDA课程设计乐曲硬件演奏电路EDA课程设计乐曲硬件演奏电路电子技术基础项目设计报告课程名称 任课教师 设计题目 乐曲硬件演奏电路设计 班级 姓名学号 成绩 日期 一、 题目分析1.设计要求利用FPGA,设计一硬件乐曲硬件演奏电路,能够利用硬件电路,自动播放音乐。2.题目分析乐曲是由一连串的音符组成,而每个音符的发音频率值及其持续时间是乐曲能连续演奏所需的两个基本因素
2、。所以,设计音乐发生电路,需要得到相应音符的频率值,及其持续时间。如果能够得到这两个基本元素,利用程序来控制FPGA某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声音。所以,获取这两个要素是本实验的关键。(1)频率值频率的高低决定了音调的高低。由于乐曲都是由一连串的音符组成,因此按照乐曲的乐谱,依次输出这些音符相对应的频率,就可以在蜂鸣器上连续地发出各个音符的音调。简谱的音名与频率的关系如下表:表1简谱中的音名与频率的关系音名频率/Hz音名频率/Hz音名频率/Hz低音1261.6中音1523.3高音11045.5低音2293.7中音2587.3高音21174.7低音3329.6中音
3、3659.3高音31318.5低音4349.2中音4698.5高音41396.9低音5392中音5784高音51568低音6440中音6880高音61760低音7493.9中音7987.8高音71975.5(2)时长这次设计中所演奏的乐曲的最短的音符为四分音符,如果将全音符的持续时间设为1s的话,那么一拍所应该持续的时间为0.25秒,则只需要再提供一个4Hz的时钟频率即可产生四分音符的时长。系统工作时就按4Hz的频率依次读取简谱,当系统读到某个音符的简谱时就对应发这个音符的音调,持续时间为0.25秒,如果在曲谱文件中某个音符为三拍音长,只要将该音符连续书写三遍,系统读乐曲文件的时候就会连续读到
4、三次,也就会发三个0.25秒的音长,这时我们听上去就会持续了三拍的时间,这样就可以控制音乐的音长了。二、 设计方案1.顶层实体描述音乐播放器,是能够演奏一曲完整的乐曲,在外部时钟的作用下,产生相应频率的方波信号,即在乐曲中对应相应的音符。并且信号要持续一定的时间,即对应乐曲中的节拍。得到了音调和节拍后,就可以组成相应的乐曲了。2.模块划分采用“自顶向下”的设计方法,将音乐播放器模块主要划分为地址发生模块、数控分频模块、music模块和预置数模块。(1)地址发生模块:增地址计数器,用于产生地址数。(2)music模块:用于存储乐曲,本次设计,将梁祝的一段乐曲存储在rom中;(3)预置数模块:给分
5、频器提供预置数,需要计算分频预置数;(4)数控分频模块:为了提供乐曲发音所需要的发音频率,编写数控分频器程序,对一输入高频信号,进行分频,生成每个音符发音的相应频率;Music模块分频预置数数控分频器扬声器地址发生器图1 模块划分图3.模块描述(1)地址发生器图2 CNT138实体地址发生器,即是一个计数器,由于存储了梁祝138个音符,所以此计数器的最大值为138。(2)Music模块Music模块存放乐曲的音符数据。由地址发生器为music模块提供地址,每来一个时钟脉冲信号,8位二进制计数器就计数一次,ROM文件中的地址就随着递增,音符数据ROM中的音符也就一个接着一个连续的取出了。图3 r
6、om实体此计数器时钟频率为4Hz,每读一个数据,音符持续时间为0.25秒,恰为当全音符为1s,四四拍的四分音符持续的时间。若需持续较长的时间,需要在ROM中连续写入相应的音符。例如音符数据中的中音3为一拍,持续时间1秒,所以,音符数据ROM中需要连续写入四次音符3,随着4Hz时钟速率读取地址递增,音符数据ROM中的音符数据输出给分频预置数模块。将从音符数据ROM中取出的值,通过q3.0端口输向分频预置数模块。这样乐曲中的音符就可以连续的取出了。(2) 分频预置数模块分频预置数模块是乐曲简谱码对应的分频预置数查表电路,提供了梁祝乐曲全部音符对应的分频预置数,即给数控分频器提供计数初值。图4 F_
7、code实体梁祝乐曲全部音符对应的分频预置数,共13个,此数在TN输入口停留时间即为此音符的节拍值。这13个值的输出由对应于F_code的4位输入值INX3.0确定,而INX3.0最多有16种选择。输向F_code中INX3.0的值在speaker中对应的输出频率值与持续时间由模块music决定。 (3) 数控分频模块音符的频率由数控分频模块获得,该计数器的模为2047,当计数器计满时,计数器产生溢出信号FOUT,此溢出信号就是作为发音的频率信号。由分频预置数模块,提供的计数初值,可以产生对应的信号频率。图5 数控分频模块实体其时钟输入信号为1MHz,模块对CLK输入信号的分频比由11位预置数
8、TN10.0决定,FOUT的输出频率将决定每一个音符的音调,这样,分频计数器的预置值与输出频率就有了对应关系。4.顶层电路图图6 顶层RTL电路图图为顶层实体生成的RTL电路。外部时钟信号由两路组成,一路为4Hz,接CNT138和rom模块,即在时钟信号作用下,存储在rom中的音乐被相应的取出给F_code模块,F_code模块经音符查找表,得到相应音符的分频预置数;另一路时钟信号为1MHz,提供给speaker模块,用作分频时钟,由F_code得到的分频预置数,经数控分频后,输出相应频率的信号给蜂鸣器,便可连续播放音乐了。三、 方案实现1.各模块仿真及描述(1)地址发生器由图可以看出,地址数
9、在4Hz时钟作用下进行累加。 (2)music模块设置WIDTH=4,表示数据输出宽为4;DEPTH=256,表示共有256个4位数据点。在ROM中配置数据文件,编辑.mif文件。初始化数据如下:图8 music存储文件由地址发生器传入相应的地址,对应ROM中相应的音符数据,将音符连续地输出。仿真时序如下:从图中可以看出,随着地址的增加,ROM中存储的音符数据被连续地取出。(3)分频预置数模块从music模块传来相应音符的代码,对应本模块中的分频预置数。(4)数控分频模块若取出的音符为1,对应的分频预置数位773,输出FOUT的频率为,近似和表1中的值相等。2.顶层电路仿真及描述从图中可以看出
10、,在rom中的音符,在4Hz的时钟频率下被连续地取出来,对应的数控分频模块,在1MHz的时钟频率下,输出对应音符的频率值。四、 硬件测试及说明(1)引脚锁定编译仿真无误后,进行硬件测试,首先进行引脚锁定及程序下载,引脚对应如下表:(2)功能描述enable是使能键,enable按下后,开始播放一段梁祝音乐,若按下reset键,则复位,音乐从新播放。在播放音乐的同时,数码管会显示此时播放音乐对应的音符,若为高音,则在数码管上方红灯会亮,若为中音,则不亮。若enable键未按下,则不能播放音乐。五、 结论经过时序仿真,可以看出,在外部输入的两路时钟信号作用下,音符被相应的取出,对应的频率被数控分频
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- EDA 课程设计 乐曲 硬件 演奏 电路
限制150内