디지털 논리 101: AND, OR, NOT 게이트로 시작하는 첫걸음
AND, OR, NOT은 디지털 논리의 세 가지 기본 게이트입니다. 이 입문 가이드는 각 게이트를 브라우저에서 처음부터 만들어 보고 이를 조합해 NAND를 구성합니다.
요약: AND, OR, NOT은 디지털 논리의 세 가지 기본 게이트입니다. AND는 모든 입력이 1일 때에만 1을 출력하고, OR은 어떤 입력이라도 1이면 1을 출력하며, NOT은 단일 입력을 반전시킵니다. 이들을 조합하면 NAND가 만들어지는데, NAND는 다른 모든 디지털 회로를 구성할 수 있는 범용 게이트입니다.
디지털 논리를 가장 빠르게 배우는 방법은 회로를 직접 만들어 보는 것입니다. 진리표를 읽는 것도 유용하지만, 스위치를 토글하며 출력이 변하는 모습을 관찰할 때 비로소 직관이 형성됩니다. 이 튜토리얼은 digisim.io에서 세 가지 기본 논리 게이트인 NOT, AND, OR을 단계별로 구성하는 과정을 안내합니다. 각 섹션이 끝날 때마다 여러분이 직접 만든 동작하는 회로가 완성됩니다.
사전 지식은 필요 없습니다. 설치할 것도 없습니다. 브라우저에서 digisim.io를 열고 따라 해 보세요.
시작하기 전에: 스위치-등 회로
모든 디지털 회로에는 입력과 출력이 있습니다. digisim.io에서 기본 입력은 INPUT_SWITCH(클릭하면 0과 1 사이를 토글)이며, 기본 출력은 OUTPUT_LIGHT(1을 받으면 켜짐)입니다. 게이트를 다루기 전에, 인터페이스에 익숙해지기 위해 이 최소한의 회로를 만들어 봅시다.

만들기:
- digisim.io/circuits/new를 엽니다.
- 컴포넌트 팔레트에서 Input Switch를 캔버스로 드래그합니다.
- 그 오른쪽에 Output Light를 드래그합니다.
- 스위치의 출력 노드(작은 원)를 클릭하고 등의 입력 노드까지 드래그합니다. 선이 생깁니다.
- 스위치를 클릭해 토글합니다. 스위치가 1이면 등이 켜지고, 0이면 꺼집니다.
이는 기본 개념을 확인시켜 줍니다. 디지털 신호는 와이어를 통해 소스에서 목적지로 흐릅니다. 여기서 만들 모든 회로는 소스와 목적지 사이에 논리를 추가하는 것입니다.
1. NOT 게이트 회로 만들기 (인버터)
NOT 게이트는 단일 입력을 받아 뒤집습니다. 입력 1은 출력 0을 만들고, 입력 0은 출력 1을 만듭니다. 가장 단순한 게이트이며, 이것을 먼저 만들어 보면 배선 작업 흐름에 자신감을 가질 수 있습니다.

단계별 만들기
- 입력 배치. Input Switch를 캔버스 왼쪽으로 드래그합니다.
- 게이트 배치. Logic Gates 섹션에서 NOT Gate를 드래그해 스위치 오른쪽에 배치합니다.
- 출력 배치. Output Light를 NOT 게이트 오른쪽에 드래그합니다.
- 입력을 게이트에 연결. 스위치의 출력 노드를 클릭하고 NOT 게이트의 입력 노드까지 드래그합니다.
- 게이트를 출력에 연결. NOT 게이트의 출력 노드를 클릭하고 등의 입력 노드까지 드래그합니다.
- 모든 입력 조합을 테스트. 두 가지뿐입니다:
| 입력 (A) | 예상 출력 (Y) | 보아야 할 것 |
|---|---|---|
| 0 | 1 | 스위치 OFF, 등 ON |
| 1 | 0 | 스위치 ON, 등 OFF |
부울 식:
배운 것
- NOT 게이트는 정확히 하나의 입력과 하나의 출력을 가집니다.
- 항상 입력의 반대를 출력합니다.
- 게이트 기호 위의 작은 원(버블)은 반전을 나타냅니다. 이 버블은 나중에 NAND와 NOR 게이트에서 다시 등장합니다.
실무 응용: 액티브 로우 리셋 라인
마이크로컨트롤러와 프로세서에서 리셋 핀은 종종 “액티브 로우”입니다. 즉, 핀이 0으로 당겨질 때 칩이 리셋됩니다. NOT 게이트는 설계자가 “버튼 누름 = 1” 신호를 칩이 기대하는 액티브 로우 신호로 변환할 수 있도록 해 줍니다. 이 패턴은 사실상 모든 임베디드 시스템에 등장합니다.
2. AND 게이트 회로 만들기 (게이트키퍼)
AND 게이트는 모든 입력이 1일 때에만 1을 출력합니다. 두 개의 입력일 때 가능한 조합은 네 가지이며, 그중 단 하나만 출력 1을 만듭니다. 이는 여러 조건이 동시에 충족되어야 하는 상황에 AND 게이트를 자연스러운 선택지로 만듭니다.

