Computer Science/Low Level

(2) 게이트 논리

ajdanddl 2019. 12. 29. 02:11
반응형

게이트(gate)는 불 함수를 구현한 물리적 장치다.

 

가장 단순한 형태의 게이트들은 트랜지스터(transistor)라 불리는 아주 작은 스위치 장치들을 특정 구조로 연결해서 특정 기능을 하도록 만든 것들이다. 

 

요새 대부분의 게이트가 실리콘 에칭(etching) 방식으로 만든 트랜지스터로 구현되며, 게이트들은 칩(chip)으로 집적된다.

(게이트는 보통 단순한 칩을 가리키는데 사용할 예정이다.)

 

기본 게이트(primitive gate) : AND, OR, NOT

 

기본 논리 게이트의 표준기호

 

하드웨어 설계자는 이런 기본 게이트들이 서로 연결된 조합게이트(composite gate)를 통해 더 복잡한 기능을 구현한다.

 

논리게이트들은 내부와 외부, 2가지 관점으로 바라볼 수 있다.

내부 아키텍처 ==> 구현 (직접 게이트를 설계하련느 사람에게만 의미가 있다.)

외부 ==> 인터페이스 (추상적인 규격 부품으로만 활용하려는 사람에게 인터페이스 단계로도 충분)

3 input AND 게이트 예시

게이트 인터페이스는 유일하지만 그 인터페이스를 구현하는 방법은 여러가지이다.

보통 구현 시에는 최소 비용 최대 효과가 일반적인 요구사항이 된다.

 

오늘날 하드웨어 설계자들은 더 이상 맨손으로 직접 뭔가를 만들지 않고 대신 하드웨어 기술 언어(HDL : Hardware Description Language) 라는 도구를 사용해서 칩 아키텍처를 설계하고 최적화한다.

칩의 정확한 동작뿐만 아니라 계산 속도나 전력 소비, 칩 설계에 따른 전반적인 비용 같은 변수들도 고려한다.

HDL을 활용하면, 실제 본격적인 칩 생산에 들어가기 전에 칩을 설계하고 디버깅하고 최적화하는 일을 전부 수행할 수 있다.

 

예제) XOR 게이트 제작

XOR 은 (a,b) 입력이 (0,1)이거나 (1,0)일 때 output이 1이 되는 게이트이다.

다시말해, XOR(a,b) = OR((AND(a,NOT(b)),AND(NOT(a),(b))) 으로 나타내어질 수 있다.

이를 게이트로 나타낸다면

XOR GATE

위 사진은 Logic Gate Simulator 이라는 앱으로 만든 사진으로 실습하고자 하면 사용하는 것을 추천한다.

 

이제 이 게이트에 대한 HDL 프로그램, 테스트 스크립트를 살펴보자.

Hardware Simulator 프로그램은 현재 어디서 다운받을 수 있는지 찾지 못했다.

 

XOR 게이트 HDL 구현

HDL 정의는 헤더(header) 부분과 파트(part)부분으로 구성된다.

헤더 : 칩 인터페이스 정의. 칩 이름과 입력 및 출력 이름을 명시

파트 : 타 파트들의 이름들과 연결방식을 정의하는 부분(함수와 비슷한 느낌이다.)

 

And(a=a, b=notb, out=w1) // And 게이트의 입력으로 a, Not(b)가 들어가고 그에 대한 output을 w1으로 명명함.

Or(a=w1, b=w2,  out=out) // OR게이트의 입력으로 And의 출력인 w1, w2가 들어가고 output을 out으로 명명함.

 

테스트 스크립트(Xor.tst)

(a,b) = (0,0) , (0,1) , (1,0) , (1,1) 인 경우의 eval, output을 구하고자 하는 명령어.

 

테스트 스크립트(Xor.out)

각 (a,b) 케이스에 대한 output값이 표 형태로 나타나있다.

 

HDL은 하드웨어를 구성하는 언어이므로 HDL 작성 및 디버깅 과정은 소프트웨어 개발과 상당히 유사하다고 한다. 

차이점이라면 HDL 코드로 작성된다는 것과 컴파일러 대신 하드웨어 시뮬레이터로 코드를 번역하고 테스트한다는 점이다.

 

 

반응형

'Computer Science > Low Level' 카테고리의 다른 글

(1) 불 논리  (0) 2019.12.26