메뉴
[Multi-Level Gates] Circuit Conversion

2012. 3. 5. 23:23

Alternative Gate Symbols

복잡한 digital circuit을 디자인할 때는 같은 gate에 대해 여러가지 표현을 사용하는 것이 편리할 때가 있다.
예를 들어,

 
왼쪽과 같은 기존 inverter는 bubble이 output단에 있지만,
오른쪽 그림과 같이 bubble의 위치를 바꾸어 표현할 수도 있다.
이러한 bubble들은 inverter 뿐 아니라 AND, OR, NAND, NOR gate 역시
DeMorgan's law에 의해 다음과 같이 다른 모양으로 표현할 수 있다.


AND에 경우에는 원래 OR gate의 바탕에 input, output단에 bubble을 붙였다.
DeMorgan's law를 적용시켜보면 이는 곧 AND gate가 됨을 알 수 있다.
나머지 gate에 대해서도 같은 방식이다. 모양에 주의해서 잘 살펴보도록 하자.



NAND Gate Circuit Conversion


NAND gate (혹은 NOR gate)로 된 circuit을 곧바로 분석하기란 쉽지 않다.
circuit을 곧바로 expression으로 풀어쓰더라도
DeMorgan's law를 계속 적용해야 minimum solution을 얻을 수 있다.
하지만, 앞서 배운 alternative gate를 사용하면 NAND-NAND circuit을 AND-OR circuit으로 쉽게 바꿀 수 있다.
이렇게 바꾼 circuit은 또 다시 NOR-NOR circuit으로 바꿀 수도 있다.

먼저 주어진 circuit에 대해 각 NAND gate를 그의 alternative로 교체한다. 
그러면 (b)와 같이 된다. 이제 bubble을 제거할 차례인데,
살펴보면, 이전 level의 input의 bubble과 다음 level의 output의 bubble이 connection 양단에 있는 경우가 있다.
이를 double inversion이라고 한다. 예상할 수 있듯이, 두 번의 inversion은 의미가 없다.
(A')' = A 이므로, 두 개의 bubble을 제거할 수 있다.
이렇게 제거하는 경우를 double inversion cancel이라고 한다.
한편 input으로 들어갈 때의 bubble들은, complemented input으로 바꿔줌으로써 제거가 가능하다.
그렇게 하여 (c)의 결과를 얻는다.
여기서는 NAND gate에 대해서만 설명했지만, NOR gate에 대해서도 같은 방법을 쓸 수 있다.



Conversion to NOR Gate Circuit


앞서 언급했듯이, alternative gate를 이용해서 기존의 AND-OR circuit을 NOR-NOR circuit으로 바꿀 수 있다.
여기서는 아까와는 약간 다르게 bubble을 붙이는 방식을 사용한다.
NOR gate의 두 가지 형태를 기억해서, bubble을 OR gate의 output에 붙이거나 AND gate의 input에 붙이면,
모든 gate가 NOR gate로 바뀌는 셈이다. 물론 input에 bubble을 붙일 때는 literal의 complement로 바꿔줘야 한다.

AND-OR circuit을 NOR circuit으로 바꾸는 방법을 정리해 보면 다음과 같다.

1. 모든 AND gate의 input에 bubble을 붙여 NOR gate로 바꾼다.
2. 모든 OR gate의 output에 bubble을 붙여 NOR gate로 바꾼다. 
3. input에 bubble을 붙인 경우 해당 input의 literal을 그의 complement로 바꾼다.
4. double inversion은 신경쓰지 않는다.
5. connection의 한쪽에만 bubble이 붙어있는 경우에 대해서는 중간에 inverter를 추가해 줘야 한다.


5번에 대해서 이해하기 위해서는 다음 그림이 필요할 것 같다.


(b)번 그림을 살펴보면 파란색으로 음영이 되어있는 선을 볼 수 있다.
한쪽에만 bubble이 붙어있는 경우에 대해서는 추가적인 조치를 취해줄 필요가 있다.
Bubble이 한 쪽 끝에만 붙어있는 경우 실제 function 전체를 뒤집어줘야 원래 우리가 원하는 결과를 얻는다.

(a)와 (b) 그림의 level 3, 4의 gate에 대해 살펴보자.
(a)에서 AB'가 다시 다른 AND gate의 input으로 들어가고 있다.
(b)에서 같은 위치를 살펴보면, (AB')' = A' + B가 들어가게 되는데, 이는 (a)에서의 결과와 다르다.
이러한 차이는 bubble이 한쪽에만 존재하기 때문에 발생한다.
따라서 추가적으로 inverter를 붙여야 제대로 된 결과 (equivalent한 결과)를 얻을 수 있다.