조합회로란?
- 논리곱(AND), 논리합(OR), 논리부정(NOT) 세 개의 기본 논리회로의 조합으로 만들어지며, 입력신호, 논리게이트, 출력신호로 구성됩니다.
- 입력신호 → 논리게이트 → 출력신호 순으로 지나가며 출력데이터를 생성하는데, 여기서 중요한 점은, 그동안은 AND, OR, NOT 등을 입력하자마자 바로 출력했었지만, 이제는 2진 입력데이터를 2개 이상 조합하여 논리게이트를 지나 원하는 2진 출력데이터를 생성하는 것입니다.
- 조합논리회로의 기본이되는
가산기
,비교기
,디코더
,인코더
,멀티플렉서
,디멀티플렉서
,코드 변환기
등이 있는데, 이걸 다 해보면 여러분이 너무 피곤할 것 같아서 오늘은 가산기만 실습을 진행하려고 합니다.
가산기
- 가산기는 대표적으로
반가산기
와전가산기
가 있습니다.
- 병렬가감산기, 고속가산기, BCD가산기등이 더 있지만, 우리는 가산기가 어떻게 동작하는지 개념을 알기 위해
반가산기
와전가산기
만 실습을 진행 할 것입니다.
10진수 → 2진수 변환 방법
반가산기랑 전가산기를 실습하기 전에, 2진수에 대해 약간 이해하고 넘어갈게요. 물론 잘 아는 친구들도 있겠지만 10진수 2진수로 바꾸는거 모르는 학생 많아서 한번 짚고 넘어가는거니 알아도 들어주세요~
우리가 일반적으로 많이 사용하는 0 1 2 3 4 ... 8 9 10 이런건 10진수이고, 우리는 2진수로 계산을 해야해요 모든 것을 0과 1로. 어렵다고 생각할 수 있는데, 정말 하나도 어렵지 않아요. 간단히 한번 더 설명 해 줄게요.
- 이렇게 10진수를 2진수로 바꾸는거 어렵지 않죠?
반가산기
반가산기는 한 자리 2진수 2개를 입력하여 합과 캐리를 계산하는 덧셈회로에요. 합은 1+1, 10+9 등.. 에 쓰는 그 합이 맞구요, 캐리는 처음들어보죠? 자리올림을 하는 애인데, 앞에서 2진수에 대해 설명한 이유가, 자리올림을 통해 00, 01,
10
, 11,100
등을 표시해줘야 하기 때문이에요. 직접 식 써서 보여줄게요.
- 이거 어디서 많이 본거죠? OR이에요. 왜? 덧셈식인데, 논리합이 OR이니까.
그럼 저 2진수를 10진수로 바꿔볼게요.
이렇게 표기할 수 있겠네요.
어? 그러면 2진수로 11이고, 10진수로 3인 수는 어떻게 표현하나요?
그게 전가산기가 필요한 이유입니다. 우리가 자리올림을 통해 계산한 캐리는 한 자리수 덧셈을 하기 때문에, 아랫자리에서 발생한 캐리를 고려하지 않아 2비트 이상의 2진수 덧셈은 할 수 없어요. 뭐 그건 다음주에 하는걸로 하구요, 첫 수업부터 너무 많은걸 하면 여러분들이 이 수업 싫어할까봐 ㅎ
이 입력값과 출력값을 표로 한번 그려볼게요.
이거 뭔가 어디서 본 것 같지않아요?
이것만 보면 아직 잘 모를수도 있어요.
그러면 이렇게 해볼게요.
이렇게 나누면 어떤 논리게이트인지 알 것 같지 않아요?
빨간색으로 표시한 A B S는 XOR과 같고,
초록색으로 표시간 A B C는 AND와 같아요.
그럼 우리는 프로테우스에서 XOR과 AND를 사용하면 조합회로를 구현할 수 있다는 것을 알 수있죠.
이걸 먼저 실습 해 볼게요.
(프로테우스 켜고)
LOGICPROBE 출력 LOGICSTATE 입력 74LS08 AND 74LS86 XOR 이거 4개로만 일단 구현 해 볼게요.
이렇게 구현하면 돼요.
아까 표 다시한번 보면 XOR과 값이 같은 SUM(S)쪽 있죠?
입력값을 바꿧을 때 XOR이 SUM(s)과 같은 값이 나오는 걸 볼 수 있어요.
마찬가지로, A와 B가 둘다 1일때는 캐리(C)가 1이 올라가는걸 볼 수 있어요.
이게
반가산기
에요. 어렵지않죠?
전가산기
이제 호ㅕ
전가산기는 저번주에 말했지만 캐리를 이용해서 만든 덧셈 회로에요.
이렇게 또 말로만 하면 어려우니까 그림으로 한번 또 설명 드릴게요.
우리는 지금까지 A, B 이렇게 2개의 입력에 대한 출력값만 실습 했는데,
이제부턴 3개가 넘어가게 될거에요.
입력값이 5개 10개 20개 넘어갈 수도 있는데 그거 하려면 밤 새야되니까
간단하게 입력값이 3개까지 인 것만 할게요.
먼저 아까처럼 식 한번 세워볼게요.
우리 이제는 아랫자리로부터 올라온 캐리(Cin)을 포함해서 2진수로 3인 수를 만들수가 있게 됐어요.
이것도 표로 변환을 한번 해볼게요.
이거 다 쓰긴 귀찮으니까 그냥 복사 붙혀넣기 할게요.
꼭 한번은 직접 계산해보길 바래요.
여기 잘 보면 4개씩 끊어볼게요.
여기 빨간색 부분 결과값 아까 반가산기 할 때 결과값이랑 같죠?
초록색 부분은 반가산기 결과값의 정 반대되는 값이에요.
이걸로 알 수 있는 점은 반가산기 2개와 OR게이트를 합치면 전가산기가 나온다는것을 알 수 있어요.
값이 전부 반대로 됐다고 전에 모든 값을 반대로 출력해버리는 논리부정의 의미를 가진 NOT이라는 논리게이트를 떠올릴 수 있는데,
그건 현재 값에 대한 부정이고, 반가산기와 반가산기의 반대값 두 개의 값을 모두 출력해야하는데 NOT을 써버리면 모든값이 바뀌어버려요.
그래서 OR을 사용합니다.
추가로, 예전에 제가 논리기호 설명할 때 지나가면서 설명했는데 혹시 기억하려나 모르겠네요. XOR를 한번 더 알려드릴게요.
입력값이 하나 더 늘었다고 경우의 수가 2배가 늘었네요.
그래서 3개까지만 하는것 도 있어요.
입력값 하나 더 늘면 또 여기서 2배 늘어요 경우의 수가.
여튼, XOR는 A랑 B가 둘 다 0일때, 둘 다 1일때 결과값이 0이라고 했는데,
XOR에 들어오는 입력값이 3개가 되었을 때 A B C가 전부 1이 들어오면 0이아니라 1이네요.
여기서 알 수 있는 것은 간단하게 이거에요.
XOR는 입력값에서 1의 갯수가
홀수면 출력값이 1
이고,짝수면 출력값이 0
이다.여기까지만 기억 해주시고, 프로테우스 실습으로 넘어갈게요.
사용해야하는 디바이스는 이렇게 5개에요.
| --- | --- |
아까 반가산기 만들었던거 있죠?
그 반가산기를 하나 더 만들어 줄 거에요.
한번 만들어 볼게요.
- A, B, C(Carry)입력값 3개를 준다.
- 처음 만든 반가산기에서 XOR부분의 출력이 되는 부분을 앞에 하나 더 만든 반가산기 XOR부분에 입력값으로 준다.
- 처음 만든 반가산기에서 AND부분의 출력이 되는 부분을 OR 입력값으로 준다.
- C를 나머지 XOR 입력부분에 넣어주고, 이전 반 가산기와 똑같이 회로를 이어준다.
과제