[無에서 시작하는 컴퓨터&과학]

[컴퓨터][11] NAND 게이트 변환 - 2 ( NOR, XOR, XNOR )

core-basic 2024. 8. 27. 22:24
728x90

※ 해당 게시글은 주제를 탐구하면서 주관적인 생각을 정리 한 글입니다


이전 글을 통해서

NAND 게이트만을 이용하여

NOT, AND, OR 게이트를 구현해 보았다.

 

[컴퓨터][10] NAND 게이트 변환 - 1 ( NOT, AND, OR )

※ 해당 게시글은 주제를 탐구하면서 주관적인 생각을 정리 한 글입니다이전 글을 통해서논리 게이트들을 간편히 표현하기 위한게이트 기호들에 대해 알아보았다. [컴퓨터][9] 논리 게이

core-basic.tistory.com

이어서 NAND 게이트만으로

나머지 게이트들, NOR, XOR, XNOR 등을 구현해 보겠다.

< NAND 게이트 변환 >
( NOR, XOR, XNOR ) 


< NAND 게이트 >

NAND 게이트의 논리표를 다시 한번 살펴보면 아래와 같다.

A B A NAND B
거짓(0) 거짓(0) 참(1)
거짓(0) 참(1) 참(1)
참(1) 거짓(0) 참(1)
참(1) 참(1) 거짓(0)

그리고 논리표에 따른 NAND 게이트의 회로는 아래와 같다.

< 1 NAND 1 >


< NAND 게이트만으로 NOR 게이트 구현하기>

NAND 게이트의 논리표와 NOT게이트의 논리표를 비교해 보면

아래의 표와 같다.

A B A NAND B A NOR B
거짓(0) 거짓(0) 참(1) 참(1)
거짓(0) 참(1) 참(1) 거짓(0)
참(1) 거짓(0) 참(1) 거짓(0)
참(1) 참(1) 거짓(0) 거짓(0)

이미 앞서서 NAND게이트만으로 OR게이트와 NOT게이트를 구현하였다.

따라서 NAND 게이트로 구현한 OR게이트와 NOT게이트를 연결해 주면

NOR 게이트를 구현할 수 있다.

(※ 이때 전류의 충돌을 방지하기 위해 상황에 맞게 전지의 방향에 변화를 주어 설계한다.)

< 0 NOR 0 == (NOT 0) OR (NOT 0) >

※ 해당 이미지는 Paul falstad 사이트를 통해 제작하였습니다.

 

< 0 NOR 1 == (NOT 0) OR (NOT 1) >

※ 해당 이미지는 Paul falstad 사이트를 통해 제작하였습니다.

 

< 1 NOR 0 == (NOT 1) OR (NOT 0) >

※ 해당 이미지는 Paul falstad 사이트를 통해 제작하였습니다.

 

< 1 NOR 1 == (NOT 1) OR (NOT 1) >

※ 해당 이미지는 Paul falstad 사이트를 통해 제작하였습니다.

 

그리고 이를 게이트 기호로 표현하면 아래와 같다.


< NAND 게이트만으로 XOR 게이트 구현하기 >

NAND 게이트의 논리표와 XOR게이트의 논리표를 비교해 보면

아래의 표와 같다.

A B A NAND B A XOR B
거짓(0) 거짓(0) 참(1) 거짓(0)
거짓(0) 참(1) 참(1) 참(1)
참(1) 거짓(0) 참(1) 참(1)
참(1) 참(1) 거짓(0) 거짓(0)

A XOR B = [A OR (NOT B)] AND [(NOT A) OR B] 따른다.

이미 앞서서 NAND게이트만으로 AND, OR, NOT게이트를 구현하였기에
XOR 게이트도 위의 식에 따라 구현할 수 있다.

하지만,  매우 복잡한 형태이다.

따라서, NAND 게이트만으로 XOR을 구현하는 또 다른 간단한 형태가 존재한다.

[A NAND (A NAND B)] NAND [(A NAND B) NAND B]

A B A NAND B A NAND (A NAND B) (A NAND B) NAND B
거짓(0) 거짓(0) 참(1) 참(1) 참(1)
거짓(0) 참(1) 참(1) 참(1) 거짓(0)
참(1) 거짓(0) 참(1) 거짓(0) 참(1)
참(1) 참(1) 거짓(0) 참(1) 참(1)
[A NAND (A NAND B)] NAND [(A NAND B) NAND B] A XOR B
거짓(0) 거짓(0)
참(1) 참(1)
참(1) 참(1)
참(1) 참(1)

