Decimal Adder(십진 가산기)는 두 개의 십진수(Decimal number)를 BCD(Binary-Coded Decimal) 형태로 더하는 조합 논리 회로다.
즉, 각 자리의 10진 숫자를 4비트 이진수로 표현한 뒤, 이진 덧셈(Binary addition) 을 수행하고,
결과가 10(1010₂) 이상일 때 보정(Correction) 을 해주는 구조다.
BCD(8421) 코드란?
BCD(Binary-Coded Decimal)는 10진수 하나(0~9)를 4비트로 표현한 코드다.
| 10진수 | BCD(8421) |
| 0 | 0000 |
| 1 | 0001 |
| 2 | 0010 |
| 3 | 0011 |
| 4 | 0100 |
| 5 | 0101 |
| 6 | 0110 |
| 7 | 0111 |
| 8 | 1000 |
| 9 | 1001 |
기본 동작 원리
두 개의 BCD 숫자를 더할 때 다음과 같은 절차로 동작한다.
Step 1 — 이진 덧셈 수행
두 4비트 BCD 숫자(예: 0101 + 0111)를 이진 가산기(Full Adder) 로 더한다.
→ 결과가 10 이상(1010₂ ~ 1111₂) 이므로, 이는 유효한 BCD 코드가 아니다.
Step 2 — 보정(Correction)
이진 결과가 10(1010₂) 이상이거나 올림수(Carry)가 발생한 경우,
BCD를 보정하기 위해 6(0110₂) 을 더해준다.
즉,
예시 :
→ 결과: 0010 (2) + 자리올림 1
즉, 12(=1×10 + 2) 로 올바른 BCD 표현이 된다.
보정 조건 (Correction Condition)
다음 두 경우 중 하나라도 참이면 보정을 수행해야 한다.
- 이진 합이 10 이상 (S3S2S1S0 ≥ 1010₂)
- 올림수 C_out = 1 (4비트 가산기에서 자리올림 발생)
즉,
가 1이면, 0110을 더한다.
Decimal Adder 회로 구성
Decimal Adder는 두 개의 주요 블록으로 구성된다.
- 첫 번째 가산기: 두 BCD 숫자를 이진으로 더함
- 보정 로직: 10 이상이면 +6
- 두 번째 가산기: 보정값을 더해 최종 BCD 출력
예제
예제 1
① 이진 덧셈 → 1100 (12)
② 보정 필요 (≥ 1010)
③ +0110 → 1 0010
④ 결과: 0001 0010 (12)
예제 2
① 이진 덧셈 → 0110 (6)
② 10 미만 → 보정 불필요
③ 결과: 0110 (6)
여러 자리(2-digit 이상) 덧셈
여러 자리의 십진수를 더하려면 각 자리마다 Decimal Adder를 직렬로 연결한다.
각 자리의 Carry-out은 다음 자리의 Carry-in으로 전달된다.
이 구조는 실제 BCD 계산기나 디지털 시계 등의 하드웨어에서 그대로 사용된다.
요약
| 항목 | 설명 |
| 입력 | 두 개의 BCD 숫자 (각 4비트) |
| 출력 | 한 자리 BCD 합 + 자리올림 |
| 보정값 | 6(0110₂) |
| 보정 조건 | (S ≥ 1010) or (Carry = 1) |
| 핵심 기능 | 이진 덧셈 후 BCD 범위 초과 시 자동 보정 |
Decimal Adder는 BCD 형태의 십진수를 더할 때,
이진 합이 10 이상이면 자동으로 6(0110₂)을 더해 올바른 BCD 결과를 생성하는 조합 논리 회로다.
'ELECTRONIC' 카테고리의 다른 글
| Decoder / Encoder (0) | 2017.07.05 |
|---|---|
| Binary Multiplier(이진 곱셈기) (0) | 2017.07.05 |
| Quine–McCluskey Method (카르노 맵의 대안적 논리식 최소화 방법) (0) | 2017.07.05 |
| 카르노 맵(Karnaugh Map) (0) | 2017.07.05 |
| 이진 가산기(Binary Adders), 이진 감산기(Binary Subtractor) (0) | 2017.07.05 |