오늘 끝나면
래치와 플립플롭
- ✓래치와 플립플롭의 핵심 문제를 한 문장으로 설명한다
- ✓오른쪽 실습에서 래치와이 어떻게 움직이는지 관찰한다
- ✓다음 강의와 이어지는 한계를 말할 수 있다
실습 미션
피드백으로 상태를 잡다 — D 플립플롭·setup/hold 이 문장이 실제로 무슨 뜻인지 실습에서 한 번 손으로 확인한다.
성공 조건
- □실습의 기본값을 먼저 관찰
- □입력값이나 모드를 한 번 이상 바꿔 결과 비교
- □왜 결과가 바뀌었는지 한 문장으로 설명
반도체 설계 · 11
래치와
플립플롭
게이트는 입력이 바뀌면 출력도 바뀐다. 기억이 없다.
출력을 입력으로 되먹이면(피드백) 비로소 상태가 생긴다.
그 1비트 기억의 단위가 플립플롭이다.
피드백으로 상태를 잡는다
지금까지 게이트는 입력이 사라지면 출력도 같이 사라졌다. 과거를 못 들고 있다.
기억을 만들려면 회로가 자기 출력을 다시 자기 입력으로 보게 해야 한다. 이게 피드백이다.
NOR 게이트 둘을 서로의 출력으로 묶으면 SR 래치가 된다.
S(Set)를 1로 치면 출력 Q가 1로 잠긴다.
R(Reset)을 1로 치면 Q가 0으로 잠긴다.
핵심은 S와 R을 둘 다 0으로 놔도 Q가 직전 값을 그대로 들고 있다는 것이다.
입력이 없어도 고리가 스스로 값을 떠받친다. 이게 1비트 ‘기억’의 정체다.
단, S=R=1은 금지 조합이다. 두 출력이 동시에 0이 돼 모순이 생긴다.
파란 선은 피드백 고리다. 출력이 상대편 입력으로 되돌아간다
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 0)에선 마지막 값을 잠가 들고 있다.
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비트 저장 표준이다.
플립플롭(FF)은 ▲ 칸에서만 점을 찍고 갱신한다. 한 클럭에 딱 한 번이다.
직접 토글하고 edge를 예측한다
세 칸을 따로 본다. 입력 D(지금 들어온 값), 다음 상태(edge 오면 새겨질 값), 저장 Q(실제 기억된 값)다.
D를 흔들면 ‘입력 D’와 ‘다음 상태’는 바로 따라오지만, ‘저장 Q’는 rising edge가 와야만 바뀐다.
Q가 바뀌는 조건은 clock이 0→1(rising edge)이고 그때 D≠Q일 때뿐이다.
파형에서 Q가 꺾이는 점은 항상 CLK의 ▲(rising edge)와 같은 칸에 있다.
지금 들어온 값
edge 오면 이 값
실제 기억된 값
STEP을 누르면 clock이 0→1 으로 한 칸 움직인다 · 이건 rising edge(0→1)
Q는 CLK이 ▲(0→1)로 오를 때만 D를 따라 꺾인다 · 그 외엔 직전 값을 그대로 들고 있다
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인 동안 내내 통과시켜서, ‘순간’이 아니라 ‘구간’이라는 점이 다르다.)
파란 창(t_su + t_h) 안에서 D는 한 값으로 멈춰 있어야 한다. 여기서 D가 흔들리면 메타스테이블