北邮数电实验音乐播放器.docx
数字电路与逻辑设计综合设计实验报告
实验名称:简易音乐播放器
姓名:
班级:071
班内序号:
摘要
本实验主要在理论分析和具体的软硬件实现上,完成一个简易的音乐播放器,可以完成上一曲,下一曲,顺序播放,停止,暂停和液晶显示,同时还增加了单曲循环播放功能。在理论分析的基础上,用VHDL语言编写源代码,再配合具体电路连接,实现对蜂鸣器振动的控制,以及对各项显示功能的切换控制等。
关键字:频率蜂鸣器显示
设计任务要求
n设计制作一个简易乐曲播放器。
1.播放器内预存3首乐曲;
2.播放模式:顺序播放、随机播放,并用数码管或LED显示当前播放模式;
3.顺序播放:按内部给定的顺序依次播放3首乐曲;
4.随机播放:随机产生一个顺序播放3首乐曲;
5.用数码管显示当前播放乐曲的顺序号;
6.设置开始/暂停键,乐曲播放过程中按该键则暂停播放,再按则继续播放;
7.设置Next和Previous键,按Next键可以听下一首,按Previous键回到本首开始;
8.选做:用户可以自行设定播放顺序,设置完成后,播放器按该顺序依次播放乐曲;
9.选做:自拟其它功能。
三、设计思路和总体设计框图
分频器讲1MHz的时钟频率分成4Hz,便于输出每个音符
切换控制器接收到上曲和下曲信号后,自动切换输出时钟;如当正在播放曲1时,收到上曲信号后,自动切换到向曲2提供时钟,中断曲1的时钟;
每首曲目结束后,自动输出一个单脉冲给复位模块,如果此时是顺序播放模式时,复位模块向控制器输出复位信号;如果此时是单曲重复播放模式时,复位模块屏蔽接收的单脉冲,不向控制器输出信号。
曲目向数控分频器依次输入各个音符,在数控分频器中与2047相减后,迫使蜂鸣器振动,由于各个音符的频率不同,振动的频率自然不同,蜂鸣器发出的声音也完全不同。
当输入暂停信号时,暂停模块用高电平与时钟相或,从而产生中断时钟的效果;当输入停止信号时,原理同上,只是多输出一个复位信号给切换控制器。
6、总体结构框图
Hch
Hch切换控制器
Up上曲
Dow下曲
stop
Reset复位
Sx/nx顺序播放/单曲循环播放
曲1
曲2
曲3
分频器
Control数控分频器
四、程序的状态转移图和逻辑流程图
1、状态转移图
曲1曲2
曲1
曲2
曲3
previous
重复播放 next previous next
重复播放
next
开始2、逻辑流程图
开始
暂停/
暂停/播放
单曲循环播放
单曲循环播放/顺序播放
顺序播放单曲循环播放
顺序播放
单曲循环播放
曲1
曲1
单曲循环播放模式
曲2
曲2
单曲循环播放模式 顺序播放模式
顺序播放模式
曲
曲3
单曲循环播放模式
五、完整的源程序
-------总模块
libraryieee;
useieee.std_logic_1164.all;
useieee.numeric_std.all;
entitytop_tryis
port(in_clk,in_pause,in_up,in_down,in_stop,in_sxnx:instd_logic;
speak:outstd_logic;
out_cat:outstd_logic_vector(5downto0);
showout:outstd_logic_vector(7downto0));
endtop_try;
architecturetopoftop_tryis
componentpause———暂停
port(pause,clk,stop:instd_logic;
outpause:outstd_logic);
endcomponent;
componentstop------停止
port(stopin:instd_logic;
reset,pause:outstd_logic);
endcomponent;
componentup-------上一曲
port(upin,up_in:instd_logic;
reset,upout:outstd_logic);
endcomponent;
componentdown