eda音乐播放器Word文件下载.docx
- 文档编号:20571732
- 上传时间:2023-01-24
- 格式:DOCX
- 页数:26
- 大小:142.86KB
eda音乐播放器Word文件下载.docx
《eda音乐播放器Word文件下载.docx》由会员分享,可在线阅读,更多相关《eda音乐播放器Word文件下载.docx(26页珍藏版)》请在冰豆网上搜索。
1174.66
低音3
329.63
中音3
659.25
高音3
1318.51
低音4
349.23
中音4
698.46
高音4
1396.92
低音5
391.99
中音5
783.99
高音5
1567.98
低音6
440
中音6
880
高音6
1760
低音7
493.88
中音7
987.76
高音7
1975.52
由于音阶频率多为非整数,而分频系数又不能为小数,故必须将得到的分频数四舍五入取整。
若基准频率过低,则由于分频系数过小,四舍五入取整后的误差较大,若基准频率过高,虽然误码差变小,但分频结构将变大。
实际的设计应综合
考虑两方面的因素,在尽量减小频率误差的前提下取舍合适的基准频率。
本例中选取4MHz的基准频率,若无4MHz的时钟频率,实际上,只要各个音名间的相对品频率关系不变,C作1与D作1演奏出的音乐听起来都不会“走调”。
各音阶频率及相应的分频系数如表2所示。
为了减少输出的偶次谐波分量,最后输出到扬声器的波形应为对称方波,因此在到达扬声器之前,有一个二分频的分频器。
表2中的分频系数就是从4MHZ频率二分频得到的2MHZ频率基础上计算得出的。
表2各音阶频率对应的分频值
分频
系数
初始
值
7644
547
3822
4369
1911
6280
6810
1381
3405
4786
1270
6921
6067
2124
3034
5157
1517
6674
5727
2464
2864
5327
1432
6759
5102
3089
2551
5640
1256
6935
4545
3646
2273
5918
1137
7054
4050
4141
2025
6166
1013
7178
由于最大的分频系数为7644,故采用13位二进制计数器已能满足分频要求。
在表2,除给出了分频比以外,给出了对应于各个音阶频率时计数器不同的初始值,对于乐曲中的休止符,要将分频系数设为0,即初始值为8191即可,此时扬声器将不会发声。
对于不同的分频系数,加载不同的初始值即可。
用加载初始值而不是将分频输出译码反馈,可以有效地减少本设计占用可编程逻辑器件的资源,也是同步计数器的一个常用设计技巧。
2、控制音长的节拍发生器该演奏电路演奏的乐曲是“梁祝”片段,其最小的节拍为1拍。
将1拍的时长定为0.25秒,则只需要再提供一个4Hz的时钟频率即可产生1拍的时长,演奏的时间控制通过ROM查表的方式来完成。
对于占用时间较长的节拍,如全音符为
4拍(重复4),2/4音符为2拍(重复2),1/4音符为1拍(重复1)。
3、总体框图:
(如图1)
ll'
J
图1
总体框图说明:
NOTETABS相当于一个计数器,通过计数自动加1读MUSIC模块里的值,然后通过MUXA选择模块选择MUSIC模块中不同的输出,TONETABA模块根据MUXA模块不同的输出选择相应的值,SPEAKERA模块根据TONETABA的输出对12MHZ的时钟
信号进行分频,从而得到相信的频率输出发出声音(音调),从而实现播放不同的歌曲。
四、程序设计:
1、NOTETABS模块:
LIBRARYIEEE;
USEIEEE.STD_LOGIC_1164.ALL;
USEIEEE.STD_LOGIC_UNSIGNED.ALL;
ENTITYNOTETABSIS
PORT(CLK:
INSTD_LOGIC;
COUNTER1:
inoutSTD_LOGIC_vector(7downto0));
ENDNOTETABS;
ARCHITECTUREaOFNOTeTABsIS
BEGIN
P1:
PROCESS(CLK,COUNTER1)
IFCOUNTER1=183THEN
COUNTER1<
="
00000000"
;
ELSIFCLK'
EVENTANDCLK='
1'
THEN
=COUNTER1+1;
ENDIF;
ENDPROCESS;
ENDa;
创建符号:
(如图2)
CLKCOUNT[7__C]COUHTEAJ.H7_.町」图2
2、muxA模块:
ENTITYmuxAIS
PORT(a:
INSTD_LOGIC_vector(3downto0);
b:
outSTD_LOGIC_vector(3downto0);
INDEX:
OUTSTD_LOGIC_vector(3downto0);
Q1:
INSTD_LOGIC_vector(3downto0);
Q2:
Q3:
Q4:
INSTD_LOGIC_vector(3downto0));
ENDmuxA;
ARCHITECTUREaOFmuxAIS
PROCESS(a,Q1,Q2,Q3,Q4)
CASEaIS
WHEN"
0001"
=>
b<
="
INDEX<
=Q1;
0011"
0010"
=Q2;
=Q3;
0110"
0100"
INDEXv=Q4;
WHENOTHERS=>
null;
ENDCASE;
(如图3)
I1UXH
3、TONETABA模块:
ENTITYTONETABAIS
PORT(
:
INDEX
CODE:
OUT
HIGH:
OUT
TONE:
ENDTONETABA;
ARCHITECTUREaOFTONETABAIS
STD_LOGIC_vector(3downto0);
STD_LOGIC;
STD_LOGIC_vector(10downto0));
SEARCH:
PROCESS(INDEX)
<
=
CASEINDEXIS
0000"
TONE<
11111111111"
CODE<
HIGH
'
0'
--2047
WHEN
"
=>
TONE
01100000101"
CODE
--773
TONE
01110010000"
--912
10000001100"
--1036
0101"
10010101101"
--1197
10100001010"
--1290
0111"
10101011100"
--1372
1000"
10110000010"
--1410
1001"
10111001000"
--1480
1010"
11000000110"
--1542
1100"
11001010110"
--1622
1101"
11010000100"
--1668
1111"
11011000000"
--1728
NULL;
(如图4)
COOE[□■■看.
HI«
jHI
TONE[XQi..lej
4、SPEAKERA模块:
useieee.std_logic_unsigned.all;
ENTITYSPEAKERAIS
CLK
IN
STD_LOGIC_vector(10downto0);
SPKS
STD_LOGIC);
ENDSPEAKERA;
ARCHITECTUREaOFSPEAKERAIS
SIGNALPRECLK:
STD_LOGIC;
SIGNALFULLSPKS:
DIVIDECLK:
PROCESS(CLK)
VARIABLECOUNT4:
STD_LOGIC_vector(3downto0);
PRECLK<
='
O'
IFCOUNT4>
11THEN
C0UNT4:
COUNT4:
=COUNT4+1;
ENDPROCESS;
GENSPKS:
PROCESS(PRECLK,TONE)
VARIABLECOUNT11:
STD_LOGIC_vector(10downto0);
IFPRECLK'
EVENTANDPRECLK='
IFCOUNT11=16#7FF#THEN
COUNT11:
=TONE;
FULLSPKS<
ELSECOUNT11:
=COUNT11+1;
DELAYSPKS:
PROCESS(FULLSPKS)
VARIABLECOUNT2:
IFFULLSPKS'
EVENTANDFULLSPKS='
COUNT2:
=NOTCOUNT2;
IFCOUNT2='
SPKS<
ELSE
(如图5)
TONE[1G_
5、MUSIC模块:
Music1:
liangzhu_rom(歌曲名:
梁祝)
WIDTH=4;
DEPTH=256;
ADDRESS_RADIX=DEC;
DATA_RADIX=DEC;
CONTENTBEGIN
00:
3;
23:
12;
46:
9;
69:
7;
01:
24:
47:
70:
02:
25:
48:
71:
03:
26:
49:
72:
6;
04:
5;
27:
50:
8;
73:
05:
28:
51:
74:
06:
29:
52:
75:
07:
30:
53:
76:
08:
31:
0;
54:
77:
09:
32:
55:
78:
10:
33:
56:
79:
11:
34:
57:
80:
12:
35:
10;
58:
81:
13:
36:
59:
82:
14:
37:
60:
83:
15:
38:
61:
84:
16:
39:
62:
85:
17:
40:
63:
86:
18:
41:
64:
87:
19:
15;
42:
65:
88:
20:
13;
43:
66:
89:
21:
44:
67:
90:
22:
45:
68:
91:
92:
104:
116:
128:
93:
105:
117:
129:
94:
106:
118:
130:
95:
107:
119:
131:
96:
108:
120:
132:
97:
109:
121:
133:
98:
110:
122:
134:
99:
111:
123:
135:
100:
112:
124:
136:
101:
113:
125:
137:
102:
114:
126:
138:
103:
115:
127:
END;
(如图6)
■e■Iai■■I・・In
咼DDR氏SfJO]
・・・■■!
・・•・haII.
INCLOCK
i》~TEC-
二■^FPIlT
!
E…%:
lpiviLro^^ddress(]indoch一,
小磴灿PRE5S_COrjTRCiL=TEGi5TERED-'
:
LFMFIL&
d^inyuebofangWan>
gEhurpm.mH"
r:
LPIVl'
hlUlyftMOR[)S=
L™_0□TQAT^'
UNREGISTEREO"
LF>
M_WIDTM=4
.LF*MjUI/iDTH^=6
IHCL
HDDRE7£
£
17.
Music2:
shengri_rom(歌曲名:
生日快乐)
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- eda 音乐 播放