본문 바로가기
컴퓨터 공학/논리회로

[논리 회로] 7장. 조합논리회로

by kim-dev 2024. 6. 7.
반응형

본 내용은 2024년 1학기 '컴퓨터논리개론' 수업을 들으며 노션에다가 정리한 글을 옮겨온 포스트입니다.
제 공부를 위해 작성한 거라서 제가 알아보기 편하게  정리했습니다. 여러분들도 자유자재로 열람 가능하지만 간혹 이해하기 힘든 부분이 있을 수도 있다는 점 양해 부탁드립니다!


조합논리회로는 논리곱(AND), 논리합(OR), 논리 부정(NOT)의 세 가지 기본 논리회로의 조합으로 만들어지며, 입력 신호, 논리 게이트 및 출력 신호로 구성된다.

논리 게이트는 입력 신호를 받아서 출력 신호를 생성함!

1) 가산기

(1) 반가산기

한 자리 2진수 2개를 입력하여 합(S)과 캐리(C)를 계산하는 덧셈 회로.

캐리(C): 입력 A와 B가 모두 1인 경우에만 1 합(S): 입력 A와 B 둘 중 하나만 1일 때 1

 

(2) 전가산기

두 개의 2진수 입력 A, B와 아랫자리로부터 올라온 캐리 𝐶𝑖를 포함하여 한 자리 2진수 3개를 더하는 조합논리회로.

반가산기는 아랫자리에서 발생한 캐리를 고려하지 않기 때문에 2비트 이상의 2진수 덧셈은 할 수 없어서 고안됨!

 

(3) 병렬 가감산기

전가산기 여러 개를 병렬로 연결하여 2비트 이상인 가산기를 만든 것.

합: 𝑆3𝑆2𝑆1𝑆0 마지막 캐리: 𝐶4

이 병렬 가산기의 B 입력을 부호 S와 XOR하여 전가산기의 입력으로 사용하면 덧셈과 뺄셈이 모두 가능함!

S=0 : B의 값이 그대로 전가산기로 입력되어 덧셈이 됨. S=1 : B의 값이 반전(1의 보수)되어 더해진 후(뺄셈), 𝐶0=1이 더해져서 2의 보수로 출력.

 

(4) 고속 가산기

병렬 가산기는 속도가 매우 느리다. 아랫단에서 윗단으로 전달되는 캐리(리플-캐리) 때문인데, 아랫단 가산기의 결과가 나와야만 바로 윗단을 계산할 수 있기 때문이다.

비트가 늘어날수록 병렬 가산기는 지연이 더욱 심해질 것이고, 이건 컴퓨터의 CPU와 같이 빠른 계산을 요구하는 시스템에서는 심각한 문제임!

이를 해결하기 위해 캐리 예측 가산기(CLA)를 사용! → 캐리를 미리 계산하여 위로 보낸다!

캐리의 논리식은 𝐴𝑖, 𝐵𝑖 모두 1일 때, 또는 𝐴𝑖, 𝐵𝑖 둘 중 하나가 1이고 𝐶𝑖가 1일 때 캐리가 발생하므로 아래와 같다.

 

캐리 예측 가산기𝑆𝑖,𝐺𝑖,𝑃𝑖를 발생시키는 부분 전가산기(PFA)와 위의 식 𝐶1,𝐶2,𝐶3,𝐶4를 발생하는 캐리 예측 회로로 구성된다.

4비트 이상의 캐리 예측 가산기를 만든다면 아주 복잡해져서, 일반적으로 4비트 캐리 예측 가산기 모듈을 이용해 16비트 캐리 예측 가산기를 만들어 사용한다.

 

(5) BCD 가산기

BCD 코드는 표현 범위가 0에서 9까지이므로, BCD 계산을 하려면 결과를 보정해야 한다. 2진수 합의 결과가 010101 ~ 10011 (10~19)의 범위일 때 하위 4비트에 0110을 더해서 보정해 주어야 함!

즉 하위 4비트가 1010 이상이라면 0110을 더해서 보정해주면 된다.

 

(6) 반감산기와 전감산기

반감산기: 한 자리 2진수 2개를 입력하여 차(D)와 빌림 수(K)를 계산하는 뺄셈 회로.

이 때 빌림 수는 윗자리에서 가져오므로 2임!

 

전감산기: 두 2진수 입력 A, B와 아래 단으로 빌려주는 수 𝐾𝑖를 포함하여 𝐴−𝐵−𝐾𝑖를 계산하는 조합논리회로.

 

2) 비교기

2진 비교기: 두 2진수 값의 크기를 비교하는 회로.

3) 디코더

n비트로 표현된 2진 코드는 최대 2𝑛개의 서로 다른 정보를 표현할 수 있다. 이 때, n비트로 표현된 2진 코드는 최대 2𝑛개의 서로 다른 정보로 바꿔주는 조합논리회로가 바로 디코더이다.

n비트 코드가 입력으로 들어오면, 2𝑛개의 코드가 만들어지는데 그 중 하나를 선택하는 회로!!

 

(1) 1x2 디코더

