§ Комбинаторная схема

1 - Светодиод выключен (не горит)
0 - Светодиод включен (горит)
HEX  | 6543210 | DEC              0
-----+---------+-----           -----
0000 | 1000000 | 0           5 |     | 1
0001 | 1111001 | 1             |     |
0010 | 0100100 | 2              -----
0011 | 0110000 | 3           4 |  6  | 2
0100 | 0011001 | 4             |     |
0101 | 0010010 | 5              -----
0110 | 0000010 | 6                3
0111 | 1111000 | 7
1000 | 0000000 | 8
1001 | 0010000 | 9
1010 | 0001000 | A
1011 | 0000011 | b
1100 | 1000110 | C
1101 | 0100001 | d
1110 | 0000110 | E
1111 | 0001110 | F

§ Код на verilog #1

  • i - входящая цифра от 0 до 15
  • o - инверсный выход, 0=горит, 1=не горит
module hex7
(
	input  wire [3:0] i,
	output wire [6:0] o
);

// Сигнал на выход
assign o = {o17, o16, o15, o14, o13, o12, o11};

// Инверсный вход
wire [3:0] n = ~i;

// Основная логика
wire a1  = n[3] & n[2]; wire a14 = a1  & a2;   wire o1  = a14 | a15; wire o11 = o1  | o2;
wire a2  = n[1] & i[0]; wire a15 = a3  & a4;   wire o2  = a16 | a17; wire o12 = o3  | o4;
wire a3  = n[3] & i[2]; wire a16 = a5  & a6;   wire o3  = a18 | a19; wire o13 = o5  | a23;
wire a4  = n[1] & n[0]; wire a17 = a7  & a2;   wire o4  = a20 | a21; wire o14 = o1  | o6;
wire a5  = i[3] & n[2]; wire a18 = a3  & a2;   wire o5  = a22 | a21; wire o15 = o7  | a27;
wire a6  = i[1] & i[0]; wire a19 = a8  & n[0]; wire o6  = a24 | a25; wire o16 = o8  | o9;
wire a7  = i[3] & i[2]; wire a20 = a9  & i[0]; wire o7  = a11 | a26; wire o17 = o10 | a33;
wire a8  = i[2] & i[1]; wire a21 = a7  & n[0]; wire o8  = a28 | a29;
wire a9  = i[3] & i[1]; wire a22 = a1  & a10;  wire o9  = a17 | a30;
wire a10 = i[1] & n[0]; wire a23 = a7  & i[1]; wire o10 = a31 | a32;
wire a11 = n[3] & i[0]; wire a24 = a8  & i[0];
wire a12 = n[2] & n[1]; wire a25 = a10 & a5;
wire a13 = n[3] & i[1]; wire a26 = a12 & i[0];
                        wire a27 = a3  & n[1];
                        wire a28 = a1  & i[0];
                        wire a29 = a1  & i[1];
                        wire a30 = a13 & i[0];
                        wire a31 = a1  & n[1];
                        wire a32 = a3  & a6;
                        wire a33 = a7  & a4;
endmodule

§ Код на verilog #2

Более сокращенный вариант
module hex7
(
    input  wire [3:0] i, // Вход
    output wire [6:0] o, // Выход
    input  wire       e  // e=1 разрешен выход
);

assign o = (e == 0) ? 7'h7F : (
    //                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

§ Логическая схема


21 янв, 2021
© 2007-2022 Ужас в том, что Алсу взлетает под водой