简单音乐播放器数电实验Word格式.docx
《简单音乐播放器数电实验Word格式.docx》由会员分享,可在线阅读,更多相关《简单音乐播放器数电实验Word格式.docx(32页珍藏版)》请在冰豆网上搜索。
首先音乐有音高和节拍两个因素。
音高可以通过对时钟信号不同的分频得到不同频率的信号进而发出不同的音,节拍可以定义一个音符计数器,计数器的每_个值对应一个音高。
对播放的控制包括播放/暂停、复位、上一首、下一首、本首重放、顺序播放/随机播放,用一个状态机,共播放和暂停两个状态,另外歌曲的切换以及暂停都是利用音符计数器赋不同的值或保持不变来实现。
音高的显示是通过不同的音符对应不同的点阵row和col的值来实现的。
歌曲号是通过音符计数器的值来得出并送到数码管显示的。
播放、暂停、顺序、随机这些的显示是通过对状态和模式变量的判别进而送到LED显示的。
2)总体框图
3)分块设计
共分为9个模块。
Divl,div2,div3都是用来分频的,分别是将50mhz变为lmhz,将lmhz变为4h乙将lmhz变为2hz。
Rand模块用来产生随机数,用于随机播放模式。
Keycontrol是核心模块,用来实现顺序播放、随机播放、播放/暂停、上一首、下一首、本首重放、复位、显示顺序或随机播放状态、显示播放/暂停态。
Melody模块是将音符计数器的每一个值与一个音高相对应,即记录曲谱。
Index模块是用melody模块传来的音高信号通过查表得到它所对应的音高的分频数,然后将这个分频数送给speaker模块,以发出不同的音,另外对应不同的音它还对点阵进行不同的输出,进而显示出音高。
Speaker模块接收index模块送来的分频数利用分频数对时钟信号进行分频,进而发出不同的音,另外它还接收keycontrol模块送来的暂停态的标志,以保证在暂停态的时候不发出声音。
Shownumber模块通过对音符计数器值的判断确定现在播放的是哪首歌,进而输出不同的歌曲号。
三.仿真波形及波形分析
1)divl模块
由仿真结果可看出,它将50mhz的时钟信号变换为ImhZoDiv2和div3模块分别是将lmhz变为4h乙将lmhz变为2hzz原理相同,因而不再列出仿真结果。
2)Rand模块
由仿真结果可以看出在每一个时钟周期内zrandnumber改变一次,randnumber可作为随机数的产生信号。
>顺序播放:
可以看出,在mode=0,即顺序播放模式下,在没有按田可键时,音符计数器counter随时钟自动加1从而进入下一个音。
Sequential表示顺序播放,random表示随机播放z由图可见此时sequential为高电平,random为低电平,可知此时为顺序播放状态。
>
counter由144自动变到145是第一首播完自动到第二首
下—首:
当按一下一首键时,即nextone变为高电平,音符计数器counter由第一
首歌的14变到了第二首歌开始音符所对应的数145,实现了切换到下一首的功
能。
>本首重放:
当播放到第二首歌的152时,按下了本首重放键,即previous变为高电平,这时counter变为第二首歌起始音对应的数145,进而实现了本首重放的功能。
上一首:
当播放到第二首对应counter为151时f按下了上一首键z即lastone变为高电平,counter变为第一首歌起始音符所对应的值1.从而实现了切换到上—首的功能。
$
24.5m<
>
|Pc<
te[481Kf«
Inter/at45813^StatErrf
A
(M.Ois戦』ns500.0ns520.0ns540.0ns550.0is5S).flnsWO.Ots620.0as&
U.0os560.0is
11111Illi11
荧
111
dHb:
i—ii—i_j_i-1_
3ccoita
1«
l—iiT―:
i—闯—):
—雨—i曲.051―均—1:
―J:
—2―\—3—1q\―5―\
了12
last亦
^13
ic>
h
T
)14
回亦
QD.
了15
PP
网
列
ppspkl
了18
pr^riras
於19
3refiirmber
魏
refill
了24
reset
seitatid
>暂停:
当按下暂停键后,即pp变为高电平,暂停状态的标志ppsymbol就变为高电平,用于送给LED显示播放/暂停态的ppout变为周期信号,实际中周期为Is,即LED会在Is内一亮一灭进行闪烁,表示进入了暂停状态。
|>
Poriw.719C7傅Infeed:
K61了傅Sat
End
CSOpTs6(0,00$SMpns^.,0nsm/)K120pisos砌“5剧p(w
aopreeeopis
20
dElx
11
r
ML
cMii
I--1i-1i_ir
1
J
—
敬
2:
(3:
gqI5*j6
越
1*1?
Ustint
閃3
rod:
r«
tiae
an.
1>
L5
19
1=
ao-
八、
01S
H诚
01T
18
fce^ccis
声19
023
r4T/1ji
g
seguatiil
>暂停后再按"
播放/暂停”键:
在暂停态再按一次播放/暂停键后,即PP再次变为高电平,ppout变为低电平,对应的LED会熄灭表示进入了播放状态,ppsymbol也变为低电平。
>暂停后按下一首:
按了暂停键之后,即pp变为高电平之后,又按了下一首键,即nextone变为高电平,这时进入播放状态,同时counter变成了下一首歌的第一个音符对应的值,实现了通过按下一首退出暂停状态,同时进行歌曲的切换。
>暂停后按上一首:
暂停后按上一首,即pp变为高电平后lastone也变为高电平,则进入播放状态,并且开始播上一首。
(信号counter中158对应的是第二首的音符,1对应的是第一首的音符)
M^Tirefef:
2%
[jPoH*1.73的In^vat1.71u:
Sial:
[
1.21us
Errf121必
\.63os
16^is16?
tsIts17|vs1TJtr1T^tr117tr
1X
1.8]町1.8Jos1.呻仍
Eue
一0
dkzii
dlrth
1_
1_11_1_1_1—1_11_11_1—1_
—i_i—1_1_r
贾
0wim©
155
lH,~2_\―—
UHZ
l^ltoe
!
i!
i
命
□H3
ic4e
-4
oz^tiae
8,
0H5
°
C
?
|•
pput
1!
1!
■!
1
€>
IT
DPSjlMl
prericns
(3
1^23
r^Ldn
吹1
025
se|ueatid
>暂停后按本首重放:
暂停后按本首重放,即pp变为高电平后previous也变为高电平,这时进
入播放状态;
另外counter变为本首歌第一个音对应的数,实现了本首重放。
>复位:
复位所要实现的是不管是在顺序播放还是随机播放状态下,只要一按下复位
键,就从第一首歌开始播放。
如图,counter等于272时reset变为高电平,
counter变为1。
>随机播放:
在随机播放状态,即mode=l时,在第一首歌的最后一个音(counter为144时月寸程序会检测随机数randnumber的值直到是3于是下一次counter就变为第三首歌第一个音对应的数213,从而实现了随机播放。
此时random为高电平,sequential为低电平,表示此时为随机播放状态。
bhteleiTneBj.24.5iwjjPortci53.85^1帕泌5i£
0wStatEnd
53.Kis
S3.Wus
S3.69us
53.71也
53.73is
53.7,5us
53.His
53.”is
S3."
53.K5as
53.85us
53.67us
»
dk2t:
_lIIII!
I厂
IIIIIIIIILII丨I厂
1111111
&
2
0wwlir
is〉;
213X
2W〉;
215*
216X
2门X
218
219
12
last<
04
1*13
Md?
\\
W
时.
016
017
1*16
Kwires
®
ig
日robdxm^cr
3
iaokt
24
rasal
>随机播放状态下按上一首:
按了上一首(lastone变为高电平)后,据随机数randnumber的值3,于
是转入播放第三首。
>按下一首:
和按上一首是一样的z也是根据当前randnumber值来确走下一首要播的是哪一首。
Randnumber等于1、2、3、4分别对应第一、二、三、四首歌。
>按本首重放:
随机播放模式下按本首重放,即previous变为高电平,实现的功能与在顺
序播放模式是一样的。
由图可见,播放到第一首的10时,counter变为:
[,即回到第一首的第一个音开