입력 1개와 출력 2개로 구성된다.

인에이블(E)이 있을 경우, 인에이블이 1일 때 회로가 동작한다.

 

(2) 2x4 디코더

입력 2개와 출력 4개로 구성된다.
물론 이 때에도 인에이블이 포함되면, 인에이블에 따라 회로가 동작한다.

근데 실제 IC들은 AND 게이트들이 아닌 NAND 게이트로 연결되어 있어서, 출력은 다음과 같이 반대로 된다.

 

(3) 3x8 디코더

입력 3개와 출력 8개로 구성된다.

 

(4) 4x16 디코더

4x16 디코더는 3x8 디코더 2개를 이용해 구성할 수 있다.

A, B, C에서 D를 추가하는데, D를 각 디코더의 인에이블로 이용한다!

D=0이면 위쪽의 디코더가 인에이블 되어 출력은 𝑌0~𝑌7 중 하나가 1이 되고, 아래쪽의 디코더 출력은 모두 0이 된다. → 위에는 1이 없으니 아래에서 1이 나온다.

D=1이면 위쪽의 디코더가 출력이 모두 0인 반면 아래쪽 디코더의 출력 𝑌8~𝑌15 중 하나가 1이 된다.

 

(5) 디코더를 이용한 조합논리회로

위에서 본 디코더를 활용하여 조합논리회로를 구성할 수 있다.

아래는 3x8 디코더로 조합논리회로를 구성한 예시인데, 3개의 입력에 따라 8개의 출력 중 하나가 1이 된다. → 이것을 최소항 또는 최대항으로 활용하여 출력을 결정하면 논리회로를 구성할 수 있다!

  • 정상 출력 디코더의 경우
  • 반전 출력 디코더의 경우

 

(6) BCD-7-세그먼트 디코더

7-세그먼트: 숫자를 표시하기 위해 막대 모양의 LED 7개로 구성.

 

4) 인코더

신호 2𝑛개를 입력 받아 출력 신호 n개를 만든다. 2𝑛개 중 활성화된 1비트 입력 신호를 받아서, 그 숫자에 해당하는 n비트 2진 정보를 출력!

인코더는 디코더의 반대 기능을 수행하는 조합논리회로인 것!

 

(1) 2x1 인코더

입력 2개와 출력 1개를 가지며, 입력 신호에 따라 0 또는 1을 출력.

 

(2) 4x2 인코더

입력 4개와 출력 2개를 가지며, 입력 신호에 따라 2개의 2진 조합으로 출력.

 

(3) 8x3 인코더

입력 8개와 출력 3개를 가지며, 입력 신호에 따라 3개의 2진 조합으로 출력.

 

(4) 8x3 우선순위 인코더

우선순위 인코더: 입력에 우선순위를 정하여 입력이 여러 개 있을 때 우선순위가 높은 입력값에 해당하는 출력 신호를 만들어내는 회로.

그니까 높은 수의 입력이 1이라면, 그 뒤에 입력들은 보지 않고 가장 높은 수 1일 때의 출력을 나타낸다!

보통 입력값이 높은 쪽을 우선순위가 높은 것으로 함!

 

 

 

5) 멀티플렉서

멀티플렉서: 2𝑛개의 입력 중, 하나를 선택해서 출력하는 것.

이 때 무엇을 선택할 지는 선택선(S)에 따라 결정한다. 선택선은 n개, 입력은 2𝑛개, 출력은 1개로 구성됨!

데이터 선택기라고도 불린다!

디멀티플렉서: 하나의 입력을 선택선에 따라 2𝑛개의 출력으로 나눈 후, 그 중 하나의 출력선을 내보내는 것.

이 때에도 선택선은 n개이며, 데이터 분배기라고도 불린다!

 

(1) 2x1 멀티플렉서

입력 2개 중 하나를 선택선(S)에 입력된 값에 따라 출력으로 보내주는 조합논리회로.

 

(2) 4x1 멀티플렉서

입력 4개 중 하나를 두 개의 선택선(S)에 입력된 값에 따라 출력으로 보내주는 조합논리회로.

 

(3) 8x1 멀티플렉서

입력 8개 중 하나를 세 개의 선택선(S)에 입력된 값에 따라 출력으로 보내주는 조합논리회로.

 

6) 디멀티플렉서

사실 인에이블 하나가 있는 디코더와 디멀티플렉서는 사실상 같은 기능을 수행한다고 볼 수 있다. A, B, E선에 입력되는 데이터에 따라 디코더로 동작할 수도 있고, 디멀티플렉서로 동작할 수도 있는 것.

E가 입력이고 A, B가 선택선인데 A, B를 입력으로 보면 됨! 그럼 디코더랑도 비슷하다.

 
 
 
 

7) 코드 변환기

디지털 시스템들은 동일한 정보에 대해 다양한 코드를 사용하고 있으므로, 서로간의 호환을 위해 코드를 변환하는 기능이 필요하다.

 

(1) 2진 코드 → 그레이 코드 변환

(2) 그레이 코드 → 2진 코드 변환

(3) BCD 코드 → 3초과 코드 변환