§ Код модуля

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

endmodule
22 мар, 2021
© 2007-2022 Все права отлично распакованы