为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

数电实验报告-音乐播放器

2019-05-18 21页 doc 36KB 50阅读

用户头像

is_482581

暂无简介

举报
数电实验报告-音乐播放器实验课题:简易乐曲播放器 学院: 班级: 姓名: 学号: 班内序号: 一、设计课题要求...................................................................................................2 二、设计思路和总体框图........................................................................................2 三、分块电路设计 .............
数电实验报告-音乐播放器
实验课:简易乐曲播放器 学院: 班级: 姓名: 学号: 班内序号: 一、设计课题要求...................................................................................................2 二、设计思路和总体框图........................................................................................2 三、分块电路设计 .................................................................................................4 四、仿真波形...........................................................................................................6 五、源程序..............................................................................................................7 六、功能说明.........................................................................................................20 七、所用元器件情况.............................................................................................20 八、故障及问题分析.............................................................................................21 九、总结和结论.....................................................................................................22 十、参考文献.........................................................................................................22 一 设计课题的任务要求 设计制作一个简易乐曲播放器: 1. 播放器内预存3 首乐曲; 2. 播放模式:顺序播放、随机播放,并用数码管或LED 显示当前播放模式; 顺序播放:按内部给定的顺序依次播放3 首乐曲; 随机播放:随机产生一个顺序播放3 首乐曲; 3. 用数码管显示当前播放乐曲的顺序号; 4. 设置开始/暂停键,乐曲播放过程中按该键则暂停播放,再按则继续播放; 5. 设置Next 和Previous 键,按Next 键可以听下一首,按Previous 键回到本首开始; 6. 选做:用户可以自行设定播放顺序,设置完成后,播放器按该顺序依次播放乐曲; 7. 选做:自拟其它功能。 二 设计思路和总体框图 设计思路: 组成乐曲的每个音符的发音频率值及其持续的时间是乐曲能连续演奏所需的2个基本要素。 乐曲的12平均律:每2个八度音之间的频率相差1倍。在2个八度音之间,又可分为12个半音,每两个半音的频率比为2开12次方。另外,音符A(简谱中的低音6)的频率为440Hz,音符B到C之间、E到F之间为半音,其余为全音。由此可以计算出简谱中从低音1至高音1之间每个音符的频率,如下所示。 产生各音符所需的频率可用分频器实现。本次实验使用的是MAXⅡ实验板,时钟频率为50MHz,计算出各个音符对应的分频系数,进行50%占空比的分频,即可得到各音符对应的频率。 对于节拍,如果将一拍的长度定为1秒,则1/4拍的时间为1/4秒,为其提供一个4Hz的时钟频率即可产生出1/4拍的效果了。若需要半拍,只需将该音符记录两次就可以了。产生节拍时钟也用分频器实现,本次实验中时钟频率为5Hz。 总体框图: 音 乐 播 放 音调 分频器 50MHz 时钟 顺序播放 节拍 分频器 随机播放 暂停/播放 状态判断 本首重放 下一首 单曲循环 上一首 图1:简易乐曲播放器总体结构框图 seq pau =10 MDS图:  随机播放 顺序播放 00 00 01 01 10 暂停 图2:状态转移图1 在顺序播放和随机播放模式下,有四种功能,如下图: ne pre pr rep=0001 上一首 单曲循环 0100 0100 0001 1000 0010 0100 0001 1000 0010 1000 回到本首开始 下一首 0010 图3:状态转移图2 图: 开始 顺序播放 数码管显示曲目序号 N 是否随机播放? Y 随机播放 判断按键 previous present next repeat pause 上一首 单曲循环 下 一 首 回到 本首 开始 暂停 or 播放 图4:简易音乐播放器流程图 三 分块电路设计 二分频 高1 四分频 中1 tune1 八分频 低1 二分频 高2 四分频 中2 tune2 八分频 低2 二分频 高3 四分频 中3 tune3 八分频 低3 二分频 高4 分频 四分频 50MHz 中4 tune4 八分频 低4 二分频 高5 四分频 中5 tune5 八分频 低5 二分频 高6 四分频 中6 tune6 八分频 低6 二分频 高7 四分频 中7 tune7 八分频 低7 图3—音调分频器 四 仿真波形 分频部分: 上图为分频部分程序的波形图,从图中可看出高中低音的频率分别呈2倍关系,例如高1的频率为中1频率的2倍,中1频率的2倍为低1的二倍。 整个程序: present previous pause repeat pause next previous next repeat 顺序播放 随机播放 present 如上图: 1 顺序播放时,light1点亮,light2熄灭,三首曲子1-2-3顺序播放;随机播放时,light2点亮,light1,熄灭,由波形图看出,此次随机播放,乐曲3后接着的是乐曲1; 2 在顺序播放和随机播放两种情况下,当ne为1时,表示要播放下一曲,但蜂鸣器继续播放,当ne又回到0时,开始播放下一曲,数码管显示下一曲的序号; 3 在顺序播放和随机播放两种情况下,当pau为1时,表示暂停,蜂鸣器停止发声,数码管的显示保持不变,当pau回到0时,蜂鸣器继续发声,继续播放曲目; 4 在顺序播放和随机播放两种情况下,当pre为1时,表示要播放下一曲,但蜂鸣器继续播放,当ne又回到0时,开始播放下一曲,数码管显示下一曲序号; 5 在顺序播放和随机播放两种情况下,当rep保持为1时,进行单曲循环播放,数码管显示保持不变,当rep回到0时,取消单曲循环播放,本首乐曲播放完即播放下一曲; 6 在顺序播放和随机播放两种情况下,当pr为1时,表示回到本曲的开始,从头播放正在播放的曲子,数码管的显示保持不变。 备注:上述仿真图有些小,最后我附了一张仿真波形大图。 五 源程序 整个程序只有一个文件,分多个进程完成不同的功能。 library ieee; use ieee.std_logic_1164.all; use ieee.std_logic_unsigned.all; entity music_player is port (clk:              in std_logic;                --主频50MHz seq,ne,pre,pr,pau,rep:in std_logic;  --按键:随机,下一首,上一首,本首,开始,暂停,单曲循环 index0:            out std_logic;                --音频输出 seg:              out std_logic_vector (6 downto 0); --数码管显示序号 cat0:              out std_logic_vector (5 downto 0); --数码管位选 light1,light2:    out std_logic);                  --LED灯 end music_player; architecture a of music_player is signal clk0:  std_logic;                                --节拍时钟 signal count0:integer range 0 to 198;                  --计数器 signal temp1, temp2, temp3, temp4, temp5, temp6, temp7 :integer range 0 to 23871;      --分频系数 signal temp01,temp02,temp03,temp04,temp05,temp06,temp07:std_logic_vector(3 downto 0);        --占空比50%分频 signal tune1, tune2, tune3, tune4, tune5, tune6, tune7 :std_logic; --初始频率(占空比不是50%) signal tmp,qout:std_logic_vector(2 downto 0);          --随机序列 begin fre:process(clk)                --初始分频:高音部分,占空比非50%          begin if (clk'event and clk='1')  then if temp1=23871  then temp1<=0;
/
本文档为【数电实验报告-音乐播放器】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索