logic-circuit-design / practice / 06_Caluculator / rtl / SEG7_LUT.v
SEG7_LUT.v
Raw
// 7 segment LED decoder
module SEG7_LUT	( 
    oSEG, 
    iDIG
);
    input  [3:0]        iDIG;
    output [6:0]        oSEG;
    
//    wire   [6:0]        SEG;

    assign  oSEG = SEG(iDIG);

//  7SEG-LED pin assignment
//     ----t----
//     |       |    Common Anode
//     lt     rt     => Negative logic
//     |       |
//     ----m----
//     |       |
//     lb     rb
//     |       |
//     ----b----

    // 7セグで記号を表示させるため10進数で使用していない領域を使用
    function [6:0] SEG;
      input [3:0] iDIG;
      case(iDIG)
            4'h0: SEG = 7'b1000000; // 0
            4'h1: SEG = 7'b1111001; // 1
            4'h2: SEG = 7'b0100100; // 2
            4'h3: SEG = 7'b0110000; // 3
            4'h4: SEG = 7'b0011001; // 4
            4'h5: SEG = 7'b0010010; // 5
            4'h6: SEG = 7'b0000010; // 6
            4'h7: SEG = 7'b1111000; // 7
            4'h8: SEG = 7'b0000000; // 8
            4'h9: SEG = 7'b0011000; // 9
            4'ha: SEG = 7'b0111111; // -
            4'hb: SEG = 7'b1110111; // _
            4'hd: SEG = 7'b0101111; // r
            4'he: SEG = 7'b0000110; // E
         default: SEG = 7'b1111111; // Blank
        endcase
    endfunction

endmodule