ABOUT ME

-

Today Visit
-
Yesterday Visit
-
Total Visit
-
  • [Verilog] Binary to 7 segment Converter & with ALU
    컴퓨터 과학 깨달음/논리 회로 설계 2025. 10. 17. 17:24

    1) 이번 주 목표

    • Binary → BCD 변환기 및 7-Segment 표시기 설계
    • 카운터 기반 7-Segment 제어 로직 구현
    • ALU 연산 결과를 7-Segment로 출력하는 통합 시스템 제작

    2) Binary to BCD 변환기 (BCD.v)

    설계 아이디어

    • 입력 4-bit binary 값을 tens(십의 자리)와 ones(일의 자리)로 나누어 각각 4-bit BCD로 변환.
    • 이전 주차에서 구현한 Binary to BCD 변환 모듈 재활용.
    • 이 변환된 BCD 값을 7-segment 표시 모듈의 입력으로 사용.
      BCD.v

    3) BCD → 7-Segment 변환기 (BCD_7seg_Converter.v)

    설계 아이디어

    • 입력된 BCD 값을 case문으로 처리하여 0~9 각 숫자에 대해 켜야 할 segment(a~g)를 지정.
    • 예:
      • ‘0’ → 0b11000000
      • ‘1’ → 0b11111001
      • ‘9’ → 0b10010000
    • 각 segment 점등 패턴은 공통 애노드(common anode) 기준으로 작성.
      BCD_7seg_Converter.v

    4) 7-Segment 제어기 (seven_segment_controller.v)

    설계 아이디어

    • 3-bit 카운터를 사용해 8개의 7-Segment 디스플레이(seg0~seg7)를 순차적으로 구동.
    • clk 상승 에지마다 counter가 1씩 증가, reset 시 초기화.
    • counter 값에 따라 seg_COMseg_DATA를 선택적으로 출력.
    • 병렬 7-Segment를 시간 다중화(Time-multiplexing) 방식으로 제어.
      seven_segment_controller.v (1)
      seven_segment_controller.v (2)

    5) 통합 변환기 (Binary_7Seg_Converter.v)

    설계 아이디어

    • BCD, BCD_7seg_Converter, seven_segment_controller 모듈을 결합.
    • Binary 입력 → BCD 변환 → 각 자릿수에 대한 7-Segment 점등 제어까지 일괄 수행.
    • 전체 Schemetic에서 데이터 플로우(입력 → 변환 → 출력)가 명확히 확인됨.
      Binary_7Seg_Converter.v
      Schemetic of Binary_7Seg_Converter

    6) 테스트 (tb_seven_segment.v)

    테스트 구성

    • binary 입력값을 0~15까지 순차적으로 변화시키며, 각 값에 대한 seg0~seg7 점등 확인.
    • binary = 3 일 때:
      • seg_DATA = 252, 242, 0, 0, 0, 0, 0, 0 → ‘03’ 출력 확인
      • seg_COM = 01111111 → 10111111 → 11011111 순으로 정상 순회 확인.

    tb_seven_segment.v

     

    시뮬레이션 결과


    7) ALU 결합 모듈 (Binary_to_7seg_ALU.v)

    설계 아이디어

    • 이전 주차 ALU(Adder/Subtractor/Multiplier 등)와 이번 주차 7-Segment 시스템 결합.
    • ALU의 연산 결과(4-bit)를 Binary_7Seg_Converter 입력으로 연결.
    • Schemetic 상에서도 데이터 흐름이 명확히 일치함.
      ALU.v
      Binary_to_7seg_ALU.v

    Schemetic of Binary_to_7seg_ALU


    8) 테스트 (tb_seven_segment_with_ALU.v)

    테스트 시나리오

    • data_A = 3, data_B = 2 고정.
    • opcode를 0~5까지 증가시키며 연산 결과 및 7-Segment 표시 확인.
    opcode연산예상 출력seg_DATA 예시

     

    0 ADD (3+2) 5 252 182 0 0 0 0 0 0
    2 MUL (3×2) 6 252 190 0 0 0 0 0 0
    • 시뮬레이션 결과, 두 경우 모두 정상적으로 출력이 이루어짐.
      tb_seven_segment_with_ALU

    시뮬레이션 결과


    9) FPGA 실습 결과

    Binary_7Seg_Converter.v

    • 실물 FPGA 상에서 1, 2, 6이 순차적으로 출력됨.

     
     

    Binary_to_7seg_ALU.v

    • 실제 확인된 연산 결과:
      • 3 + 3 = 6
      • 3 × 3 = 9
      • 3 ^ 3 (XOR) → 정상 표시