전자 회로의 조합 논리

김민우·2023년 3월 26일
0

컴퓨터구조

목록 보기
2/8

논리 게이트


논리 게이트 (이하 게이트)를 사용하면 하드웨어 설계자가 모든 회로를 설계할 필요 없이, IC를 선으로 연결하여 복잡한 회로를 쉽게 만들 수 있다.

이들 중 인버터 기호는 크게 두 가지로 나뉜다.

  • 삼각형 : 버퍼(Buffer)라 하며 단지 입력을 출력으로 전달하기만 한다.
  • 동그라미 : 출력을 반전시키는 역할을 한다.

동그라미 기호를 활용하면 NAND(not and)나 NOR(not or) 회로를 구현할 수 있다.

NAND의 출력 부분에 인버터를 사용하여 입력을 반전시키면 OR이 되며, 출력에 NAND로 만든 인버터를 연결하면 AND가 된다. 따라서, NAND만 있으면 OR, AND, NOT으로 표현할 수 있는 모든 논리를 표현할 수 있다.

드모르간 법칙을 활용하면 다음과 같이 그릴 수 있다.

인버터를 제외한 모든 게이트는 입력이 2개 뿐이지만, 실제로는 입력이 더 많을 수 있다.

이력 현상을 활용한 잡음 내성 향상

디지털 신호는 0과 1 이 존재하여 0에서 1로 순간적으로 바뀐다고 오해하기 쉽다. 그러나, 실제 현실에서 사용 중인 신호는 천천히 바뀌는 신호가 많다.


오른쪽 입력 신호는 잡음으로 인해 입력 신호가 문턱값을 여러 번 오락가락 하기때문에 출력 신호에 오류가 발생하는데, 이를 글리치(glitch)가 발생했다 한다.

이를 방지하기 위해선 판정 기준을 이력(과거에 벌어진 일)에 따라 달라지게 하면 되는데 이것을 이력 현상이라 한다.


전이 함수는 대칭적이지 않아 올라가는 신호(0 -> 1)과 내려가는 신호(1 -> 0)에 대한 전이함수가 다르다.

따라서, 출력이 0이면 오른쪽 곡선을 사용하고, 출력이 1이면 왼쪽 곡선을 사용한다.

이렇게 하면 올라가는 신호와 내려가는 신호에 대해 각기 다른 문턱값이 생긴다. 즉, 입력 신호가 두 문턱값 중 하나를 넘어간 경우 반대쪽 문턱값을 지나가며 출력이 반전되려면 값이 상당이 많이 변해야 한다는 뜻이다. 이로 인해, 잡음 내성이 커지게 된다.

차동 신호

잡음이 많아서 이력을 도입해도 충분하지 못한 경우에 사용된다.

예상치 못한 방해물들로 인해 내가 가려고 하는 방향(0 또는 1)으로 가지 못하는 경우를 대비해 2인조 시스템을 사용할 수 있는데, 이를 차동 신호라 한다.

혼자 인도를 걸으면 다른 사람이나 사물에 의해 한쪽으로 밀려나버릴 수 있지만, 친구와 함께 손을 잡고 걷는다면 한쪽으로 밀려나도 상대적 위치만 변하지 않으면 상대적 위치로 0또는 1의 위치를 결정할 수 있다. (물론, 인도 자체를 벗어나버리면 안된다.)

차동(differential)이라는 이름은 측정하는 값이 서로 반전 관계(complementary)인 신호 쌍의 차이를 측정하기 때문에 붙은 이름이다.

  • 드라이버(driver)
    • 입력 신호를 반전 관계 출력들로 변환
  • 리시버(receiver)
    • 반전 관계인 두 입력을 받아 단일 신호로 변환

물론, 잡음이 너무 많으면 전기 부품들이 자신의 정격 작동 범위를 넘어가여(큰 차가 밀려들어서 자신과 친구가 인도를 벗어날 수 밖에 없는 경우) 정상적으로 작동하지 않을 수 있다.

이러한 경우엔 처리 가능한 잡음의 양을 표시하는 공통 모드 판별비를 참고하자.

전파 지연

입력의 변화가 출력에 영향을 미칠 때 까지 걸리는 시간을 전파 지연이라 한다.

이러한 전파 지연 시간은 제조 과정에서 여러 부품들로 인해 복잡하게 결정되는 통계적인 측정 값이며 항상 최악의 경우에 대비해야 하기에 최대 지연 시간을 고려하여 회로를 제조해야 한다.

  • 회색 영역
    • 전파 지연으로 인해 출력을 신뢰할 수 없는 구간
  • 출력이 회색 영역의 맨 왼쪽처럼 더 이른 시점에 변할 수도 있지만, 반드시 회색 영역의 오른쪽 시점 이전에 변한다고 보장할 수는 없다.
  • 여러 게이트를 엮으면 회색 영역의 길이가 더 길어진다.

이러한 전파 지연 시간은 처리 기술에 따라 매우 달라진다.

출력 유형


응용에 따라 달리 설계된 몇 가지 출력 유형이 존재한다.

토템폴 출력

일반적인 게이트 출력을 의미하며, 트렌지스터가 토템폴처럼 세로로 나란히 늘어서 있다.

  • 위에 있는 스위치
    • 출력의 1을 얻기 위해 출력과 높은 논릿값 1을 연결한다.
    • 이를 엑티브 풀업이라 한다.
  • 0인 출력을 1인 출력과 연결하면 음극과 양극을 서로 연결하는 것과 같은 일이 벌어진다.
    • 이러한 경우에, 부품이 타버리는 현상을 초래할 수 있다.

오픈 컬렉터 출력

오픈 컬렉터 도는 오픈 드레인이라고도 한다.