단계별 만들기
- Input Switch 두 개를 배치합니다. 캔버스 왼쪽에 위아래로 배치합니다. 이것이 입력 A와 B입니다.
- AND Gate를 배치합니다. 두 스위치 사이의 오른쪽 중앙에 배치합니다.
- Output Light를 배치합니다. AND 게이트 오른쪽에 배치합니다.
- Switch A를 AND 게이트의 위쪽 입력에 연결합니다.
- Switch B를 AND 게이트의 아래쪽 입력에 연결합니다.
- AND 게이트의 출력을 등에 연결합니다.
- 네 가지 조합을 모두 체계적으로 테스트합니다. 진리표를 한 행씩 따라가며 확인하세요:
| 입력 A | 입력 B | 예상 출력 (Y) | 보아야 할 것 |
|---|---|---|---|
| 0 | 0 | 0 | 둘 다 OFF, 등 OFF |
| 0 | 1 | 0 | B만 ON, 등 OFF |
| 1 | 0 | 0 | A만 ON, 등 OFF |
| 1 | 1 | 1 | 둘 다 ON, 등 ON |
부울 식:
AND 연산은 곱셈처럼 동작합니다. 입력 중 어떤 것이라도 0이면 출력은 강제로 0이 됩니다.
배운 것
- AND 게이트는 만장일치를 요구합니다. 모든 입력이 1에 합의해야 출력이 1이 됩니다.
- 개의 입력을 가진 AND 게이트는 개의 가능한 입력 조합을 갖지만, 그중 단 하나만 1을 출력합니다.
- 모든 조합을 무작위가 아닌 체계적으로 테스트하는 것이 엔지니어가 정확성을 검증하는 방법입니다.
흔한 함정: 부동 입력
AND 게이트 입력을 연결하지 않은 채로 두면 **부동 입력(floating input)**이 됩니다. 물리적 회로에서 부동 입력은 전자기 노이즈를 받아 예측 불가능하게 동작합니다. digisim.io에서는 시뮬레이터가 이를 우아하게 처리하지만, 모든 핀을 항상 연결하는 습관은 실제 하드웨어로 옮겨갈 때 중요합니다. 고정된 입력 값이 필요하다면 CONSTANT 컴포넌트를 0 또는 1로 설정해 사용하세요.
실무 응용: 이중 키 보안 시스템
AND 게이트는 동시 인증이 필요한 모든 시스템을 자연스럽게 모델링합니다. 두 개의 키를 동시에 돌려야 하는 은행 금고, 두 명의 장교가 필요한 핵 발사 시스템, 비밀번호와 하드웨어 토큰을 모두 요구하는 웹 애플리케이션 — 이 모두가 AND 논리를 구현합니다.

3. OR 게이트 회로 만들기 (포용적 트리거)
OR 게이트는 적어도 하나의 입력이 1일 때 1을 출력합니다. 모든 입력이 0일 때에만 0을 출력합니다. AND 게이트가 “모든 조건이 필요하다”를 강제한다면, OR 게이트는 “어떤 조건이라도 충분하다”를 강제합니다.

