ABOUT ME

-

Today Visit
-
Yesterday Visit
-
Total Visit
-
  • [Verilog] 2 bit Adder and BCD converter
    컴퓨터 과학 깨달음/논리 회로 설계 2025. 9. 24. 23:21

    1) 이번 주 목표

    • 게이트 레벨로 2-bit Ripple 구조 가산기 구현
    • 4-bit 이진수를 2자리 BCD로 바꾸는 BCD 변환기 설계 및 검증

    2) 2-bit 가산기 (Full_Adder_2bit.v & tb_Full_Adder_2bit.v)

    설계 아이디어

    • 입력: 2-bit x, y / 출력: 3-bit led(합의 최대 비트) 구성. x[0]⊕y[0]을 led[0]으로, 발생한 캐리는 상위 비트 합으로 전달한다. 상위 비트는 x[1], y[1], carry를 더하는 Full Adder와 결합해 전체 2-bit adder를 완성했다.
    • 아래 코드는 굳이 data flow 형태로 다 풀어서 적었는데, 2 개의 1 bit full adder를 이어 붙여서 structural modeling으로 구현할 수도 있다.
      x[0]과 y[0]을 첫 번째 full adder에 넣고( carry-in = 0 ) 그 결과 나온 carry-out, x[1],x[2] 를 두 번째 full adder 모듈의 인자로 넣으면 전체 결과를 얻을 수 있다.

    Full_Adder_2bit.v

     

    테스트 (tb_Full_Adder_2bit.v)

    • x, y를 reg [1:0], led를 wire [2:0]으로 두고, 초기값 2’b00에서 시작해 for문으로 모든 (i,j) 16개 조합을 검증했다. 결과는 led에 정확히 출력됨을 확인.
    • 관찰 예시:
      (x,y)=(1,0)→led=(0,0,1), (0,2)→(0,1,0), (2,2)→(1,0,0), (2,3)→(1,0,1)

     

    tb_Full_Adder_2bit.v
    시뮬레이션 결과


    3) BCD 변환기 (BCD.v & tb_BCD.v)

    설계 아이디어

    • 4-bit 이진수에서 9(1001) 초과인 경우 **6(0110)**을 가산해 다음 자리로 넘기는 고전적 보정 방식을 사용했다. 이는 “자릿수를 1 올리고 10을 빼는 것”과 동치이며, 수식으로 +6 = 2^4 − 10으로 해석할 수 있다.
    • 일반화: 10^n BCD 변환에서는 보정량이 16^n − 10^n이 된다.

    BCD.v

     

    테스트 (tb_BCD.v)

    • 입력 bits=4-bit reg, 출력 led=8-bit로 설정. bits=4’b0000에서 시작해 5 time unit마다 1씩 증가시키며 0~15를 확인했다.
    • 대표 결과:
      • 1000(8)→0000 1000(0 8), 1001(9)→0000 1001(0 9)
      • 1010(10)→0001 0000(1 0), 1011(11)→0001 0001(1 1)
    • 추가 예시: 1111(15)→0001 0101(1 5), 1011(11)→0001 0001(1 1)
    🔎 팁: 보정 조건(>9) 검출 로직과 +6 가산 이후의 캐리-아웃이 십의 자리로 정확히 전달되는지 파형으로 확인하자. 입력이 9→10로 넘어갈 때의 경계 동작이 가장 좋은 체크포인트다.

     

    tb_BCD
    시뮬레이션 결과