핵심 인사이트
- 순서 논리 회로(Sequential Logic Circuit)는 현재 입력과 **이전 상태(메모리)**에 따라 출력이 결정되는 회로로 — 조합 논리(Combinational Logic)와 달리 피드백 루프와 기억 소자(Flip-Flop, Latch)를 포함하여 시간 의존성을 갖는다.
- 동기식 순서 회로(Synchronous Sequential Circuit)는 클록 신호(CLK)에 맞춰 상태가 전환되므로 설계·분석이 명확하지만 — 클록 스큐(Clock Skew)와 셋업/홀드 타임(Setup/Hold Time) 위반이 타이밍 오류의 주요 원인이다.
- 순서 논리의 핵심 기억 소자인 플립플롭(Flip-Flop)은 SR/D/JK/T 종류가 있으며 — 레지스터, 카운터, FSM(유한 상태 기계)의 구성 요소이자 CPU 파이프라인 레지스터와 캐시의 기반이다.
Ⅰ. 순서 논리 회로 개념
순서 논리 회로 (Sequential Logic Circuit):
조합 논리 vs 순서 논리:
조합 논리: 출력 = f(현재 입력)
AND, OR, NAND, NOR, XOR
메모리 없음, 즉각 반응
순서 논리: 출력 = f(현재 입력, 현재 상태)
상태(State) = 과거 입력의 기억
피드백 루프 포함
구조:
입력(X) ──┐
├──▷ 조합 논리 회로 ──▷ 출력(Z)
상태(Q) ──┘ │
↑ │ (다음 상태)
└───────────────┘
↑
기억 소자 (Flip-Flop / Latch)
↑
클록 (CLK)
클록 동기화:
동기식 (Synchronous): CLK 엣지에서 상태 전환
→ 설계 단순, 분석 명확
→ 현대 디지털 시스템 표준
비동기식 (Asynchronous): 클록 없이 이벤트 기반
→ 빠른 반응, 설계 복잡
→ Ripple Counter 등 특수 용도
상태 다이어그램 (State Diagram):
원(Circle) = 상태
화살표(Arc) = 전환 (입력/출력)
예: 신호등 FSM: RED → GREEN → YELLOW → RED
📢 섹션 요약 비유: 순서 논리는 메모리 있는 계산 — 조합 논리가 "지금만 보는 사람"이라면, 순서 논리는 "전 상황도 기억하는 사람". 다음 행동이 과거에도 영향받아요.
Ⅱ. 플립플롭 종류
플립플롭 (Flip-Flop):
래치 (Latch) vs 플립플롭:
래치: 레벨(Level) 트리거 — CLK HIGH 동안 입력 반영
플립플롭: 에지(Edge) 트리거 — CLK 상승/하강 엣지만 반영
현대: 플립플롭이 표준 (타이밍 제어 정확)
1. SR 플립플롭 (Set-Reset):
S=1, R=0 → Q=1 (Set)
S=0, R=1 → Q=0 (Reset)
S=0, R=0 → Q 유지 (Hold)
S=1, R=1 → 금지 (Forbidden) ← 문제점
2. D 플립플롭 (Data):
가장 단순하고 널리 사용
CLK 엣지에서 D 입력을 Q에 저장
Q(t+1) = D
용도: 레지스터, 시프트 레지스터
3. JK 플립플롭:
SR의 금지 상태를 해결
J=K=1 → Toggle (반전)
J=1, K=0 → Set
J=0, K=1 → Reset
J=0, K=0 → Hold
Q(t+1) = J·Q̄ + K̄·Q
4. T 플립플롭 (Toggle):
T=1 → Toggle
T=0 → Hold
Q(t+1) = T⊕Q
용도: 카운터 (T=1이면 매 CLK마다 반전)
셋업/홀드 타임:
셋업 타임 (tsu): CLK 엣지 전 입력 안정 유지 시간
홀드 타임 (th): CLK 엣지 후 입력 안정 유지 시간
위반 시: 메타스태빌리티 (Metastability) → 불확정 출력
📢 섹션 요약 비유: D/JK/T 플립플롭은 메모리 스위치 종류 — D는 "그냥 저장", JK는 "더 많은 명령 수용", T는 "ON/OFF 토글". 클록이 울릴 때만 상태 바뀌는 엄격한 기억 소자.
Ⅲ. 유한 상태 기계
유한 상태 기계 (FSM — Finite State Machine):
Mealy vs Moore 머신:
Moore 머신:
출력 = f(현재 상태만)
상태에만 의존
장점: 출력 안정적 (클록 동기)
Mealy 머신:
출력 = f(현재 상태, 현재 입력)
입력 변화에 즉각 반응
장점: 상태 수 적을 수 있음
FSM 설계 절차:
1. 상태 정의 (State Definition)
2. 상태 다이어그램 작성
3. 상태 인코딩 (Binary, Gray Code, One-Hot)
4. 여기 함수 도출 (D, JK, T 조합)
5. 출력 함수 도출
6. 논리 회로 구현
신호등 FSM 예시 (Moore):
상태: S0(RED), S1(GREEN), S2(YELLOW)
입력: timer
S0 →[timer=1]→ S1 →[timer=1]→ S2 →[timer=1]→ S0
출력:
S0 → RED=1, GREEN=0, YELLOW=0
S1 → RED=0, GREEN=1, YELLOW=0
S2 → RED=0, GREEN=0, YELLOW=1
실용 FSM 응용:
프로토콜 파서: TCP 연결 상태 머신
에러 처리: 자판기 동전 상태
CPU 제어 유닛: 명령 페치/디코드/실행/쓰기
통신: UART, I2C 프로토콜
📢 섹션 요약 비유: FSM은 게임 캐릭터 AI — "대기→공격→후퇴→대기" 상태가 있고, 입력(플레이어 위치)에 따라 상태가 전환. 현재 상태만이 다음 행동을 결정해요.
Ⅳ. 카운터와 레지스터
카운터 (Counter):
비동기 카운터 (Ripple Counter):
T 플립플롭 직렬 연결
각 FF의 Q 출력 → 다음 FF의 CLK
장점: 구조 단순
단점: 전파 지연 (Ripple Delay) 누적
n비트 → n × tFF 지연
동기 카운터 (Synchronous Counter):
모든 FF가 공통 CLK 사용
장점: 빠름 (병렬 전환)
단점: 회로 복잡
2비트 업 카운터 (D FF, 동기):
현재 상태 Q1Q0 → 다음 상태
00 → 01 → 10 → 11 → 00 (반복)
D0 = Q0̄
D1 = Q1⊕Q0
분주기 (Frequency Divider):
T FF T=1: 매 CLK마다 토글
→ 출력 주파수 = CLK / 2
n개 직렬: CLK / 2^n
레지스터 (Register):
병렬 레지스터: n개 D FF 공통 CLK
n비트 데이터를 동시에 저장/출력
시프트 레지스터 (Shift Register):
직렬 연결: Q → 다음 D
매 CLK마다 데이터가 한 칸씩 이동
용도: 직렬↔병렬 변환, UART 송수신
CRC 계산, 난수 생성 (LFSR)
LFSR (Linear Feedback Shift Register):
XOR 피드백 = 의사 난수 생성
암호화, 테스트 패턴 생성
📢 섹션 요약 비유: 카운터와 레지스터는 탁상 달력 — 카운터는 날짜를 하루씩 넘기는 것, 레지스터는 메모를 써두는 것. 시프트 레지스터는 컨베이어 벨트처럼 정보가 줄지어 이동.
Ⅴ. 실무 시나리오 — CPU 파이프라인 레지스터
CPU 파이프라인 레지스터 (순서 논리 응용):
5단계 파이프라인:
IF → ID → EX → MEM → WB
각 단계 사이: 파이프라인 레지스터 (D FF 묶음)
IF/ID 레지스터: 명령어 저장
ID/EX 레지스터: 피연산자, 제어 신호
EX/MEM 레지스터: ALU 결과
MEM/WB 레지스터: 메모리 읽기 결과
타이밍 문제 — 셋업 타임:
CLK 주기 = 단계 최대 지연 + 셋업 타임 + 클록 스큐
예:
EX 단계 (ALU): 3ns
셋업 타임: 0.5ns
클록 스큐: 0.1ns
최소 CLK 주기 = 3 + 0.5 + 0.1 = 3.6ns
최대 주파수 = 1 / 3.6ns ≈ 278MHz
데이터 해저드와 스톨:
1. 데이터 의존성 → 파이프라인 스톨
NOP 삽입 (버블) = 낭비 사이클
2. 전달(Forwarding)로 해결:
EX/MEM 레지스터 값 → EX 단계 입력으로 직접 전달
스톨 없이 의존성 해결
브랜치 예측 실패:
IF 단계에서 잘못된 명령어 패치
예측 실패 시 IF/ID, ID/EX 레지스터 flush
= 파이프라인 버블 (2~3 사이클 낭비)
현대 CPU:
Intel i9: 10+ 단계 파이프라인
ARM Cortex-A78: 13단계
각 단계 경계마다 순서 논리 레지스터 사용
📢 섹션 요약 비유: CPU 파이프라인 레지스터는 공장 작업대 칸막이 — 각 작업자가 물건을 다음 칸으로 넘기려면 클록이 울릴 때까지 기다려야 해요. 칸막이(레지스터) = D 플립플롭의 집합.
📌 관련 개념 맵
순서 논리 회로
+-- 기억 소자
| +-- 래치 (레벨 트리거)
| +-- 플립플롭 (에지 트리거): SR, D, JK, T
+-- 회로 구성
| +-- FSM (Moore, Mealy)
| +-- 카운터 (비동기, 동기)
| +-- 레지스터, 시프트 레지스터
+-- 타이밍
| +-- 셋업/홀드 타임
| +-- 클록 스큐
| +-- 메타스태빌리티
+-- CPU 응용
| +-- 파이프라인 레지스터
| +-- 제어 유닛 FSM
📈 관련 키워드 및 발전 흐름도
[래치 발명 (1918)]
SR 래치 (릴레이 기반)
진공관 → 트랜지스터 래치
|
v
[플립플롭 체계화 (1950s)]
D/JK/T 플립플롭 설계 이론
클록 동기식 설계 표준화
|
v
[VLSI 시대 (1980s)]
수백만 FF → CPU 레지스터 파일
CMOS 구현, 저전력화
|
v
[파이프라인 CPU (1990s)]
파이프라인 레지스터 = 순서 논리 핵심
Forwarding, Hazard Detection
|
v
[현재: 고속 멀티코어]
수백만 개 D-FF in one chip
GHz 클록, 딥 파이프라인
저전력 클록 게이팅
👶 어린이를 위한 3줄 비유 설명
- 순서 논리는 "기억하는 스위치" — 조합 논리가 지금만 보는 스위치라면, 순서 논리는 전 상태도 기억해서 다음을 결정하는 스위치!
- 플립플롭은 한 비트 메모장 — 클록이 울릴 때마다 입력 값을 "탁!" 저장하고, 다음 클록까지 그 값을 유지해요.
- CPU의 파이프라인은 순서 논리의 집합체 — 각 단계 사이에 D 플립플롭이 대기해서 클록마다 데이터를 다음 단계로 전달해요!