§ Код модуля

Этот модуль выполняет как динамическую индикацию, так и уменьшает яркость с помощью ШИМ.
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, // 100 mhz
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    //                6543210
27    i == 4'b0000 ? 7'b1000000 : // 0
28    i == 4'b0001 ? 7'b1111001 : // 1
29    i == 4'b0010 ? 7'b0100100 : // 2
30    i == 4'b0011 ? 7'b0110000 : // 3
31    i == 4'b0100 ? 7'b0011001 : // 4
32    i == 4'b0101 ? 7'b0010010 : // 5
33    i == 4'b0110 ? 7'b0000010 : // 6
34    i == 4'b0111 ? 7'b1111000 : // 7
35    i == 4'b1000 ? 7'b0000000 : // 8
36    i == 4'b1001 ? 7'b0010000 : // 9
37    i == 4'b1010 ? 7'b0001000 : // A
38    i == 4'b1011 ? 7'b0000011 : // B
39    i == 4'b1100 ? 7'b1000110 : // C
40    i == 4'b1101 ? 7'b0100001 : // D
41    i == 4'b1110 ? 7'b0000110 : // E
42                   7'b0001110   // F
43   }
44};
45
46endmodule