音乐播放器设计说明

音乐播放器设计说明

ID:6730592

大小:182.50 KB

页数:19页

时间:2018-01-23

音乐播放器设计说明_第1页
音乐播放器设计说明_第2页
音乐播放器设计说明_第3页
音乐播放器设计说明_第4页
音乐播放器设计说明_第5页
资源描述:

《音乐播放器设计说明》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、音乐播放器说明书音乐播放器设计说明1、设计目的充分利用EITS2003多用途EDA开发实验平台的设计资源,完成一个比较复杂的FPGA设计方案,增强对FPGA设计的更深理解,提高设计水平,为今后的更复杂的FPGA设计实践打下坚实的基础。2、设计概述EITS2003多用途EDA开发实验平台给我们提供了丰富的设计资源。它的核心器件为Xilinx公司的Spartan-IIE系列的FPGA芯片,且在FPGA周围提供了丰富的资源:有串口、PS/2接口、VGA接口、LED和七段数码管显示、拨码开关和按钮、AT89S52单片机、SRAM、I2C、A/DD

2、/A转换、扬声器、电源、电源晶振等。这就为我们的设计提供了丰富的选择。考虑到以后实践的需要,且又要达到一定的难度,我们选择了把几种常用接口PS/2、LED显示结合的一个电路。虽然设计并不是很复杂,但其实践意义是很大的。3、设计方案说明3.1总体方案我们设计的总体思想是:利用EITS2003上的拨码开关选择不同的歌曲进行播放,并在相应的七段数码管及LED显示正在播放的音阶。3.2关键部分说明3.2.1音乐电路音乐电路原理:组成乐曲的每个音符的频率值(音调)及持续时间(音长)是实际乐曲演奏的两个基本数据。因此只要控制输出到扬声器的激励信号的频

3、率和信号的持续时间就可以发出持续的乐曲声。频率的高低决定了音调的高低。音乐的十二平均率规定:每连个八度音(如简谱中的中音1与高音1)之间的频率相差一倍。在两个八度音之间,又可以分为十二个半音,每两个半音的频率比为12sqr(2)。另外,音名A(简谱中的低音6)的频率为440Hz,音名B到C之间,E到F之间为半音,其余为全音。由此简谱中从低音1到高音1之间的每个音名对应的频率如下表3所示:音名频率(Hz)音名频率(Hz)音名频率(Hz)低音1261.6中音1523.3高音11046.5低音2293.7中音2587.3高音21174.7低音3

4、329.6中音3659.3高音31318.5低音4349.2中音4689.5高音41396.9低音5392中音5784高音51568低音6440中音6880高音61760低音7493.9中音7987.8高音71975.5根据相应的频率设置分频比,就可以实现音阶的高低。3.3具体实现3.3.1顶层模块顶层模块的输入输出如上图所示。输入:clock是电路板时钟的输入,50兆赫兹;reset用于系统的初始化;switch1、switch2、switch3是EITS2003的拨码开关输入,产生音乐选择信号。输出:speaker用于输出不同频率的时

5、钟,使得蜂鸣器发出不同声音;LED为七段数码管,用于显示高中低音音阶;dig1、dig2、dig3为三段数码管的控制信号,选择数码管的输出;l1、l2、l3、l4、l5、l6、l7为LED显示,指示现输出音阶高低。这些输入输出的对应管脚如下图所示:3.3.2该工程模块结构工程模块层次结构图3.3.3程序说明3.3.3.1Freq_Div模块/*****************************************************************************/Freq_Div.v模块名称:Freq_Di

6、v()模块功能:按输入参数对输入时钟进行分频,输出Clk_User<=Clk_Sys/Div输入输出:Clk_Sys输入,输入时钟,一般为系统时钟,1位Div输入,分频参数输入,26位Clk_User输出,分频后的时钟输出,1位/*****************************************************************************/moduleFreq_Div(Clk_Sys,Div,Clk_User,Reset);inputClk_Sys;input[25:0]Div;outputCl

7、k_User;inputReset;regClk_Usertemp;reg[25:0]cout;assignClk_User=(Div>=2)?Clk_Usertemp:Clk_Sys;//若Div比2小,输出系统时钟always@(posedgeClk_SysornegedgeReset)//等待系统时钟上升沿if(!Reset)begincout<=26'b0;Clk_Usertemp<=1'b0;endelsebeginif(Div>=26'h000_0002)beginif(cout>=Div-1)//输出达到一个周期,重新开始b

8、eginClk_Usertemp<=1'b0;cout<=26'h000_0000;endelseif(cout>=((Div>>1)-1))begincout<=cout+1;Clk_Use

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

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

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