-
Notifications
You must be signed in to change notification settings - Fork 1
/
cal_divnum_04.v.bak
49 lines (40 loc) · 1.25 KB
/
cal_divnum_04.v.bak
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
module cal_divnum_04 (
input wire clk_04,
input wire rst_n_04,
input wire [4:0] music_04,
output reg [31:0] divnum_04
);
reg [31:0] freq;
always @ * begin
case (music_04)
5'd1 : freq = 32'd262;
5'd2 : freq = 32'd294;
5'd3 : freq = 32'd330;
5'd4 : freq = 32'd349;
5'd5 : freq = 32'd392;
5'd6 : freq = 32'd440;
5'd7 : freq = 32'd494;
5'd8 : freq = 32'd523;
5'd9 : freq = 32'd587;
5'd10 : freq = 32'd659;
5'd11 : freq = 32'd699;
5'd12 : freq = 32'd784;
5'd13 : freq = 32'd880;
5'd14 : freq = 32'd988;
5'd15 : freq = 32'd1050;
5'd16 : freq = 32'd1175;
5'd17 : freq = 32'd1319;
5'd18 : freq = 32'd1397;
5'd19 : freq = 32'd1568;
5'd20 : freq = 32'd1760;
5'd21 : freq = 32'd1976;
default : freq = 32'd1;
endcase
end
always @ (posedge clk, negedge rst_n) begin
if (rst_n == 1'b0)
divnum <= 32'd50_000_000;
else
divnum <= 50_000_000/freq;
end
endmodule