정보통신기사 필기

⚙️ 논리회로 · 불대수 (5과목)

🚪 기본 논리 게이트
게이트논리식동작
ANDY = A · B둘 다 1일 때만 1
ORY = A + B하나라도 1이면 1
NOTY = A'반전
NANDY = (A · B)'AND의 반대. 모든 회로를 만들 수 있는 만능 게이트
NORY = (A + B)'OR의 반대. 역시 만능 게이트
XORY = A ⊕ B서로 다르면 1 · 같으면 0 → 반가산기·패리티·그레이 코드에 사용
XNORY = (A ⊕ B)'같으면 1 → 일치 검출
📐 불 대수 기본 법칙
법칙AND 형태OR 형태
항등A · 1 = A   A · 0 = 0A + 0 = A   A + 1 = 1
멱등A · A = AA + A = A
보수A · A' = 0A + A' = 1
교환A · B = B · AA + B = B + A
결합(A·B)·C = A·(B·C)(A+B)+C = A+(B+C)
분배A·(B+C) = A·B + A·CA + B·C = (A+B)·(A+C)
흡수A · (A + B) = AA + A·B = A
드모르간의 법칙 — 출제 1순위
(A · B)' = A' + B'
(A + B)' = A' · B'
부정을 안으로 넣으면 · 와 + 가 뒤바뀐다 — 이 한 문장이 전부
📊 기본 게이트 진리표 — 한 장으로
A B │ AND OR NAND NOR XOR XNOR ─────┼────────────────────────────────── 0 0 │ 0 0 1 1 0 1 0 1 │ 0 1 1 0 1 0 1 0 │ 0 1 1 0 1 0 1 1 │ 1 1 0 0 0 1 └ 둘다1 하나라도1 AND반전 OR반전 다르면1 같으면1
세로로 읽으면 관계가 보인다 — NAND는 AND를 뒤집은 것, NOR는 OR를 뒤집은 것, XNOR는 XOR를 뒤집은 것. 네 줄만 외우면 나머지는 반전으로 만들어진다.
🧮 논리 방정식 — 진리표에서 식 세우기
A B C │ F ────────┼─── 0 0 0 │ 0 0 0 1 │ 1 ← A'B'C 0 1 0 │ 0 0 1 1 │ 1 ← A'BC 1 0 0 │ 0 1 0 1 │ 1 ← AB'C 1 1 0 │ 0 1 1 1 │ 1 ← ABC SOP (곱의 합, 최소항) — 출력이 1인 행만 모아 OR 로 연결 F = A'B'C + A'BC + AB'C + ABC 규칙 : 변수가 0이면 보수(A'), 1이면 그대로(A) 로 적고 AND 로 묶는다 POS (합의 곱, 최대항) — 출력이 0인 행만 모아 AND 로 연결 규칙 : SOP와 정반대 — 0이면 그대로, 1이면 보수로 적고 OR 로 묶는다
⚠ SOP와 POS의 규칙이 정반대다
· SOP(1인 행) — 변수 값이 0이면 보수, 1이면 그대로 → AND로 묶고 전체를 OR
· POS(0인 행) — 변수 값이 1이면 보수, 0이면 그대로 → OR로 묶고 전체를 AND
헷갈리면 "SOP는 1을 모은다" 하나만 기억하고 나머지는 반대로 적용하면 된다.
✂️ 논리식 간소화 — 단계별 예제
예제 ①   F = A·B + A·B' + A'·B 를 간소화하면?
F = A·B + A·B' + A'·B
  = A·(B + B') + A'·B   ← 분배(A로 묶기)
  = A·1 + A'·B         ← 보수 B+B'=1
  = A + A'·B           ← 항등 A·1=A
  = (A + A')·(A + B) ← 분배
  = 1·(A + B) = A + B
예제 ②   F = A + A'·B 를 한 줄로 (자주 나오는 형태)
A + A'·B = A + B   /   A·(A' + B) = A·B
보수가 붙은 항 앞의 보수는 지워진다 — 흡수 법칙의 변형. 통째로 외워두면 빠르다
🔧 드모르간 활용 — NAND 하나로 다 만들기
NAND가 만능 게이트인 이유 NOT : A NAND A = (A·A)' = A' AND : (A NAND B) NAND (A NAND B) = ((A·B)')' = A·B OR : (A NAND A) NAND (B NAND B) = A' NAND B' = (A'·B')' = A + B ← 드모르간 세 가지를 다 만들 수 있으므로 모든 논리회로를 NAND만으로 구현할 수 있다. NOR 도 같은 이유로 만능 게이트다.
왜 만능 게이트를 쓰는가 — 공정에서 한 종류의 게이트만 대량 생산하면 되므로 단가가 내려가고 집적도가 올라간다. "NAND/NOR가 만능 게이트인 이유"를 묻는 문제의 근거가 바로 위 세 줄이다.
🗺️ 카르노맵 (Karnaugh Map) — 논리식 간소화

불 대수 법칙을 하나씩 적용해 식을 줄이는 것은 실수하기 쉽다. 카르노맵은 진리표를 격자로 그려 놓고 눈으로 묶어 최소 논리식을 얻는 방법이다. 게이트 수를 줄여 회로를 단순하게 만드는 것이 목적이다.

핵심 — 칸 배열이 그레이 코드 순서다 BC A 00 01 11 10 ← 01 다음이 11 (10이 아니다!) 0 · · · · 1 · · · · 이렇게 배열해야 이웃한 칸이 딱 1비트만 달라진다. 그래야 묶었을 때 변하는 변수가 사라진다.
묶기 규칙내용
개수1, 2, 4, 8 … 2의 거듭제곱 개씩만 묶는다 (3개·5개 묶기 불가)
크기최대한 크게 묶는다 — 크게 묶을수록 변수가 많이 사라진다
중복이미 묶인 1을 다시 묶어도 된다
인접상하좌우로만 인접. 맨 왼쪽과 맨 오른쪽, 맨 위와 맨 아래도 인접(맵이 원통처럼 감김)
결과 읽기묶음 안에서 값이 변하는 변수는 삭제, 변하지 않는 변수만 남긴다
📖 예제 — F(A,B,C) = Σm(0,1,2,3,4,5) 를 간소화하면?
BC A 00 01 11 10 0 1 1 1 1 ← ① A=0 행 전체(4칸) 묶기 1 1 1 0 0 ↑ ↑ └───┘ ② BC=00·01 두 열(4칸) 묶기 ① A=0 행 4칸 → B와 C가 모두 변함 → 지움. A만 0으로 고정 → A' ② 왼쪽 두 열 4칸 → A와 C가 변함 → 지움. B만 0으로 고정 → B' F = A' + B' (= (A·B)' — 드모르간으로 확인 가능)
용어내용
최소항
Minterm · SOP
출력이 1인 항들을 곱의 합(AND들을 OR)으로 표현. Σm 으로 씀 — 카르노맵에서 1을 묶는 방식
최대항
Maxterm · POS
출력이 0인 항들을 합의 곱(OR들을 AND)으로 표현. ΠM 으로 씀 — 0을 묶는 방식
무관항
Don't care · X
0이든 1이든 상관없는 칸. 묶는 데 도움이 되면 1로 취급해 더 크게 묶을 수 있다
⚠ 카르노맵 함정 세 가지
· 열 순서는 00 · 01 · 11 · 10 — 그레이 코드 순서다. 00·01·10·11로 그리면 전부 틀린다
· 3개씩은 묶을 수 없다. 반드시 1·2·4·8개
· 양 끝은 서로 인접하다. 맨 왼쪽 열과 맨 오른쪽 열, 4변수 맵에서는 네 모서리도 하나로 묶인다
➕ 조합 논리회로
회로기능구성
반가산기
Half Adder
1비트 두 개를 더함. 자리올림 입력은 못 받음 S = A ⊕ B
C = A · B
XOR 1개 + AND 1개
전가산기
Full Adder
자리올림 입력까지 3개 비트를 더함 반가산기 2개 + OR 1개 기출
디코더 (해독기)n개 입력 → 2ⁿ개 출력 중 하나만 활성주소 해독
인코더 (부호기)2ⁿ개 입력 → n개 출력디코더의 반대
멀티플렉서 (MUX)여러 입력 중 하나를 선택해 출력 (2ⁿ → 1)선택선 n개
디멀티플렉서 (DEMUX)하나의 입력을 여러 출력 중 하나로 (1 → 2ⁿ)MUX의 반대
⚠ 헷갈리는 짝 두 개
· 디코더 = 적은 입력 → 많은 출력 / 인코더 = 많은 입력 → 적은 출력
· MUX = 여러 개 중 하나 고르기(선택) / DEMUX = 하나를 여러 곳으로 분배
🔄 순서 논리회로 — 플립플롭
종류동작
RS 플립플롭Set / Reset. S=R=1 은 금지 입력(불확정) 기출
JK 플립플롭RS의 금지 입력을 해결. J=K=1 이면 출력이 반전(토글)
D 플립플롭입력을 그대로 저장. 데이터 지연·레지스터에 사용
T 플립플롭T=1 이면 반전(Toggle). 카운터에 사용
조합 vs 순서 회로 — 조합 논리회로는 현재 입력만으로 출력이 정해진다(가산기·디코더·MUX). 순서 논리회로는 이전 상태(기억) 까지 반영한다(플립플롭·카운터·레지스터).
🔗 이어지는 단원
📝 시험 포인트
• NAND · NOR = 만능 게이트 (모든 논리회로 구현 가능)
• XOR = 다르면 1 → 반가산기 합·패리티·그레이 코드
• 드모르간 — 부정을 넣으면 · 와 + 가 바뀐다
• 반가산기 = XOR + AND, 전가산기 = 반가산기 2개 + OR 1개
• 디코더 n→2ⁿ / 인코더 2ⁿ→n, MUX 선택 / DEMUX 분배
• RS의 금지 입력 = S=R=1, JK는 J=K=1에서 토글
• SOP = 1인 행 모음(0이면 보수) / POS = 0인 행 모음(1이면 보수)
• A + A'B = A + B, A(A' + B) = AB — 통째로 암기
• 카르노맵 열 순서 = 00·01·11·10(그레이), 묶기는 2의 거듭제곱 개, 양 끝은 인접
• 조합회로 = 현재 입력만 / 순서회로 = 이전 상태 기억