원하는 출력이 0이라면 아무 문제가 없지만, 1이라면 좀 이상해진다. 원하는 출력이 1인 경우엔 출력이 그냥 떠 있다(float)라고 하며, 이런 경우엔 출력값을 알 수 없다.

액티브 풀업이 없기 때문에 출력을 아무 문제 없이 서로 연결할 수 있다.

단순히, 풀업 저항을 논리적인 1값을 공급해주는 전압에 연결하는 것을 패시브 풀업이라 하는데, 필요하다면 출력을 다음과 같이 패시브 풀업에 연결할 수 있다.

여러 오픈 컬렉터 출력과 패시브 풀업을 활용하면 와이어드 AND(wired-AND)만들어 낼 수 있다.

그러나, 오픈 컬렉터 회로를 사용하면 출력을 서로 연결할 수 있지만 액티브 풀업을 사용하는 것만큼 응답이 빠르지 않다는 단점이 있다.

트라이스테이트 출력

오픈 컬렉터 출력은 상태가 2가지 였지만, 응답이 느리다는 단점을 해소하기 위해서 상태가 3가지인 출력을 사용할 수 있다. 이를 트라이스테이트 출력이라 한다.

기존 회로에서 출력을 켜고 끄기 위한 활성화 입력을 추가했다.

베이스를 제어하면 다음 4가지 상태를 얻을 수 있다.

  • 0
  • 1
  • hi-Z
    • 꺼진 상태
  • 멜트 다운(melt-down)
    • 녹아버린 상태

물론 회로를 설계하는 사람은 멜트 다운이 일어나지 않게해야 한다.

트라이스테이트 출력을 사용하면 수 많은 장치를 서로 선으로 직접연결할 수 있다는 장점이 존재한다. 그러나, 한 번에 단 하나의 장치만 활성화 해야한다는 단점도 존재한다.






게이트를 조합한 복잡한 회로


게이트를 사용하면서 하드웨어 설계자는 개별 부품을 다룰 필요가 없어 제조 과정이 매우 단순해 졌다.

이러한 게이트들을 조합하면 더 크고 복잡한 컴퓨터 프로그램을 만들어낼 수 있고, 더 나아가 이런 고수준(게이트의 조합)의 기본 기능 요소를 사용해 더 고수준의 부품을 만들 수 있다.

가산기

두 비트를 더한 값은 각 비트의 XOR이고, 올림은 두 비트의 AND라는 사실을 이용해 게이트를 구현하면 다음과 같다.

더한 값을 계산하는 XOR 게이트와 올림을 계산하는 AND 게이트의 조합을 반가산기라 한다. 무언가 빠진 부분이 있어 '반'이라는 접두사가 붙었다.

두 비트를 더할 때는 상관없으나, 올림을 처리하기 위해선 세 번째 입력이 필요하다.

각 비트의 합을 계산하기 위해 반가산기 2개를 연결할 수도 있지만, 세 입력 중 2개 이상이 1일 때 올림이 발생한다는 것을 통해 진리표를 만들수 있다.

이 표를 바탕으로 회로를 구성하면 아래와 같이 반가산기 2개를 사용할 때보다 시간 지연이 더 적은 회로를 만들 수 있다. 이를 전가산기라 한다.

이를 통해 여러 비트를 더하는 가산기인 리플 자리올림 가산기도 만들 수 있다.

이 가산기는 잘 작동하지만, 비트를 하나 처리할 때 마다 게이트 2개에 해당하는 출력 시간 지연이 발생한다. 올림 예측 가산기를 사용하면 이러한 지연을 제거할 수 있다.

디코더

인코딩과 반대 개념으로, 인코딩된 수를 개별 비트의 집합으로 만들어주는 역할을 한다.

디코더에 이름을 붙일 때는 주로 입력과 출력의 개수를 사용한다.

8진 표현은 각기 다른 8가지 값을 가져다가 3비트로 인코딩한다. 아래 그림은 8진 숫자를 단일 비트의 집합으로 되돌려주는 3:8 디코더이다.

  • 입력
    • 000 : Y0 출력이 참
    • 001 : Y1 출력이 참
  • 이런 동작이 모든 3비트 조합(S0, S1, S2)에 대해 성립한다.

위 3:8 디코더를 기호로 표시할 때는 다음과 같이 한다.

디멀티플렉서

디코더를 활용하여 입력을 몇 가지 출력들 중 한 곳으로 전달해주는 디멀티플렉서(이하 디먹스)를 만들 수 있다. 이는 마치 호그와트 학생을 기숙사에 할당하는 것과 비슷하다. 여러 출력 중 하나를 선택하는 기능을 제공해준다.

디먹스는 다음과 같이 디코더에 몇 가지 게이트를 추가해 만들 수 있다. 디코더에 몇 가지 게이트를 추가하는 방식이므로 이름을 디코더와 마찬가지로 입/출력 개수를 앞에다 명시한다.


  • 입력 신호인 D를 디코더 입력(S0, S1)에 따라 4가지 출력(Y0 ~ Y4) 중 하나로 전달한다.

실렉터

여러 출력이 아닌 입력들 중 하나를 선택하게 해주는 실렉터(또는 멀티 플렉서, 먹스)라 한다. 이를 통해 가산기에 입력할 여러 피연산자들 중 하나를 선택할 수 있다.

디먹스와 마찬가지로 다음과 같이 디코더에 게이트를 추가하여 실렉터를 만들 수 있다. 디코더에 몇 가지 게이트를 추가하는 방식이므로 이름을 디코더와 마찬가지로 입/출력 개수를 앞에다 명시한다.


디먹스를 그대로 뒤집은 모양임을 알 수 있다. (이는 당연하다.)






출처) 한 권으로 읽는 컴퓨터 구조와 프로그래밍
http://www.yes24.com/Product/Goods/102266032

0개의 댓글