§ Код модуля
Этот модуль выполняет как динамическую индикацию, так и уменьшает яркость с помощью ШИМ.
hex74 UnitHex1
(
.clk (clk),
.a (4'h4),
.b (4'h3),
.c (4'h2),
.d (4'h1),
.dot (4'b0001),
.o (hex)
.e (en7)
);
Сам модуль.
module hex74(
input wire clk,
input wire [3:0] a,
input wire [3:0] b,
input wire [3:0] c,
input wire [3:0] d,
input wire [3:0] dot,
output wire [7:0] o,
output wire [3:0] e
);
reg [17:0] pwm;
always @(posedge clk) pwm <= pwm + 1;
assign e = (pwm[15:14] == 2'b00) ? (4'b1 << pwm[17:16]) : 4'h0;
wire [3:0] i =
pwm[17:16] == 2'b00 ? a :
pwm[17:16] == 2'b01 ? b :
pwm[17:16] == 2'b10 ? c : d;
assign o = {
!dot[ pwm[17:16] ],
{
i == 4'b0000 ? 7'b1000000 :
i == 4'b0001 ? 7'b1111001 :
i == 4'b0010 ? 7'b0100100 :
i == 4'b0011 ? 7'b0110000 :
i == 4'b0100 ? 7'b0011001 :
i == 4'b0101 ? 7'b0010010 :
i == 4'b0110 ? 7'b0000010 :
i == 4'b0111 ? 7'b1111000 :
i == 4'b1000 ? 7'b0000000 :
i == 4'b1001 ? 7'b0010000 :
i == 4'b1010 ? 7'b0001000 :
i == 4'b1011 ? 7'b0000011 :
i == 4'b1100 ? 7'b1000110 :
i == 4'b1101 ? 7'b0100001 :
i == 4'b1110 ? 7'b0000110 :
7'b0001110
}
};
endmodule