§ Код модуля
Этот модуль выполняет как динамическую индикацию, так и уменьшает яркость с помощью ШИМ.
1hex74 UnitHex1(
2 .clk (clk),
3 .a (4'h4),
4 .b (4'h3),
5 .c (4'h2),
6 .d (4'h1),
7 .dot (4'b0001),
8 .o (hex)
9 .e (en7)
10);
1module hex74(
2
3 input wire clk,
4 input wire [3:0] a,
5 input wire [3:0] b,
6 input wire [3:0] c,
7 input wire [3:0] d,
8 input wire [3:0] dot,
9 output wire [7:0] o,
10 output wire [3:0] e
11);
12
13reg [17:0] pwm;
14always @(posedge clk) pwm <= pwm + 1;
15assign e = (pwm[15:14] == 2'b00) ? (4'b1 << pwm[17:16]) : 4'h0;
16
17wire [3:0] i =
18 pwm[17:16] == 2'b00 ? a :
19 pwm[17:16] == 2'b01 ? b :
20 pwm[17:16] == 2'b10 ? c : d;
21
22assign o = {
23
24 !dot[ pwm[17:16] ],
25 {
26
27 i == 4'b0000 ? 7'b1000000 :
28 i == 4'b0001 ? 7'b1111001 :
29 i == 4'b0010 ? 7'b0100100 :
30 i == 4'b0011 ? 7'b0110000 :
31 i == 4'b0100 ? 7'b0011001 :
32 i == 4'b0101 ? 7'b0010010 :
33 i == 4'b0110 ? 7'b0000010 :
34 i == 4'b0111 ? 7'b1111000 :
35 i == 4'b1000 ? 7'b0000000 :
36 i == 4'b1001 ? 7'b0010000 :
37 i == 4'b1010 ? 7'b0001000 :
38 i == 4'b1011 ? 7'b0000011 :
39 i == 4'b1100 ? 7'b1000110 :
40 i == 4'b1101 ? 7'b0100001 :
41 i == 4'b1110 ? 7'b0000110 :
42 7'b0001110
43 }
44};
45
46endmodule