-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathDisplay7Seg.v
101 lines (91 loc) · 2.59 KB
/
Display7Seg.v
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
//=======================================================
// This code is generated by Terasic System Builder
//=======================================================
module Display7Seg(
//////////// SW //////////
input [9:0] SW,
//////////// SEG7 //////////
output reg [6:0] HEX0,
output reg [6:0] HEX1,
output reg [6:0] HEX2,
output reg [6:0] HEX3
);
//=======================================================
// REG/WIRE declarations
//=======================================================
reg [10:0] num;
//=======================================================
// Structural coding
//=======================================================
integer index, digit;
always @(SW[0], SW[1], SW[2], SW[3], SW[4], SW[5], SW[6], SW[7], SW[8], SW[9]) begin
// convert switch binary code to decimal
num = SW[0] + (2*SW[1]) + (4*SW[2]) + (8*SW[3]) + (16*SW[4]) + (32*SW[5]) + (64*SW[6]) + (128*SW[7]) + (256*SW[8]) + (512*SW[9]);
// update each 7seg display from most significant to least significant
for(index = 0; index < 4; index = index + 1) begin
digit = (num % (10**(index+1)))/(10**index);
case(digit)
0: case(index)
0: HEX0 <= 7'b1000000;
1: HEX1 <= 7'b1000000;
2: HEX2 <= 7'b1000000;
3: HEX3 <= 7'b1000000;
endcase
1: case(index)
0: HEX0 <= 7'b1111001;
1: HEX1 <= 7'b1111001;
2: HEX2 <= 7'b1111001;
3: HEX3 <= 7'b1111001;
endcase
2: case(index)
0: HEX0 <= 7'b0100100;
1: HEX1 <= 7'b0100100;
2: HEX2 <= 7'b0100100;
3: HEX3 <= 7'b0100100;
endcase
3: case(index)
0: HEX0 <= 7'b0110000;
1: HEX1 <= 7'b0110000;
2: HEX2 <= 7'b0110000;
3: HEX3 <= 7'b0110000;
endcase
4: case(index)
0: HEX0 <= 7'b0011001;
1: HEX1 <= 7'b0011001;
2: HEX2 <= 7'b0011001;
3: HEX3 <= 7'b0011001;
endcase
5: case(index)
0: HEX0 <= 7'b0010010;
1: HEX1 <= 7'b0010010;
2: HEX2 <= 7'b0010010;
3: HEX3 <= 7'b0010010;
endcase
6: case(index)
0: HEX0 <= 7'b0000010;
1: HEX1 <= 7'b0000010;
2: HEX2 <= 7'b0000010;
3: HEX3 <= 7'b0000010;
endcase
7: case(index)
0: HEX0 <= 7'b1111000;
1: HEX1 <= 7'b1111000;
2: HEX2 <= 7'b1111000;
3: HEX3 <= 7'b1111000;
endcase
8: case(index)
0: HEX0 <= 7'b0000000;
1: HEX1 <= 7'b0000000;
2: HEX2 <= 7'b0000000;
3: HEX3 <= 7'b0000000;
endcase
9: case(index)
0: HEX0 <= 7'b0011000;
1: HEX1 <= 7'b0011000;
2: HEX2 <= 7'b0011000;
3: HEX3 <= 7'b0011000;
endcase
endcase
end
end
endmodule