(※ 이때 전류의 충돌을 방지하기 위해 상황에 맞게 전지의 방향에 변화를 주어 설계한다.)

< 0 XOR 0 >

[0 NAND (0 NAND 0)] NAND [(0 NAND 0) NAND 0]

※ 해당 이미지는 Paul falstad 사이트를 통해 제작하였습니다.

 

< 0 XOR 1 >

[0 NAND (0 NAND 1)] NAND [(0 NAND 1) NAND 1]

※ 해당 이미지는 Paul falstad 사이트를 통해 제작하였습니다.

 

< 1 XOR 0  >

[1 NAND (1 NAND 0)] NAND [(1 NAND 0) NAND 0]

※ 해당 이미지는 Paul falstad 사이트를 통해 제작하였습니다.

 

< 1 XOR 1 >

[1 NAND (1 NAND 1)] NAND [(1 NAND 1) NAND 1]

※ 해당 이미지는 Paul falstad 사이트를 통해 제작하였습니다.

 

그리고 이를 게이트 기호로 표현하면 아래와 같다.

 


< NAND 게이트만으로 XNOR 게이트 구현하기 >

NAND 게이트의 논리표와 XNOR게이트의 논리표를 비교해 보면

아래의 표와 같다.

A B A NAND B A XNOR B
거짓(0) 거짓(0) 참(1) 참(1)
거짓(0) 참(1) 참(1) 거짓(0)
참(1) 거짓(0) 참(1) 거짓(0)
참(1) 참(1) 거짓(0) 참(1)

이미 앞서서 NAND게이트만으로 XOR게이트와 NOT게이트를 구현하였다.

따라서 NAND게이트로 구현한 XOR게이트와 NOT게이트를 연결해 주기만 하면

XNOR 게이트를 구현할 수 있다.

A B A NAND B A XOR B NOT (A XOR B) A XNOR B
거짓(0) 거짓(0) 참(1) 거짓(0) 참(1) 참(1)
거짓(0) 참(1) 참(1) 참(1) 거짓(0) 거짓(0)
참(1) 거짓(0) 참(1) 참(1) 거짓(0) 거짓(0)
참(1) 참(1) 거짓(0) 거짓(0) 참(1) 참(1)

(※ 이때 전류의 충돌을 방지하기 위해 상황에 맞게 전지의 방향에 변화를 주어 설계한다.)

< 0 XNOR 0  = NOT (0 XOR 0) >

NOT [{0 NAND (0 NAND 0)} NAND {(0 NAND 0) NAND 0}]

※ 해당 이미지는 Paul falstad 사이트를 통해 제작하였습니다.

 

< 0 XNOR 1 = NOT (0 XOR 1) >

NOT [{0 NAND (0 NAND 1)} NAND {(0 NAND 1) NAND 1}]

※ 해당 이미지는 Paul falstad 사이트를 통해 제작하였습니다.

 

< 1 XNOR 0 = NOT (1 XOR 0) >

NOT [{1 NAND (1 NAND 0)} NAND {(1 NAND 0) NAND 0}]

※ 해당 이미지는 Paul falstad 사이트를 통해 제작하였습니다.

 

< 1 XNOR 1 = NOT (1 XOR 1) >

NOT [{1 NAND (1 NAND 1)} NAND {(1 NAND 1) NAND 1}]

※ 해당 이미지는 Paul falstad 사이트를 통해 제작하였습니다.

 

그리고 이를 게이트 기호로 표현하면 아래와 같다.

 


< 컴퓨터의 모든 회로는 NAND 게이트 >

결국 NAND 게이트로 AND, OR, NOT, XOR, NAND, NOR, XNOR 등

모든 부울 연산자, 논리 게이트를 구현할 수 있다.

이는 결국 컴퓨터의 모든 회로는 NAND 게이트로 구현된다고 볼 수 있다.

또한, NAND 게이트만 사용하면 되기 때문에

경제적인 측면에서 비용을 절감할 수 있을 뿐만 아니라,

회로의 최적화와 성능 측면에서도 효율적임을 알 수 있다.

 

 

이번 글은 요기서 마치며, 다음 주제로는

그래서, 게이트를 통해서 어떻게 컴퓨터를 구현할 수 있는지 탐구해 보겠다.


※ 해당 게시글은 주제를 탐구하면서 주관적인 생각을 정리 한 글입니다

728x90