스킬캠퍼스

오늘 끝나면

래치와 플립플롭

  • 래치와 플립플롭의 핵심 문제를 한 문장으로 설명한다
  • 오른쪽 실습에서 래치와이 어떻게 움직이는지 관찰한다
  • 다음 강의와 이어지는 한계를 말할 수 있다

실습 미션

피드백으로 상태를 잡다 — D 플립플롭·setup/hold 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.

성공 조건

  • 실습의 기본값을 먼저 관찰
  • 입력값이나 모드를 한 번 이상 바꿔 결과 비교
  • 왜 결과가 바뀌었는지 한 문장으로 설명

반도체 설계 · 11

래치와
플립플롭

게이트는 입력이 바뀌면 출력도 바뀐다. 기억이 없다.
출력을 입력으로 되먹이면(피드백) 비로소 상태가 생긴다.
그 1비트 기억의 단위가 플립플롭이다.

P.01반도체 설계 · 11

피드백으로 상태를 잡는다

지금까지 게이트는 입력이 사라지면 출력도 같이 사라졌다. 과거를 못 들고 있다.
기억을 만들려면 회로가 자기 출력을 다시 자기 입력으로 보게 해야 한다. 이게 피드백이다.

NOR 게이트 둘을 서로의 출력으로 묶으면 SR 래치가 된다.
S(Set)를 1로 치면 출력 Q가 1로 잠긴다.
R(Reset)을 1로 치면 Q가 0으로 잠긴다.

핵심은 SR을 둘 다 0으로 놔도 Q가 직전 값을 그대로 들고 있다는 것이다.
입력이 없어도 고리가 스스로 값을 떠받친다. 이게 1비트 ‘기억’의 정체다.
단, S=R=1은 금지 조합이다. 두 출력이 동시에 0이 돼 모순이 생긴다.

출력을 입력으로 되먹이는 고리, SR 래치
SR 래치 · 출력이 입력으로 되돌아간다
NORNORRSQ

파란 선은 피드백 고리다. 출력이 상대편 입력으로 되돌아간다

S=1, R=0Q=1Set, 1로 잠긴다
S=0, R=1Q=0Reset, 0으로 잠긴다
S=0, R=0Q=직전값기억, 그대로 유지된다
S=1, R=1금지모순, 쓰면 안 된다
S=R=0에서 직전값을 떠받치는 것이 1비트 기억이다
P.02반도체 설계 · 11

D 래치, 투명한 기억

SR 래치는 입력 두 개에 금지 조합까지 있어 다루기 까다롭다. 이걸 깔끔하게 다듬은 게 D 래치다.

입력을 데이터 D 하나로 줄이고, enable(또는 clock 레벨)을 붙인다.
내부에선 S=D, R=¬D로 만들어 S=R=1 금지 조합이 아예 안 생긴다.

enable=1이면 Q가 D를 그대로 따라간다. 이 상태를 투명(transparent)하다고 한다.
enable=0이면 그 순간의 D를 잠가서 들고 있다.

문제는 투명함 그 자체다. enable이 1인 동안엔 D가 흔들리면 Q도 같이 흔들린다.
딱 정해진 한 순간에만 값을 받게 하려면 한 걸음 더 필요하다. 그게 플립플롭이다.

enable가 1이면 통과, 0이면 잠금
D 래치 · enable=1이면 투명(통과)
ENDQ
파란 음영은 enable 1 구간이다. 그동안 Q가 D를 그대로 따라간다(투명).
음영 밖(enable 0)에선 마지막 값을 잠가 들고 있다.
P.03반도체 설계 · 11

D 플립플롭, edge에만 저장한다

D 래치는 clock이 1인 동안 내내 열려 있다. D 플립플롭은 clock이 오르는 그 한 순간(edge)에만 값을 받는다.

clock이 0→1로 바뀌는 모서리를 rising edge라 한다.
D 플립플롭은 이 edge가 지나가는 찰나에만 D를 캡처해 Q에 새긴다. 나머지 시간엔 Q가 꿈쩍 않는다.

그래서 clock이 1로 머무는 동안 D가 아무리 출렁여도 Q는 마지막에 캡처한 값을 조용히 들고 있다.
한 클럭에 정확히 한 번만 값이 바뀐다. 이 규율 덕에 수십억 개를 같은 박자로 줄 세울 수 있다.

edge-triggered D 플립플롭이 칩의 1비트 저장 표준이다.

