이진 가산기
이진 가산기는 두 개의 이진수를 더하는 데 사용되는 반가산기와 전가산기 형태의 산술 회로입니다.
두 개 이상의 이진수를 더할 수 있는 몇 가지 기본 논리 게이트를 사용하여 구성할 수 있는 또 다른 일반적이고 매우 유용한 조합 논리 회로는 이진 가산기 입니다 .
기본 이진 가산기 회로는 표준 AND 및 Ex-OR 게이트 로 만들어서 두 개의 단일 비트 이진수 A 와 B 를 함께 "더하기"할 수 있습니다 .
이 두 숫자를 더하면 덧셈의 SUM 이라는 출력이 생성되고 이진 덧셈 규칙에 따라 CARRY 또는 Carry-out (C OUT ) 비트라는 두 번째 출력이 생성됩니다. 이진 가산기 의 주요 용도 중 하나는 산술 및 계산 회로입니다. 아래의 두 개의 디너리(기본 10) 숫자를 간단히 더하는 것을 고려해 보세요.
123 | ㅏ | (8월) |
+ 789 | 비 | (가수) |
912 | 합집합 |
학교 수학 수업에서 우리는 각 숫자 열이 오른쪽부터 시작하여 함께 추가되고 각 숫자는 열 내의 위치에 따라 가중치가 부여된다는 것을 배웠습니다.
각 열을 더할 때 결과가 기본 숫자인 10보다 크거나 같으면 캐리가 생성됩니다. 그런 다음 이 캐리는 왼쪽에 다음 열을 추가한 결과, 간단한 학교 수학의 추가, 숫자 추가 및 캐리의 결과에 추가됩니다.
이진수를 더하는 것은 십진수를 더하는 것과 정확히 같은 아이디어이지만 이번에는 어떤 열의 결과가 이진수의 기본 수인 "2"보다 크거나 같은 경우에만 캐리가 생성됩니다. 즉, 1+1은 캐리를 생성합니다.
이진 덧셈
이진수 덧셈은 위의 디나리 덧셈과 동일한 기본 규칙을 따릅니다. 단, 이진수에는 가장 큰 숫자가 "1"인 두 자리만 있습니다. 따라서 이진수를 더할 때 "SUM"이 2(1+1)보다 크거나 같을 때 캐리아웃이 생성되고 이는 추가를 위해 다음 열로 전달되는 후속 추가에 대한 "CARRY" 비트가 됩니다. 에. 아래의 단일 비트 추가를 고려하십시오.
두 비트의 이진 추가
0 | 0 | 1 | 1 |
+ 0 | + 1 | + 0 | + 1 |
0 | 1 | 1 | (캐리) 1←0 |
두 개의 단일 비트 A 와 B 를 더할 때 "0 + 0", "0 + 1" 및 "1 + 0"을 추가하면 다음 결과에 도달할 때까지 "0" 또는 "1"이 됩니다. 마지막 열이 "1 + 1"이면 합계는 "2"가 됩니다. 그러나 숫자 2는 이진수에는 존재하지 않지만 이진수 2는 10 과 같습니다 . 즉 합계의 0에 추가 캐리 비트를 더한 것입니다.
그러면 단순 덧셈기의 연산에는 표시된 대로 방정식의 합계(S)와 캐리(C) 비트라는 두 개의 출력을 생성하는 두 개의 데이터 입력이 필요합니다.
이진 가산기 블록 다이어그램
위의 간단한 1비트 덧셈 문제의 경우 결과 캐리 비트는 무시될 수 있지만 이 두 비트의 덧셈과 관련하여 다른 점을 발견했을 수 있습니다. 이진 덧셈의 합은 Exclusive- OR Gate 와 유사합니다 . 두 비트를 A 와 B 로 표시하면 결과 진리표는 두 비트의 합이지만 최종 캐리는 없습니다.
2입력 배타적 OR 게이트
상징 | 진리표 | ||
2입력 Ex-OR 게이트
|
비 | ㅏ | 에스 |
0 | 0 | 0 | |
0 | 1 | 1 | |
1 | 0 | 1 | |
1 | 1 | 0 |
위의 진리표에서 볼 수 있듯이 Exclusive-OR 게이트는 입력 중 하나가 논리 "1"일 때 출력 "1"만 생성하지만 둘 다 이전 두 비트의 이진 추가와 동일하지는 않습니다. 그러나 두 숫자의 덧셈을 수행하려면 마이크로프로세서와 전자 계산기가 방정식을 올바르게 계산하기 위해 추가 캐리 비트가 필요하므로 아래와 같이 출력 데이터의 2비트를 포함하도록 이전 합계를 다시 작성해야 합니다.
00 | 00 | 01 | 01 |
+ 00 | + 01 | + 00 | + 01 |
00 | 01 | 01 | 10 |
위의 방정식에서 우리는 이제 "EITHER" 입력이 논리 "1"일 때 Exclusive-OR 게이트가 출력 "1"을 생성하므로 "BOTH"가 A 를 입력할 때 캐리 비트를 생성하려면 추가 출력이 필요하다는 것을 알고 있습니다. B 는 논리 "1"에 있습니다. 입력 A 와 B가 모두 "1"(HIGH)일 때 출력 "1"을 완벽하게 생성하는 계산서에 맞는 하나의 디지털 게이트가 표준 AND 게이트 입니다 .
2입력 AND 게이트
상징 | 진리표 | ||
2입력 AND 게이트
|
비 | ㅏ | 씨 |
0 | 0 | 0 | |
0 | 1 | 0 | |
1 | 0 | 0 | |
1 | 1 | 1 |
Exclusive-OR 게이트와 AND 게이트를 결합하면 일반적으로 " 반가산기 " 회로 로 알려진 간단한 디지털 이진 가산기 회로가 생성됩니다 .
반가산기 회로
반가산기는 두 개의 이진수에 대한 덧셈 연산을 수행하는 논리 회로입니다. 반가산기는 둘 다 이진수인 합계와 캐리 값을 생성합니다.
반가산기 진리표(캐리아웃 포함)
상징 | 진리표 | |||
비 | ㅏ | 합집합 | 나르다 | |
0 | 0 | 0 | 0 | |
0 | 1 | 1 | 0 | |
1 | 0 | 1 | 0 | |
1 | 1 | 0 | 1 |
반가산기의 진리표에서 SUM( S ) 출력은 Exclusive-OR 게이트 의 결과 이고 캐리아웃( Cout )은 AND 게이트 의 결과임을 알 수 있습니다 . 그러면 반가산기에 대한 부울 표현식은 다음과 같습니다.
SUM 비트 의 경우 :
합계 = A XOR B = A ⊕ B
CARRY 비트 의 경우 :
캐리 = A 및 B = AB
이진 가산기 로 사용될 때 반가산기 회로 의 주요 단점 중 하나는 여러 데이터 비트를 함께 추가할 때 이전 회로의 "캐리인(Carry-in)"에 대한 규정이 없다는 것입니다.
예를 들어, 두 개의 8비트 바이트 데이터를 합산하려는 경우 결과 캐리 비트는 최하위 비트(LSB)부터 시작하여 비트 패턴을 가로질러 이동하거나 "리플"할 수 있어야 합니다. 반가산기가 할 수 있는 가장 복잡한 연산은 "1 + 1"이지만 반가산기에는 캐리 입력이 없으므로 결과적인 추가 값은 올바르지 않습니다. 이 문제를 극복하는 간단한 방법 중 하나는 전가산기 유형의 이진 가산기 회로를 사용하는 것입니다.
전가산기 회로
전가산기 와 이전 반가산기 의 주요 차이점은 전가산기에는 3개의 입력이 있다는 것입니다. 이전과 동일한 두 개의 단일 비트 데이터 입력 A 및 B 와 아래에 표시된 것처럼 이전 단계에서 캐리를 수신하기 위한 추가 Carry-in ( C-in ) 입력입니다.
전체 가산기 블록 다이어그램
그러면 전가산기는 이진수 세 자리에 대해 덧셈 연산을 수행하는 논리 회로이며, 반가산기와 마찬가지로 다음 덧셈 열에 대한 캐리아웃도 생성합니다. 그런 다음 캐리인(Carry-in) 은 덜 중요한 숫자에서 가능한 캐리를 나타내고, 캐리 아웃(Carry-out) 은 더 중요한 숫자로의 캐리를 나타냅니다.
여러 면에서 전가산기는 두 개의 반가산기가 함께 연결된 것으로 생각할 수 있으며, 첫 번째 반가산기는 표시된 것처럼 두 번째 반가산기에 캐리를 전달합니다.
전체 이진 가산기 논리 다이어그램
위의 전가산기 회로는 기본적으로 함께 연결된 두 개의 반가산기이므로 전가산기의 진리표 에는 Carry-in , C IN 입력뿐만 아니라 합산된 출력, S 및 Carry-out을 고려하는 추가 열이 포함됩니다. , C OUT 비트.
캐리가 포함된 전가산 진리표
상징 | 진리표 | ||||
C-in | 비 | ㅏ | 합집합 | C-아웃 | |
0 | 0 | 0 | 0 | 0 | |
0 | 0 | 1 | 1 | 0 | |
0 | 1 | 0 | 1 | 0 | |
0 | 1 | 1 | 0 | 1 | |
1 | 0 | 0 | 1 | 0 | |
1 | 0 | 1 | 0 | 1 | |
1 | 1 | 0 | 0 | 1 | |
1 | 1 | 1 | 1 | 1 |
그러면 전가산기에 대한 부울 표현식은 다음과 같습니다.
SUM ( S ) 비트 의 경우 :
SUM = (A XOR B) XOR Cin = (A ⊕ B) ⊕ Cin
CARRY-OUT ( Cout ) 비트 의 경우 :
캐리아웃 = A AND B OR Cin(A XOR B) = AB + Cin(A ⊕ B)
n비트 이진 가산기
우리는 위에서 단일 1비트 이진 가산기가 기본 논리 게이트로 구성될 수 있다는 것을 살펴보았습니다. 그러나 두 개의 n비트 숫자를 더하고 싶다면 리플 캐리 가산기 (Ripple Carry Adder) 라고 알려진 것을 생성하기 위해 n 개의 1비트 전가산기 n개를 연결하거나 "계단식" 연결해야 합니다 .
"리플 캐리 가산기"는 간단히 말해서 " n "이며, 긴 이진 덧셈에서 단일 가중치 열을 나타내는 각 전가산기와 함께 계단식으로 연결된 1비트 전가산기입니다. 캐리 신호가 이진 가산기를 통해 오른쪽에서 왼쪽으로(LSB에서 MSB로) "리플" 효과를 생성하기 때문에 이를 리플 캐리 가산기라고 합니다.
예를 들어, 두 개의 4비트 숫자를 "더하기" 원한다고 가정하면, 첫 번째 전가산기의 두 출력은 덧셈의 첫 번째 자리 숫자 합계( S )와 올림 역할을 하는 캐리아웃 비트를 제공합니다. 다음 이진 가산기의 숫자로.
체인의 두 번째 이진 가산기는 합산된 출력(두 번째 비트)과 또 다른 캐리아웃 비트를 생성하며 더 큰 수를 추가하기 위해 더 많은 전가산기를 조합에 계속 추가하여 첫 번째 전이진 가산기의 캐리 비트 출력을 연결할 수 있습니다. 다음 전가산기 등등. 4비트 가산기의 예는 다음과 같습니다.
4비트 리플 캐리 이진 가산기
큰 이진수를 추가하기 위해 1비트 이진 가산기를 함께 "계단식"으로 연결할 때의 주요 단점 중 하나는 입력 A 와 B 가 변경되면 캐리 입력이 모든 전가산기를 통해 "파동"을 일으킬 때까지 출력의 합이 유효하지 않다는 것입니다. 왜냐하면 합계의 MSB(최상위 비트)가 LSB(하위 비트) 캐리 입력의 변경 사항을 기다려야 하기 때문입니다. 결과적으로 가산기의 출력이 입력의 변경에 응답하기 전에 유한한 지연이 발생하여 누적된 지연이 발생합니다.
추가되는 비트의 크기가 4비트 또는 8비트와 같이 너무 크지 않거나 가산기의 합산 속도가 중요하지 않은 경우 이 지연은 중요하지 않을 수 있습니다. 그러나 비트 크기가 다중 비트 덧셈기에서 사용되는 32 또는 64비트와 같이 더 크거나 매우 높은 클럭 속도에서 합산이 필요한 경우 이 지연은 덧셈 프로세스가 한 번 내에 올바르게 완료되지 않아 엄청나게 커질 수 있습니다. 시계주기.
이 원치 않는 지연 시간을 전파 지연 이라고 합니다 . 또한 "오버플로"라는 또 다른 문제는 n비트 덧셈기가 두 개의 병렬 숫자를 더할 때 발생하며 그 합 은 2n 보다 크거나 같습니다.
한 가지 해결책은 위의 리플 배열을 사용하는 대신 A 및 B 입력 에서 직접 캐리 입력 신호를 생성하는 것입니다 . 그런 다음 Carry Look Ahead Binary Adder 라는 또 다른 유형의 이진 가산기 회로가 생성됩니다 . 여기서 Carry Look Ahead 논리를 사용하여 병렬 가산기의 속도를 크게 향상시킬 수 있습니다.
올림 미리 가산기의 장점은 올바른 SUM을 생성하기 위해 올림 미리 가산기에 필요한 시간 길이가 연산에 사용된 데이터 비트 수와 무관하다는 점입니다. 병렬 리플 가산기가 완료해야 하는 사이클 시간과 달리 가수의 총 비트 수의 함수인 SUM입니다.
캐리 미리보기 기능이 있는 4비트 전가산기 회로는 TTL 4비트 이진 가산기 74LS83 또는 74LS283 및 CMOS 4008 형태의 표준 IC 패키지로 사용할 수 있습니다. 이 패키지는 두 개의 4비트 이진수를 더하고 SUM을 생성할 수 있습니다 . 그림 과 같이 CARRY 출력이 있습니다.
74LS83 논리 기호
이진 가산기에 대한 요약
우리는 이진 가산기에 대한 이 튜토리얼에서 가산기 회로를 사용하여 "캐리아웃"을 생성하는 두 개의 이진수를 "더하기"할 수 있다는 것을 보았습니다 . 가장 기본적인 형태에서 가산기는 배타적 OR 게이트와 AND 게이트를 함께 연결하여 반가산기 회로를 생성함으로써 만들어질 수 있습니다 . 두 개의 반가산기를 결합하여 전가산기를 생성할 수 있습니다 .
74LS283 및 CD4008과 같은 다양한 4비트 전가산기 IC를 사용할 수 있습니다. 두 개의 4비트 이진수를 추가하고 추가 입력 캐리 비트와 출력 캐리 비트를 제공하므로 함께 계단식으로 연결하여 8비트, 12비트, 16비트 가산기를 생성할 수 있지만 캐리 전파는 발생하지 않습니다. 지연은 대형 n비트 리플 가산기에서 주요 문제가 될 수 있습니다.