欢迎来到天天文库
浏览记录
ID:20457868
大小:394.69 KB
页数:11页
时间:2018-10-13
《eda课程设计乐曲硬件演奏电路》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、《电子技术基础III》项目设计报告乐曲硬件演奏电路设计课程名称任课教师设计题目班级姓名学号成绩日期一、题目分析1.设计要求利用FPGA,设计一硬件乐曲硬件演奏电路,能够利用硬件电路,自动播放音乐。2.题目分析乐曲是由一连串的音符组成,而每个音符的发音频率值及其持续时间是乐曲能连续演奏所需的两个基木因素。所以,设计音乐发生电路,需要得到相应音符的频率值,及其持续吋间。如果能够得到这两个基本元素,利用程序来控制FPGA某个引脚输出一定频率的矩形波,接上扬声器就能发出相应频率的声咅。所以,获取这两个要素是本实验的关键。
2、(1)频率值频率的高低决定了音调的高低。由于乐曲都是由一连串的音符组成,因此按照乐曲的乐谱,依次输出这些咅符相对应的频率,就可以在蜂鸣器上连续地发出各个音符的音调。简谱的音名与频率的关系如下表:表1简谱屮的音名与频率的关系音名频率/Hz音名频率/Hz音名频率/Hz低音1261.6屮音1523.3高音11045.5低音2293.7巾音2587.3高音21174.7低音3329.6中音3659.3高音31318.5低音4349.2中音4698.5尚背41396.9低音5392中音5784髙音51568低音6440中音
3、6880高音61760低音7493.9中音7987.8高音71975.5(2)时长这次设计中所演奏的乐曲的最短的音符为四分音符,如果将全音符的持续吋间设为Is的话,那么一拍所应该持续的时间为0.25秒,则只需要再提供一个4Hz的时钟频率即可产生四分音符的时长。系统工作时就按4Hz的频率依次读取简谱,当系统读到某个咅符的简谱吋就对应发这个音符的咅调,持续吋间为0.25秒,如果在曲谱文件屮某个音符为三拍音长,只要将该音符连续书写三遍,系统读乐曲文件的时候就会连续读到三次,也就会发三个0.25秒的音长,这吋我们听上去就
4、会持续了三拍的时间,这样就可以控制音乐的音长了。、设计方案1.顶层实体描述音乐播放器,是能够演奏一曲完整的乐曲,在外部时钟的作用下,产生相应频率的方波信号,即在乐曲中对应相应的音符。并且信号要持续一定的时间,即对应乐曲中的节拍。得到了音调和节拍后,就可以组成相应的乐曲了。2.模块划分采用“自顶向下”的设计方法,将音乐播放器模块主耍划分为地址发生模块、数控分频模块、music模块和预置数模块。(1)地址发生模块:增地址计数器,用于产生地址数。(2)music模块:用于存储乐曲,本次设计,将《梁祝》的一段乐曲存储在r
5、om中;(3)预置数模块:给分频器提供预置数,需要计算分频预置数:(4)数控分频模块:为了提供乐曲发音所需要的发音频率,编写数控分频器程序,对一输入高频信号,进行分频,生成每个音符发音的相应频率;ra6、c模块Music模块存放乐曲的音符数据。由地址发生器为music模块提供地址,每来一个时钟脉冲信号,8位二进制计数器就计数一次,ROM文件中的地址就随着递增,音符数据ROM中的音符也就一个接着一个连续的取出了。自rom;address[7"D]q[3..O]—*clockinst图3rom实体此计数器时钟频率为4Hz,每读一个数据,音符持续时间为0.25秒,恰为当全音符为ls,四四拍的四分音符持续的时间。若需持续较长的时间,需要在ROM中连续写入相应的音符。例如音符数据中的中音3为一拍,持续时间1秒,所以,咅符数7、据ROM中需要连续写入四次咅符3,随着4Hz吋钟速率读取地址递增,音符数据ROM屮的音符数据输出给分频预置数模块。将从音符数据ROM中取出的值,通过q[3..0]端口输向分频预置数模块。这样乐曲中的音符就可以连续的取出了。(2)分频预置数模块分频预置数模块是乐曲简谱码对应的分频预置数查表电路,提供了《梁祝》乐曲全部音符对应的分频预置数,即给数控分频器提供计数初值。FcodeINX[3..O]CODE[3..01TONE[10..0]inst图4F_codc实体《梁祝》乐曲全部音符对应的分频预置数,共13个,此数在8、TN输入口停留时间即为此音符的节拍值。这13个值的输出由对应于F_code的4位输入值INX[3..O]确定,而INX[3..O]最多有16种选择。输向F_code中INX[3..O]的值在speaker中对应的输出频率值与持续吋间由模块music决定。(3)数控分频模块音符的频率由数控分频模块获得,该计数器的模为2047,当计数器计满吋,计数器产生溢出信号FOUT,此溢
6、c模块Music模块存放乐曲的音符数据。由地址发生器为music模块提供地址,每来一个时钟脉冲信号,8位二进制计数器就计数一次,ROM文件中的地址就随着递增,音符数据ROM中的音符也就一个接着一个连续的取出了。自rom;address[7"D]q[3..O]—*clockinst图3rom实体此计数器时钟频率为4Hz,每读一个数据,音符持续时间为0.25秒,恰为当全音符为ls,四四拍的四分音符持续的时间。若需持续较长的时间,需要在ROM中连续写入相应的音符。例如音符数据中的中音3为一拍,持续时间1秒,所以,咅符数
7、据ROM中需要连续写入四次咅符3,随着4Hz吋钟速率读取地址递增,音符数据ROM屮的音符数据输出给分频预置数模块。将从音符数据ROM中取出的值,通过q[3..0]端口输向分频预置数模块。这样乐曲中的音符就可以连续的取出了。(2)分频预置数模块分频预置数模块是乐曲简谱码对应的分频预置数查表电路,提供了《梁祝》乐曲全部音符对应的分频预置数,即给数控分频器提供计数初值。FcodeINX[3..O]CODE[3..01TONE[10..0]inst图4F_codc实体《梁祝》乐曲全部音符对应的分频预置数,共13个,此数在
8、TN输入口停留时间即为此音符的节拍值。这13个值的输出由对应于F_code的4位输入值INX[3..O]确定,而INX[3..O]最多有16种选择。输向F_code中INX[3..O]的值在speaker中对应的输出频率值与持续吋间由模块music决定。(3)数控分频模块音符的频率由数控分频模块获得,该计数器的模为2047,当计数器计满吋,计数器产生溢出信号FOUT,此溢
此文档下载收益归作者所有