BCD to 7 segment Decoder

김동현·2025년 4월 7일

BCD

Binary coded decimal

  • 10 진수를 2진수로 표현하는 방법
  • 10진수를 입,출력으로 하기 위해 사용
    ex) 11(binary) : 1011
    11(BCD) : 0001 0001

BCD excess-3

BCD에 3을 더한 값

  • binary로는 11을 더해주기

BCD와 BCD excess-3 의 예시

BCD to 7 segment Decoder

디코더를 이용하여 전광판 숫자 키기

BCD to 7 segment Decoder verilog source code

`timescale 1ns/1ps

module bcd_to_7seg(
    input   [3:0] bcd,
    output reg [6:0] seg // seg{g,f,e,d,c,b,a}
    );
always @ (*)
begin
   case(bcd)
      4'd0 : seg= 7'b0111111;
      4'd1 : seg= 7'b0000110;
      4'd2 : seg= 7'b1011011;
      4'd3 : seg= 7'b1001111;
      4'd4 : seg= 7'b1100110;
      4'd5 : seg= 7'b1101101;
      4'd6 : seg= 7'b1111101;
      4'd7 : seg= 7'b0000111;
      4'd8 : seg= 7'b1111111;
      4'd9 : seg= 7'b1101111;
      default: seg =7'b00000000;
      endcase
      end
      endmodule

Testbench code

`timescale 1ns/1ps

module bcd_to_7seg_tb;

    reg [3:0] bcd;
    wire [6:0] seg;

    // 테스트할 DUT 인스턴스
    bcd_to_7seg uut (
        .bcd(bcd),
        .seg(seg)
    );

    initial begin
        $display("BCD to 7-Segment Decoder Test");
        $display("------------------------------");
        $display("BCD | Segments");
        $display("------------------------------");

        // 0부터 9까지 BCD 테스트
        for (bcd = 0; bcd < 10; bcd = bcd + 1) begin
            #10; // 10ns 지연
            $display(" %d  | %b", bcd, seg);
        end

        // default 케이스 (invalid BCD)
        bcd = 4'd10;
        #10;
        $display(" %d  | %b (default case)", bcd, seg);

        $finish;
    end

endmodule

Simulation Result

참고: System integrated Circuit design lab

0개의 댓글