컴퓨터 이론/컴퓨터 구성

[컴퓨터 구성] #7 반가산기(Half Adder), 전가산기(Full Adder)

호무비 2022. 9. 10. 22:39
반응형

오늘은 반가산기와 전가산기를 공부해보겠습니다. 컴퓨터가 해야 할 연산 가운데 가장 중요한 것 중 하나가 바로 덧셈 연산입니다. 가산기는 이 덧셈 연산을 해주는 장치인데요, 가산기의 기본이 되는 반가산기와 전가산기에 대해 알아보고 어떤 구조로 되어 있는지 살펴보도록 하겠습니다.


조합 회로 (Combinational Circuits)

 

가산기를 알아보기 전에 먼저 조합 회로(또는 조합 논리 회로)에 대해 알아봅시다. 조합 회로는 입력과 출력이 있는 논리 게이트의 집합으로 구성되는데, 어떤 시점에서도 오직 현재의 입력값에 따라 그 출력값이 정해지는 회로를 의미합니다. 가산기 역시 조합 회로입니다.

 

조금 반대되는 개념으로는 순차 회로(또는 순차 논리 회로)가 있는데요, 순차 회로는 이전 입력값의 영향을 받아 출력값이 결정된다는 점에서 차이가 있습니다. 이는 나중에 따로 포스팅으로 다뤄보도록 하겠습니다.

 

조합 회로의 설계 과정은 다음과 같습니다.

 

1. 문제를 정의한다.

2. 입력/출력 변수를 설정한다.

3. 진리표 작성 후 식을 수립한다.

4. 식을 간소화한다.

5. 회로를 그린다.

 

이 과정을 따라가며 가산기를 설계해보도록 하겠습니다.


가산기 (Adder)

 

반가산기, 전가산기가 무엇인지 알기 전에 가산기에 대해 자세히 알아보겠습니다. 앞서 언급했듯이 가산기는 덧셈 연산을 해주는 장치입니다. 컴퓨터가 수행해야 하는 연산 중 가장 중요한 연산이 덧셈 연산이기 때문에, 컴퓨터를 이해하기 위해서는 가산기를 알아야 합니다.

 

왜 뺄셈, 곱셈, 나눗셈 등 다른 연산이 많은데, 덧셈 연산이 가장 중요한 것일까요? 모두 덧셈 연산으로 대체할 수 있기 때문입니다. 뺄셈은 2의 보수를 이용하여 구할 수 있고, 곱셈은 덧셈을 여러 번 반복하면 됩니다. 나눗셈은 덧셈으로 구현한 뺄셈을 반복하면 되겠죠.

 

가산기는 구현 방식에 따라 성능이 달라지기 때문에 여러 가지 종류가 있습니다. 일단 가장 기본적인 가산기 구조에 대해 알아보겠습니다.


반가산기 (Half Adder)

 

반가산기는 가장 기본적인 덧셈 연산을 하는 장치입니다. 2입력 2출력 구조로, 두 입력값을 더하여 자리 올림 수(carry)와 덧셈 결과(sum)를 출력합니다. 진리표로 그려보면 다음과 같습니다. x, y가 입력이고 c, s가 출력입니다.

 

진리표

이에 따라 식을 세우면 c=xy, s=x'y+xy'=x⊕y입니다. 이전에 설명한 것과 같이 XOR가 덧셈 연산과 같은 역할을 하는 것을 확인할 수 있습니다. 실제 회로로 그려보면 다음과 같습니다.

 

회로 구성

 

반가산기의 이름에 '반'이 들어간 이유는 반가산기 2개로 전가산기를 만들 수 있기 때문입니다. 이어서 전 가산기에 대해 알아보겠습니다.

 

반응형

전가산기 (Full Adder)

 

전가산기는 자리 올림 수까지 포함하여 덧셈 연산을 수행합니다. 3입력 2출력 구조로, 전가산기와 다른 점은 더할 두 입력값 외에 이전 연산에서 생긴 자리 올림 수까지 더해준다는 점입니다. 진리표로 그려보면 다음과 같습니다. x, y, z가 입력이고 c, s가 출력입니다.

 

진리표

 

이 상태로는 식을 세울 수 없으니, 카르노 맵을 그려보겠습니다. 아직 카르노 맵이 익숙하지 않다면 이전 포스팅을 참고하시기 바랍니다.

 

https://homubee.tistory.com/42

 

[컴퓨터 구성] #6 카르노 맵 (Karnaugh Map)과 식 간소화

오늘은 카르노 맵에 대해 알아보겠습니다. 또한, 변수 개수에 따라 식 간소화 과정도 함께 살펴볼 예정입니다. 카르노 맵은 조금 내용이 많습니다. 생소하고 어려울 수 있지만 역시 불대수에 기

homubee.tistory.com

 

c=xy+xz+yz(좌), s=x'y'z+x'yz'+xy'z'+xyz(우)

이에 따라 식을 세우면 c=xy+xz+yz, s=x'y'z+x'yz'+xy'z'+xyz입니다. 오른쪽의 s는 2개 이상 묶을 수 없으므로 특별히 정리되지 않고 최소항 전개식 그대로 표현된 것을 확인할 수 있습니다. 이번에도 실제 회로로 그려보겠습니다.

 

회로 구성(2-level)

 

이 상태로는 반가산기와 그다지 연관이 없어 보입니다. 이전에 말씀드렸듯이 간소화 방식에 따라 정리된 식이 달라질 수 있습니다. 이와 비교하여 반가산기로 만든 전가산기 회로도 살펴보겠습니다.

 

회로 구성(반가산기 조합)

 

XOR과 AND가 2번 반복되는 구조를 볼 수 있습니다. 먼저 x, y의 덧셈을 수행하고, 그 덧셈 결과와 z의 덧셈을 추가로 수행하는 구조입니다. 캐리는 x, y와 x, y, z의 캐리를 OR 연산하여 구합니다. 모양은 조금 다르지만, 실제 논리식을 써서 풀어보면 위에서 구한 식과 같은 것을 확인할 수 있습니다.

 

처음에 보았던 회로는 2-level의 회로라는 장점이 있지만, 무척 복잡합니다. 지금의 회로는 반가산기를 2개 합쳐서 간단하게 만들 수 있으므로 설계하는 입장에서 이득이 있습니다. 또한, 실제 사용되는 게이트의 수를 비교해봐도 이쪽이 더 효율적입니다.

 

테스트

 

두 회로를 라이브러리로 만들어 비교해보았습니다. FA는 Full Adder의 약자입니다. 똑같은 입력을 주었을 때, 똑같은 결과를 출력하는 것을 확인할 수 있습니다. 덧셈 연산도 올바르게 수행하고 있습니다.


반가산기와 전가산기에 대해 알아보았습니다. 이를 확장하여 n-bit 가산기를 만드는 법은 다음 포스팅에서 알아보도록 하겠습니다.

 

직접 조사해서 작성하는 글이다 보니 일부 정확하지 않은 정보가 포함되어 있을 수 있습니다.

궁금한 사항이나 잘못된 내용이 있으면 댓글로 알려주세요~

구독과 좋아요, 환영합니다!

반응형