音乐播放器设计说明文档格式.docx
- 文档编号:22079603
- 上传时间:2023-02-02
- 格式:DOCX
- 页数:23
- 大小:64.99KB
音乐播放器设计说明文档格式.docx
《音乐播放器设计说明文档格式.docx》由会员分享,可在线阅读,更多相关《音乐播放器设计说明文档格式.docx(23页珍藏版)》请在冰豆网上搜索。
587.3
高音2
1174.7
低音3
329.6
中音3
659.3
高音3
1318.5
低音4
349.2
中音4
689.5
高音4
1396.9
低音5
392
中音5
784
高音5
1568
低音6
440
中音6
880
高音6
1760
低音7
493.9
中音7
987.8
高音7
1975.5
根据相应的频率设置分频比,就可以实现音阶的高低。
3.3具体实现
3.3.1顶层模块
顶层模块的输入输出如上图所示。
输入:
clock是电路板时钟的输入,50兆赫兹;
reset用于系统的初始化;
switch1、switch2、switch3是EITS2003的拨码开关输入,产生音乐选择信号。
输出:
speaker用于输出不同频率的时钟,使得蜂鸣器发出不同声音;
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_Div()
模块功能:
按输入参数对输入时钟进行分频,输出
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;
outputClk_User;
inputReset;
regClk_Usertemp;
reg[25:
0]cout;
assignClk_User=(Div>
=2)?
Clk_Usertemp:
Clk_Sys;
//若Div比2小,输出系统时钟
always@(posedgeClk_SysornegedgeReset)//等待系统时钟上升沿
if(!
Reset)
begin
cout<
=26'
b0;
Clk_Usertemp<
=1'
end
else
begin
if(Div>
h000_0002)
begin
if(cout>
=Div-1)//输出达到一个周期,重新开始
begin
Clk_Usertemp<
cout<
h000_0000;
end
elseif(cout>
=((Div>
>
1)-1))
=cout+1;
b1;
else
end
endmodule
3.3.3.2HEX2LED模块
/****************************************************************************/
HEX2LED.v
//*****************************************************************************
//HEX-to-seven-segmentdecoder
//input[3:
0]HEX;
//output[6:
0]LED;
//reg[6:
//
//segmentencoding
//0
////-
//5||1
////-<
-6
//4||2
////-
//3
moduleHEX2LED(HEX,LED);
//HEX:
输入十六进制信号
//LED:
输出显示信号
input[3:
output[6:
reg[6:
always@(HEX)
begin
case(HEX)
4'
b0001:
LED<
=7'
b0000110;
//1
b0010:
b1011011;
//2
b0011:
b1001111;
//3
b0100:
b1100110;
//4
b0101:
b1101101;
//5
b0110:
b1111101;
//6
b0111:
b0000111;
//7
b1000:
b1111111;
//8
b1001:
b1101111;
//9
b1010:
b1110111;
//A
b1011:
b1111100;
//b
b1100:
b0111001;
//C
b1101:
b1011110;
//d
b1110:
b1111001;
//E
b1111:
b1110001;
//F
default:
b0111111;
//0
endcase
end
3.3.3.3ShowKey模块
ShowKey.v
根据音阶高低,相应的LED发亮。
moduleShowKey(selectLED,l1,l2,l3,l4,l5,l6,l7);
0]selectLED;
outputl1;
outputl2;
outputl3;
outputl4;
outputl5;
outputl6;
outputl7;
regl1,l2,l3,l4,l5,l6,l7;
always@(selectLED)
case(selectLED)
b0001:
{l1,l2,l3,l4,l5,l6,l7}<
=7'
b0010:
b1011111;
b0011:
b0100:
b0101:
b1111011;
b0110:
b0111:
b1111110;
default:
endcase
end
3.3.3.4switch模块
/**************************************************************************/
switch.v
根据三个拨码开关的情况,选择相应的歌曲输出
moduleswitch(clk_4,clk_6M,switchnum,selectLED,dig1,dig2,dig3,speaker);
input[2:
0]switchnum;
inputclk_4,clk_6M;
outputselectLED;
outputdig1,dig2,dig3;
outputspeaker;
wireclk_4,clk_6M;
wire[3:
0]high,med,low;
reg[3:
regdig1,dig2,dig3;
song1mysong(
.clk_4Hz(clk_4),
.clk_6MHz(clk_6M),
.switchnum(switchnum),
.speaker(speaker),
.high(high),
.med(med),
.low(low)
);
always@(highormedorlow)
begin
if(high!
=4'
b0000)
dig1<
=0;
dig2<
=1;
dig3<
selectLED<
=high;
if(med!
=med;
if(low!
=low;
endmodule
3.3.3.5song1模块
song1.v
记录歌谱内容。
当拨码开关为高电平时,输出相应的歌曲,若拨码开关状态不变,实现循环播放。
modulesong1(clk_4Hz,clk_6MHz,switchnum,speaker,high,med,low);
inputclk_4Hz;
inputclk_6MHz;
inputswitchnum;
outputhigh,med,low;
wire[2:
reg[3:
reg[13:
0]divider;
wire[13:
0]origin;
reg[7:
0]counter;
regspeaker;
wirecarry;
assigncarry=(divider==16383);
always@(posedgeclk_6MHz)
if(carry)divider=origin;
elsedivider=divider+1;
always@(posedgecarry)
speaker=~speaker;
Freqoriginmyorigin(
.clk_4Hz(clk_4Hz),
.low(low),
.origin(origin)
always@(posedgeclk_4Hz)
begin
if(switchnum==3'
b100)
if(counter==63)counter=0;
elsecounter=counter+1;
case(counter)
0:
{high,med,low}='
b000000000011;
1:
2:
3:
4:
b000000000101;
5:
6:
7:
b000000000110;
8:
b000000010000;
9:
10:
11:
b000000100000;
12:
13:
14:
15:
16:
b000001010000;
17:
18:
19:
b000100000000;
20:
b000001100000;
21:
22:
b000000110000;
23:
24:
25:
26:
27:
28:
29:
30:
31:
32:
33:
34:
35:
36:
b000000000111;
37:
38:
39:
40:
41:
42:
43:
44:
45:
46:
47:
48:
49:
50:
51:
52:
53:
54:
55:
56:
57:
58:
59:
60:
61:
62:
63:
endcase
end
b010)
if(counter==100)counter=0;
//中音5
//中音6
//高音1
//中音7
{high,me
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 音乐 播放 设计 说明