📄 song.v
字号:
//*******************************this work is awarded by YangXiao and TangXiaobin********
//******************************* version : 2 ********
//******************************* finish time : 01/11/2006
//******************************* Number: YangXiao 200304015036 ********
//******************************* Number: TangXiaoBin 200304013055 ********
module song(clk,speaker,index,seg,seg_scan);
input clk;
input [2:0] index;
output speaker;
output [6:0] seg;
output [2:0] seg_scan;
reg[2:0] seg_scan;
reg[6:0] seg;
reg[3:0] high,med,low,show_note;
reg[13:0]divider,origin;
reg[7:0] counter1,counter2,counter4;
reg[31:0] counter3;
reg speaker;
reg clk_6MHz,clk_4Hz;
reg seg_select,song1_enable,song2_enable;
wire carry;
assign carry=(divider==16383);
//Frequency Divider 50MHz to 6MHz
always @(posedge clk)
begin
clk_6MHz = 0;
if(counter1>=7)
begin
clk_6MHz = 1;
counter1 = 0;
end
else counter1 =counter1+1;
end
//Frequency Divider 50MHz to 4Hz
always @(posedge clk)
begin
clk_4Hz = 0;
if(counter3>=32'b101111101011110000100000)
begin
clk_4Hz = 1;
counter3= 0;
end
else counter3 = counter3+1;
end
always @(posedge clk_6MHz)
begin
if(carry) divider=origin;
else divider=divider+1;
end
always @(posedge carry)
begin
speaker=~speaker;
end
always @(posedge clk_4Hz)
begin
case({high,med,low})
'b000000000001: origin=4915; //--l1
'b000000000010: origin=6169; //--l2
'b000000000011: origin=7281; //--l3
'b000000000100: origin=7792; //--l4
'b000000000101: origin=8730; //--l5
'b000000000110: origin=9565; //--l6
'b000000000111: origin=10310; //--l7
'b000000010000: origin=10647; //--m1
'b000000100000: origin=11272; //--m2
'b000000110000: origin=11831; //--m3
'b000001000000: origin=12088; //--m4
'b000001010000: origin=12556; //--m5
'b000001100000: origin=12974; //--m6
'b000001110000: origin=13346; //--m7
'b000100000000: origin=13516; //--h1
'b001000000000: origin=13829; //--h2
'b001100000000: origin=14108; //--h3
'b000000000000: origin=16383; //--stop
default : origin=16383;
endcase
end
//7 seg-display coder
always @(posedge clk)
begin
case(show_note)
'b0000: seg =7'b0000001; //--0
'b0001: seg =7'b1001111; //--1
'b0010: seg =7'b0010010; //--2
'b0011: seg =7'b0000110; //--3
'b0100: seg =7'b1001100; //--4
'b0101: seg =7'b0100100; //--5
'b0110: seg =7'b0100000; //--6
'b0111: seg =7'b0001111; //--7
default:seg =7'b0000001; //--0
endcase
end
always @(posedge clk_6MHz)
begin
if(seg_select>=2) seg_select=0;
else seg_select=seg_select+1;
case(seg_select)
0: begin
seg_scan='b001;
show_note=low;
end
1: begin
seg_scan='b010;
show_note=med ;
end
2: begin
seg_scan='b100;
show_note=high;
end
endcase
end
//key_scan
always @(posedge clk_6MHz)
begin
if(index)
begin
case(index)
'b110: begin
song1_enable=1;
song2_enable=0;
counter4=0;
end
'b101: begin
song1_enable=0;
song2_enable=1;
counter2=0;
end
'b011: begin
song1_enable=0;
song2_enable=0;
counter4=0;
counter2=0;
end
endcase
end
end
//the music of the songs{ }
always @(posedge clk_4Hz)
begin
//the first song {梁祝}
if(song1_enable)
begin
if(counter2>=63) counter2=0;
else counter2=counter2+1;
case(counter2)
0: {high,med,low}='b000000000011;
1: {high,med,low}='b000000000011;
2: {high,med,low}='b000000000011;
3: {high,med,low}='b000000000011;
4: {high,med,low}='b000000000101;
5: {high,med,low}='b000000000101;
6: {high,med,low}='b000000000101;
7: {high,med,low}='b000000000110;
8: {high,med,low}='b000000010000;
9: {high,med,low}='b000000010000;
10: {high,med,low}='b000000010000;
11: {high,med,low}='b000000100000;
12: {high,med,low}='b000000000110;
13: {high,med,low}='b000000010000;
14: {high,med,low}='b000000000101;
15: {high,med,low}='b000000000101;
16: {high,med,low}='b000001010000;
17: {high,med,low}='b000001010000;
18: {high,med,low}='b000001010000;
19: {high,med,low}='b000100000000;
20: {high,med,low}='b000001100000;
21: {high,med,low}='b000001010000;
22: {high,med,low}='b000000110000;
23: {high,med,low}='b000001010000;
24: {high,med,low}='b000000100000;
25: {high,med,low}='b000000100000;
26: {high,med,low}='b000000100000;
27: {high,med,low}='b000000100000;
28: {high,med,low}='b000000100000;
29: {high,med,low}='b000000100000;
30: {high,med,low}='b000000100000;
31: {high,med,low}='b000000100000;
32: {high,med,low}='b000000100000;
33: {high,med,low}='b000000100000;
34: {high,med,low}='b000000100000;
35: {high,med,low}='b000000110000;
36: {high,med,low}='b000000000111;
37: {high,med,low}='b000000000111;
38: {high,med,low}='b000000000110;
39: {high,med,low}='b000000000110;
40: {high,med,low}='b000000000101;
41: {high,med,low}='b000000000101;
42: {high,med,low}='b000000000101;
43: {high,med,low}='b000000000110;
44: {high,med,low}='b000000010000;
45: {high,med,low}='b000000010000;
46: {high,med,low}='b000000100000;
47: {high,med,low}='b000000100000;
48: {high,med,low}='b000000000011;
49: {high,med,low}='b000000000011;
50: {high,med,low}='b000000010000;
51: {high,med,low}='b000000010000;
52: {high,med,low}='b000000000110;
53: {high,med,low}='b000000000101;
54: {high,med,low}='b000000000110;
55: {high,med,low}='b000000010000;
56: {high,med,low}='b000000000101;
57: {high,med,low}='b000000000101;
58: {high,med,low}='b000000000101;
59: {high,med,low}='b000000000101;
60: {high,med,low}='b000000000101;
61: {high,med,low}='b000000000101;
62: {high,med,low}='b000000000101;
63: {high,med,low}='b000000000101;
default:{high,med,low}='b000000000000;
endcase
end
// the second song {摇蓝曲}
if(song2_enable)
begin
if(counter4>=127) counter4=0;
else counter4=counter4+1;
case(counter4)
0:{high,med,low}='b000000110000; //中音3
1:{high,med,low}='b000000110000;
2:{high,med,low}='b000000110000;
3:{high,med,low}='b000000110000;
4:{high,med,low}='b000001010000; //中音5
5:{high,med,low}='b000001010000;
6:{high,med,low}='b000001010000;
7:{high,med,low}='b000001010000;
8:{high,med,low}='b000000100000; //中音2
9:{high,med,low}='b000000100000;
10:{high,med,low}='b000000100000;
11:{high,med,low}='b000000110000; //中音3
12:{high,med,low}='b000001000000; //低音4
13:{high,med,low}='b000001000000;
14:{high,med,low}='b000001000000;
15:{high,med,low}='b000001000000;
16:{high,med,low}='b000000110000; //中音3
17:{high,med,low}='b000000110000;
18:{high,med,low}='b000000110000; //中音3
19:{high,med,low}='b000000110000;
20:{high,med,low}='b000000100000; //中音2
21:{high,med,low}='b000000010000; //中音1
22:{high,med,low}='b000000000111; //低音7
23:{high,med,low}='b000000010000; //中音1
24:{high,med,low}='b000000100000; //中音2
25:{high,med,low}='b000000100000;
26:{high,med,low}='b000000100000;
27:{high,med,low}='b000000100000;
28:{high,med,low}='b000000000101; //低音5
29:{high,med,low}='b000000000101;
30:{high,med,low}='b000000000101;
31:{high,med,low}='b000000000101;
32:{high,med,low}='b000000110000; //中音3
33:{high,med,low}='b000000110000;
34:{high,med,low}='b000000110000;
35:{high,med,low}='b000000110000;
36:{high,med,low}='b000001010000; //中音5
37:{high,med,low}='b000001010000;
38:{high,med,low}='b000001010000;
39:{high,med,low}='b000001010000;
40:{high,med,low}='b000000100000; //中音2
41:{high,med,low}='b000000100000;
42:{high,med,low}='b000000100000;
43:{high,med,low}='b000000110000; //中音3
44:{high,med,low}='b000001000000; //中音4
45:{high,med,low}='b000001000000;
46:{high,med,low}='b000001000000;
47:{high,med,low}='b000001000000;
48:{high,med,low}='b000000110000; //中音3
49:{high,med,low}='b000000110000;
50:{high,med,low}='b000000110000; //中音3
51:{high,med,low}='b000000110000;
52:{high,med,low}='b000000100000; //中音2
53:{high,med,low}='b000000110000; //中音3
54:{high,med,low}='b000001000000; //中音4
55:{high,med,low}='b000000100000; //中音2
56:{high,med,low}='b000000010000; //中音1
57:{high,med,low}='b000000010000;
58:{high,med,low}='b000000010000;
59:{high,med,low}='b000000010000;
60:{high,med,low}='b000000000000; //休止
61:{high,med,low}='b000000000000;
62:{high,med,low}='b000000000000;
63:{high,med,low}='b000000000000;
64:{high,med,low}='b000000100000; //中音2
65:{high,med,low}='b000000100000;
66:{high,med,low}='b000000100000;
67:{high,med,low}='b000000100000;
68:{high,med,low}='b000000100000;
69:{high,med,low}='b000000100000;
70:{high,med,low}='b000000100000; //中音2
71:{high,med,low}='b000000100000;
72:{high,med,low}='b000000110000; //中音3
73:{high,med,low}='b000000110000;
74:{high,med,low}='b000000110000;
75:{high,med,low}='b000000100000; //中音2
76:{high,med,low}='b000000010000; //中音1
77:{high,med,low}='b000000010000;
78:{high,med,low}='b000000010000;
79:{high,med,low}='b000000010000;
80:{high,med,low}='b000001010000; //中音5
81:{high,med,low}='b000001010000;
82:{high,med,low}='b000001010000;
83:{high,med,low}='b000001010000;
84:{high,med,low}='b000001100000; //中音6
85:{high,med,low}='b000001010000; //中音5
86:{high,med,low}='b000001000000; //中音4
87:{high,med,low}='b000000110000; //中音3
88:{high,med,low}='b000000100000; //中音2
89:{high,med,low}='b000000100000;
90:{high,med,low}='b000000100000;
91:{high,med,low}='b000000100000;
92:{high,med,low}='b000000000101; //低音5
93:{high,med,low}='b000000000101;
94:{high,med,low}='b000000000101;
95:{high,med,low}='b000000000101;
96:{high,med,low}='b000000110000; //中音3
97:{high,med,low}='b000000110000;
98:{high,med,low}='b000000110000;
99:{high,med,low}='b000000110000;
100:{high,med,low}='b000001010000; //中音5
101:{high,med,low}='b000001010000;
102:{high,med,low}='b000001010000;
103:{high,med,low}='b000001010000;
104:{high,med,low}='b000000100000; //中音2
105:{high,med,low}='b000000100000;
106:{high,med,low}='b000000100000;
107:{high,med,low}='b000000110000; //中音3
108:{high,med,low}='b000001000000; //中音4
109:{high,med,low}='b000001000000;
110:{high,med,low}='b000001000000;
111:{high,med,low}='b000001000000;
112:{high,med,low}='b000000110000; //中音3
113:{high,med,low}='b000000110000;
114:{high,med,low}='b000000110000; //中音3
115:{high,med,low}='b000000110000;
116:{high,med,low}='b000000100000; //中音2
117:{high,med,low}='b000000110000; //中音3
118:{high,med,low}='b000001000000; //中音4
119:{high,med,low}='b000000100000; //中音2
120:{high,med,low}='b000000010000; //中音1
121:{high,med,low}='b000000010000;
122:{high,med,low}='b000000010000;
123:{high,med,low}='b000000010000;
124:{high,med,low}='b000000010000;
125:{high,med,low}='b000000010000;
126:{high,med,low}='b000000010000;
127:{high,med,low}='b000000010000;
default:{high,med,low}='b000000000000;
endcase
end
end
endmodule
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -