-
[문제해설] 다음 그림은 4비트 병렬 가산기이다. overflow를 검출하기 위한 점선내의 Gate와 회로내의 결선을 연결하시오.전자계산기조직응용기사/실기 필답형 기출문제 해설 2022. 1. 4. 03:48반응형
전자계산기조직응용기사 실기 필답형 기출문제 (조합회로) - 2008년3회, 2011년1회, 2013년3회
다음 그림은 4비트 병렬 가산기이다. overflow를 검출하기 위한 점선 내의 Gate와 회로 내의 결선을 연결하시오.
- 문제 해설 -
4비트 병렬 가산기는 4개의 전가산기(full adder)를 이용하여, 다음과 같이 구성되는 회로입니다.
위 회로가 작동하는 원리는 살펴보겠습니다.
예를 들어, A = 1010, B = 0011라고 가정할 때, 위 회로도에 값을 그대로 대입하면 다음과 같습니다.
위 그림처럼 회로도의 입력, 출력, 캐리 값 자리를 숫자로 표시해 놓고 보면, 회로도가 어떻게 작동하는지 한눈에 알아볼 수 있습니다.
본문제에서 말하는 overflow란, 표현할 수 있는 수치를 넘는 것을 말합니다. 단순한 부호 없는 2진수라면, 문제에서 주어진 4비트 병렬 가산기는 oveflow가 발생하지 않습니다. 예로, A와 B가 입력 최댓값인 1111이면, 1111+1111=1 1110 이므로, 문제에서 제시한 4비트 병렬 가산기가 그 값을 충분히 표현할 수 있습니다. 물론 이 경우는 음수를 사용하지 않는 경우입니다. C언어에서 unsigned 자료형들이 이 같은 경우에 해당합니다. 이 문제의 아쉬운 점은 이 회로도가 사용하는 코드를 제시해주지 않기 때문에, 앞서 예를 든 음수를 사용하지 않는 코드(unsigned code) 일 경우 overflow가 존재하지 않기 때문에 답안을 백지로 내면 정답 처리를 해줘야 한다는 오류가 있습니다. 오래전부터 여러 번 출제되었던 문제이기에 복원이 잘못되었다고는 보기 어렵습니다. 오류가 있는 문제입니다.
물론 우리는 관대하게 출제자의 의도대로 풀어줘야 합니다.
이 문제는 부호화된 2진수(고정소수점) 코드를 사용한다는 가정하에 풀어야 합니다.
부호화된 2진수는 부호-크기 방식(signed magnitude), 부호화된 1의 보수(signed 1's complement), 부호화된 2의 보수(signed 2's complement)가 있고, 코드표는 다음과 같습니다.
위 표를 보면, 3가지의 부호화된 2진수의 최댓값은 모두 7인 '0111'이고 최솟값은 1000이거나 1111입니다. overflow를 감지하지 않으면, 2의 보수화 방식의 경우 7+1 = -8이 돼버리는 오류가 발생합니다. 실제로 C언어에서 나타나는 증상입니다.(유튜브에서 피쉬본 조직응용기사 필답형 최종회(1:53:21)를 참고하시면 좋습니다.)
overflow를 감지하려면, 위 코드표의 특징을 살펴야 합니다.
우선 우측 2개의 캐리, C2와 C1는 overflow에 별다른 영향을 주지 않습니다.
C3과 C4가 1일 경우, 즉, 왼쪽에서 첫 번째와 두 번째 캐리가 발생할 모든 경우의 예는 다음과 같습니다.
㉮ C3=1, C4=0인 경우 : 0111 + 0001 = 1000 => 7 + 1 = -8 (overflow)
㉯ C3=0, C4=1인 경우 : 1000 + 1111 = 1 0111 => (-8) + (-1) = +7 (overflow)
㉰ C3=1, C4=1인 경우 : 1110 + 1100 = 1 1010 => (-2) + (-4) = -6 (정상)
㉮의 경우 C3 캐리만 발생한 경우이고, ㉯는 C4 캐리만 발생한 경우입니다. 모두 overflow가 발생합니다.
㉰는 C3과 C4가 동시에 캐리가 발생한 경우입니다. overflow가 아닌 정상적인 연산입니다.
위의 예시는 2의 보수 방식에서의 예시이며, 1의 보수나 부호와 크기 방식에서도 동일합니다. 한번 해보시는 것을 추천합니다.
결론은 C3과 C4가 각각 1인 경우가 overflow이고, 둘 다 0이거나 1이면 overflow가 아니라는 것을 알 수 있습니다. C3과 C4의 관계를 진리표로 나타내면 다음과 같습니다.
C3 C4 overflow 0 0 0 0 1 1 1 0 1 1 1 0 위 진리표를 보면 C3와 C4는 XOR 연산을 통해서 overflow를 검출할 수 있다는 것을 알 수 있습니다. XOR게이트로 결선을 하면 다음과 같습니다.
https://youtube.com/playlist?list=PLboXycXmAIDt4ObBRPVj29BuD2d27oRnO
반응형'전자계산기조직응용기사 > 실기 필답형 기출문제 해설' 카테고리의 다른 글