단계별 만들기
- Input Switch 두 개를 왼쪽에 배치합니다.
- OR Gate를 중앙에 배치합니다.
- Output Light를 오른쪽에 배치합니다.
- Switch A를 OR 게이트의 위쪽 입력에 연결합니다.
- Switch B를 OR 게이트의 아래쪽 입력에 연결합니다.
- OR 게이트의 출력을 등에 연결합니다.
- 네 가지 조합을 모두 테스트합니다:
| 입력 A | 입력 B | 예상 출력 (Y) | 보아야 할 것 |
|---|---|---|---|
| 0 | 0 | 0 | 둘 다 OFF, 등 OFF |
| 0 | 1 | 1 | B만 ON, 등 ON |
| 1 | 0 | 1 | A만 ON, 등 ON |
| 1 | 1 | 1 | 둘 다 ON, 등 ON |
부울 식:
참고: 이는 논리 OR이며, 산술적 덧셈이 아닙니다. 부울 대수에서 인데, 출력은 이미 가능한 최대 HIGH 상태이기 때문입니다.
배운 것
- OR 게이트는 출력이 켜지기 위해 단 하나의 입력만 1이면 됩니다.
- 네 가지 입력 조합 중 세 가지가 1을 출력합니다(AND와 대조해 보세요. AND는 넷 중 하나만 1을 출력합니다).
- OR 게이트는 AND 게이트의 쌍대(dual)입니다. 드 모르간 정리가 이 쌍대성을 형식화합니다: .
실무 응용: 비상 정지 시스템
공장 바닥에서는 기계 주변의 여러 지점에 비상 정지 버튼을 배치합니다. 어떤 버튼이라도 눌리면 기계가 멈춰야 합니다. 이것이 OR 논리입니다: Button_1 OR Button_2 OR Button_3 = STOP. 버튼을 추가하는 것은 단순히 OR 게이트에 입력을 더 추가하는 것입니다.
4. 세 가지를 모두 조합하기: Enable 회로 만들기
이제 각 게이트를 개별적으로 만들어 보았으니, 게이트들이 함께 어떻게 작동하는지 보여 주는 회로로 조합해 봅시다. 반전 enable 회로를 만들 것입니다. 데이터 신호는 enable 스위치가 ON일 때에만 출력으로 전달되며, 출력은 반전됩니다.
단계별 만들기
- Input Switch 두 개를 배치합니다. 텍스트 도구로 하나는 “Data”, 다른 하나는 “Enable”로 라벨링합니다.
- AND Gate를 오른쪽에 배치합니다.
- AND 게이트 뒤에 NOT Gate를 배치합니다.
- 마지막에 Output Light를 배치합니다.
- 연결: Data 스위치를 AND 입력 A에, Enable 스위치를 AND 입력 B에 연결합니다. AND 출력을 NOT 입력에, NOT 출력을 등에 연결합니다.
- 동작 테스트:
- Enable = 0으로 설정합니다. Data를 0과 1 사이에서 토글합니다. 등은 무엇이든 상관없이 계속 ON입니다(AND 출력이 항상 0이고, NOT이 이를 1로 반전시키기 때문).
- Enable = 1로 설정합니다. 이제 Data를 토글합니다. Data = 0이면 AND가 0을 출력하고, NOT이 1을 출력하므로 등이 켜집니다. Data = 1이면 AND가 1을 출력하고, NOT이 0을 출력하므로 등이 꺼집니다.
이 회로의 부울 식:
방금 이산적인 AND와 NOT 컴포넌트로 NAND 게이트를 만들었습니다. NAND 게이트는 디지털 설계에서 가장 중요한 게이트 중 하나입니다. 그 자체로 기능적으로 완전(functionally complete)하다는 의미는, 다른 모든 게이트(AND, OR, NOT, XOR)를 오직 NAND 게이트만으로 만들 수 있다는 것입니다.
배운 것
- 게이트는 연결될 수 있습니다. 한 게이트의 출력이 다른 게이트의 입력으로 바로 들어갑니다.
- AND와 NOT을 조합하면 범용 게이트인 NAND가 만들어집니다.
- 단순하고 조립 가능한 구성 요소로부터 복잡한 동작이 출현합니다.
5. 오실로스코프로 타이밍 검증하기
정적 테스트(스위치를 토글하고 등을 확인)는 논리적 정확성을 확인합니다. 그러나 디지털 회로는 시간 속에서 동작하며, 타이밍 동작을 이해하는 것은 기능적 설계와 신뢰성 있는 설계를 구분 짓는 요소입니다.
digisim.io의 OSCILLOSCOPE는 신호가 시간에 따라 어떻게 변하는지 파형으로 표시해 보여 줍니다.
단계별 만들기
- 섹션 2에서 만든 AND 게이트 회로로 시작합니다.
- Input Switch 중 하나를 CLOCK 컴포넌트로 교체합니다. 클록은 고정 주파수로 0과 1을 자동으로 번갈아 출력합니다.
- 다른 Input Switch는 수동 제어용으로 유지합니다.
- 캔버스에 OSCILLOSCOPE를 추가합니다.
- 오실로스코프의 한 채널을 클록 출력(빠르게 토글되는 신호)에 연결합니다.
- 다른 채널을 AND 게이트 출력에 연결합니다.
- 수동 스위치를 1로 설정하고 관찰합니다. 오실로스코프는 한 채널에 클록 파형을, 다른 채널에 AND 게이트 출력을 보여 줍니다. 다른 입력이 1일 때 AND 게이트가 클록 신호를 통과시키므로, 둘은 일치해야 합니다.
- 이제 수동 스위치를 0으로 뒤집습니다. AND 게이트 출력은 클록과 무관하게 0으로 평탄해집니다. 방금 AND 게이트를 신호 게이트로 사용해, 명령에 따라 클록 신호를 차단한 것입니다.
이것이 실제 프로세서에서 사용되는 클록 게이팅의 개념적 기초입니다. 양산 설계에서는 이를 위해 평범한 AND 게이트를 실제로 사용하지는 않습니다 — enable 신호가 펄스 중간에 변하면 클록에 글리치가 생길 수 있기 때문입니다. 실제 실리콘은 *집적 클록 게이팅 셀(integrated clock-gating cell, ICG)*을 사용합니다. 클록이 LOW일 때까지 enable을 잡아 두는 래치와 그 뒤의 AND로 구성됩니다. 최종 동작은 방금 시연한 것과 동일하지만 글리치가 없습니다. 핵심은 그대로입니다. 기능 단위가 유휴 상태일 때 그 클록은 게이트로 차단되어, 불필요한 스위칭을 멈추고 에너지를 절약합니다.
배운 것
- 오실로스코프는 정적 등이 보여 줄 수 없는 동작을 드러냅니다: 타이밍 관계, 전파 지연, 신호 게이팅.
- AND 게이트는 어떤 디지털 신호든 통제 가능한 통과/차단 장치로 사용할 수 있습니다.
- 클록 게이팅은 프로세서 설계에서 실제로 사용되는 전력 절감 기법이며, 방금 그 핵심 메커니즘을 시연한 것입니다.
빠른 참조: 세 게이트 한눈에 보기
| 게이트 | 입력 | 출력 규칙 | 부울 식 | 주요 용도 |
|---|---|---|---|---|
| NOT | 1 | 반전 | 신호 반전, 액티브 로우 논리 | |
| AND | 2+ | 모두 1이어야 함 | 조건부 enable, 마스킹 | |
| OR | 2+ | 하나라도 1이면 됨 | 다중 소스 트리거 |
다음 단계
이제 세 가지 기본 게이트를 직접 경험해 보았습니다. 여기에서 자연스러운 진행은 다음과 같습니다:
- NAND와 NOR 게이트 — 섹션 4에서 이미 NAND를 만들어 보았습니다. NOR 게이트는 OR 다음에 NOT을 붙인 것입니다. 둘 다 범용 게이트입니다.
- XOR 게이트 — 입력이 다를 때 1을 출력합니다. 도전 과제로 AND, OR, NOT 게이트로 만들어 보세요.
- 반가산기 — XOR과 AND 게이트를 조합해 두 개의 1비트 숫자를 더합니다. 산술 회로로 가는 첫걸음입니다.
- 전가산기 — 반가산기를 연결해 자리올림 비트를 처리하고 다중 비트 덧셈을 가능하게 합니다.
이 모두는 오늘 연습한 기술 위에 직접 쌓아 올립니다. 핵심 원칙은 동일합니다: 컴포넌트를 배치하고, 배선하고, 체계적으로 테스트하며, 타이밍이 중요할 때는 오실로스코프로 검증합니다.
AND 게이트 컴포넌트 레퍼런스를 읽거나, 다음 빌딩 블록인 반가산기로 바로 넘어가 보세요.