논리 회로 기초
컴퓨터 내부에서 수행되는 "기계어"는 2진수 형태이다. 그러나 프로그래머가 기계어를 직접 다루는 것은 어렵고 힘들기에 "고급 프로그래밍 언어(High-Level)"를 사용한다. 즉, 고급 프로그래밍 언어는 사람에게 적합한 언어이고 기계어는 컴퓨터에게 적합한 언어이다.
기계어 레벨 밑에는 논리 회로 레벨이 있고, 논리 회로 레벨 아래에 전자 소자 레벨과 소재 레벨이 있다. 전자 소자 레벨과 소재 레벨은 물리학과 전자 공학에서 다루는 컴퓨터 소자 제작에 해당한다. 전자 소자들을 통해 0과 1을 이용하여 연산을 수행하는 방법은 다음과 같다.
기본적으로, 전기 신호의 전압을 이용해 전압이 5V이면 1, 전압이 0V이면 0으로 표현하면, 전기 신호로 0과 1이 표현 가능하다. 컴퓨터에서 전기 신호에 따라 가장 기본적인 연산을 하는 전자 소자를 "게이트"라고 한다. 게이트는 하나 이상의 입력을 받아 하나 이상의 출력 신호를 생성한다. 게이트가 모여 회로를 이루며, 회로가 모여 컴퓨터가 완성된다.
기본 게이트
논리 회로를 만드는데 사용되는 기본 소자가 바로 "게이트"이며, 아래 표에 있는 것이 게이트들이다. 게이트의 논리연산자는 다음과 같다.
- `AND 연산자`: 조건이 모두 참이어야 참을 반환한다.
- `OR 연산자`: 조건 중에서 하나라도 참이면 참을 반환한다.
- `NOT 연산자`: 조건의 결과가 참이면 거짓을, 거짓이면 참을 반환한다.
- `XOR 연산자`: 두 조건이 서로 다르면 참을 반환한다.
- `NAND 연산자`: AND 연산자와 NOT 연산자를 결합한 것으로, AND 연산자의 연산 결과를 부정한다.
- `MOR 연산자`: OR 연산자와 NOT 연산자를 결합한 것으로, OR 연산자의 연산 결과를 부정한다.
논리 회로 표현 방식
논리 회로의 동작 원리를 설명하기 위한 논리 회로 동작, 기능을 기술하는 방식은 "논리식", "논리도", "진리표" 이렇게 3가지가 있다.
논리식 (Logic Expression)
논리식이란 논리 연산자로 구성된 식별자들의 나열로써 표현되는 식이다.
논리도 (Logic Diagram)
논리도란 논리 게이트들을 이용해서 그림으로 표현하는 방법이다.
진리표 (Truth Table)
진리표란 논리 회로에 입력 가능한 모든 경우의 수에 대응하는 회로의 출력값을 정의한 표다.
표현 방식의 관계 (Relationship of Expression)
TIP!
이 3가지 표현 방법은 밀접한 관계를 가지고 있다. 논리식이 주어지면 1대 1로 대응되는 논리도를 그릴 수 있다. 반대로, 논리도가 주어지면 1대 1로 대응되는 논리식을 그릴 수 있다. 이때, 중요한 것은 하나의 진리표를 구현하는 다수의 방법이 있을 수 있다는 것이다. 그렇기에 여러 구현 방법 중 최적의 방법을 찾는 것이 최종 목표이다.
논리 회로의 2가지 종류
논리 회로에서는 게이트를 아주 많이 연결하여 컴퓨터의 회로를 만들게 되는데, 이때 게이트를 이용하여 회로를 만드는 방법은 크게 2가지로 나눌 수 있다.
- `조합 논리 회로(Combinational Logic Circuit)`: 입력값만으로 출력값이 결정되는 회로
- `순서 논리 회로(Sequential Logic Circuit)`: 입력값과 회로 내부의 상태가 출력값을 결정하는 회로
조합 논리 회로의 출력은 언제나 입력 결과에만 의존한다. 즉, 입력이 동일하다면 언제나 같은 값을 출력한다는 뜻이다. 그러나 순서 논리 회로는 회로 내부의 상태가 출력값에 영향을 끼치기에 입력이 동일해도 출력값이 다를 수 있다.