레벨 동안 통과 vs edge 순간만 캡처
같은 입력 · 레벨 통과 vs edge 캡처
CLKD래치FF
점선은 rising edge(▲)다. 래치(점선 회색)는 clock=1 구간 내내 D를 따라 출렁인다.
플립플롭(FF)은 ▲ 칸에서만 점을 찍고 갱신한다. 한 클럭에 딱 한 번이다.
P.04반도체 설계 · 11

직접 토글하고 edge를 예측한다

세 칸을 따로 본다. 입력 D(지금 들어온 값), 다음 상태(edge 오면 새겨질 값), 저장 Q(실제 기억된 값)다.

D를 흔들면 ‘입력 D’와 ‘다음 상태’는 바로 따라오지만, ‘저장 Q’는 rising edge가 와야만 바뀐다.

Q가 바뀌는 조건은 clock이 0→1(rising edge)이고 그때 D≠Q일 때뿐이다.
파형에서 Q가 꺾이는 점은 항상 CLK의 ▲(rising edge)와 같은 칸에 있다.

D·clock 조작 → 입력/다음/저장 분리 · 파형
D 플립플롭 · 1비트 기억
입력 D
1

지금 들어온 값

다음 상태
1

edge 오면 이 값

저장 Q
0

실제 기억된 값

입력 D, 직접 토글
clock 레벨 (지금)CLK = 0

STEP을 누르면 clock이 01 으로 한 칸 움직인다 · 이건 rising edge(0→1)

예측 먼저, 이번 STEP에서 Q가 바뀔까?
근거 패널, 파형 (시간 →)
DCLKQ

Q는 CLK이 ▲(0→1)로 오를 때만 D를 따라 꺾인다 · 그 외엔 직전 값을 그대로 들고 있다

P.05반도체 설계 · 11

setup / hold, edge 앞뒤로 멈춰 있어야 한다

edge에만 값을 받는다고 끝이 아니다. 그 edge 전후로 D가 흔들리고 있으면 무슨 값을 잡았는지 회로조차 모른다.

그래서 두 가지 시간 약속이 있다.
setup 시간(t_su)은 edge가 오기 에 D가 미리 안정돼 있어야 하는 시간이다.
hold 시간(t_h)은 edge가 지난 에도 D가 잠깐 더 안정돼 있어야 하는 시간이다.

이 창(window) 안에서 D가 바뀌면 메타스테이블(0도 1도 아닌 어정쩡한 상태)에 빠질 수 있다.
한 비트가 망가지면 그걸 읽는 모든 회로가 같이 틀린다. 그래서 칩의 최고 동작 주파수는 결국 이 타이밍 여유로 정해진다.

정리하면 피드백이 상태를 만들고(SR), 데이터 하나로 다듬고(D 래치), edge로 규율을 잡고(D 플립플롭), setup과 hold로 안전을 보장한다.

Q. D 플립플롭이 D 값을 실제로 받아 저장하는 순간은?정답은 클럭 edge(rising edge, 0→1로 오르는 그 순간)다.
clock이 1로 ‘머무는 동안’이 아니라, 0→1로 바뀌는 모서리에서만 D를 캡처한다.
(D 래치는 enable이 1인 동안 내내 통과시켜서, ‘순간’이 아니라 ‘구간’이라는 점이 다르다.)
edge 전 t_su · edge 후 t_h 동안 D 안정
edge 한 개 확대 · t_su, t_h
CLKDt_sut_hedge

파란 창(t_su + t_h) 안에서 D는 한 값으로 멈춰 있어야 한다. 여기서 D가 흔들리면 메타스테이블

setup t_suedge 전오기 전에 D가 미리 안정된다
hold t_hedge 후지난 뒤에도 잠깐 더 안정된다
위반하면메타스테이블0도 1도 아닌 상태에 빠진다
이 타이밍 여유가 칩의 최고 동작 주파수를 정한다

3줄 요약

  1. 1피드백으로 상태를 잡다 — D 플립플롭·setup/hold
  2. 2래치와 플립플롭은 비트·게이트 → ALU → 시간·메모리 → 나만의 CPU → 메모리·GPU·SoC 흐름 안의 한 칸이다.
  3. 3개념을 외우는 것보다 입력을 바꾸면 무엇이 달라지는지 보는 것이 우선이다.

완료 전 점검

복습 카드

래치와

피드백으로 상태를 잡다 — D 플립플롭·setup/hold

ALU

산술·논리 연산을 하는 회로

ISA

CPU가 이해하는 명령어 집합과 인코딩