D 플립플롭
더 많은 작업
D 플립플롭(D flip-flop, Data/Delay flip-flop)은 클록이 바뀌는 순간(상승 또는 하강 에지)의 입력 D 값을 출력 Q 에 옮겨 다음 에지까지 그대로 기억하는 1비트 기억 소자로, 레벨에 반응하는 D 래치 두 개를 마스터-슬레이브로 이어 만든다.
플립플롭 가운데 입력이 하나(D)뿐이라 가장 단순하고, 레지스터·카운터·시프트 레지스터 같은 순차 논리 회로의 기본 부품이다. 다음 상태는 Q(t+1) = D 다. 이것을 이해하려면 먼저 래치(latch)와 플립플롭(flip-flop)의 차이를 알아야 한다.
| 구분 | 동작 시점 | 특징 |
|---|---|---|
| D 래치(레벨 감응) | 인에이블(EN, 클록)이 High 인 동안 내내 | EN = 1 이면 출력이 입력을 그대로 따라간다(투명 상태). EN 이 0 으로 떨어지는 순간의 값을 붙잡아 EN = 0 인 동안 유지한다 |
| D 플립플롭(에지 트리거) | 클록이 바뀌는 순간(에지)에만 | 에지 순간의 D 만 Q 에 들어간다. 클록이 High·Low 로 머무는 동안 D 가 바뀌어도 Q 는 변하지 않는다 |
SR 래치의 S 에 D 를, R 에 D 의 반전을 넣고 EN 으로 두 입력을 함께 열고 닫는다. S = R = 1 같은 금지 입력이 생기지 않는다.
| EN | D | Q(다음) |
|---|---|---|
| 0 | × | Q(유지) |
| 1 | 0 | 0 |
| 1 | 1 | 1 |
D 래치 두 개를 직렬로 잇고, 두 래치의 EN 에 서로 반대 위상의 클록을 준다. 앞 래치를 마스터(master), 뒤 래치를 슬레이브(slave)라 한다.
- 마스터의 EN 에 반전된 클록(CLK'), 슬레이브의 EN 에 클록(CLK)을 주는 경우
- CLK = Low : 마스터가 투명해 IN 을 따라가고, 슬레이브는 닫혀 OUT 을 유지한다
- CLK 상승 에지 : 마스터가 닫히며 그 순간의 IN 을 붙잡고, 슬레이브가 열려 마스터 값을 OUT 으로 내보낸다
- CLK = High : 마스터가 닫혀 있으므로 IN 이 바뀌어도 OUT 은 변하지 않는다
- 결과적으로 OUT 은 클록 상승 에지 직전의 IN 값으로만 바뀐다. 상승 에지 트리거 D 플립플롭이다
- 인버터를 슬레이브 쪽에 두면(마스터 EN = CLK, 슬레이브 EN = CLK') 하강 에지 트리거가 된다
- 입력이 출력에 곧바로 번지지 않으므로 JK 플립플롭의 레이스(race) 현상을 막는 데도 같은 구성을 쓴다
위 구성(마스터 EN = CLK', 슬레이브 EN = CLK)에서 처음 OUT = High, CLK 가 t1↑, t2↓, t4↑, t7↓ 이고 IN 이 t0↓, t3↑, t5↓, t6↑ 인 경우
- t0~t1 : CLK = Low 라 마스터가 IN(Low)을 따라간다. 슬레이브는 닫혀 OUT = High 유지
- t1↑ : 마스터가 Low 를 붙잡고 슬레이브가 열려 OUT 이 Low 로 떨어진다
- t2~t4 : CLK = Low 라 마스터가 다시 IN 을 따라간다. t3 에 IN 이 High 가 되어 마스터도 High. OUT 은 Low 유지
- t4↑ : 마스터의 High 가 슬레이브로 넘어가 OUT 이 High 로 오른다
- t5·t6 의 IN 변화는 CLK = High 동안이라 마스터가 닫혀 있어 무시된다. t7↓ 뒤 마스터가 다시 IN(High)을 따라가지만 슬레이브는 닫혀 OUT 은 High 그대로다
즉 OUT 은 상승 에지(t1, t4)에서만 바뀌고, 각 에지 직전의 IN 값을 따른다. 래치 하나만 있었다면 CLK = High 인 동안의 IN 변화(t5, t6)가 OUT 에 그대로 나타났을 것이다.
D 입력은 클록 에지에서만 읽히는 동기 입력이다. 이와 달리 비동기 리셋(클리어, R·CLR)과 비동기 프리셋(PR)은 클록과 관계없이 즉시 Q 를 0 또는 1 로 만든다.
- 기호의 입력 단자에 작은 원(버블)이 있으면 액티브 로우다. 그 신호가 Low 인 동안 리셋(또는 프리셋)이 걸린다
- 리셋이 걸려 있는 동안에는 클록 에지가 와도 Q = 0 으로 묶여 D 를 받아들이지 않는다
- 리셋이 풀린 뒤에는 다음 클록 에지부터 다시 Q(t+1) = D 다. 리셋이 풀리는 순간 자체에는 Q 가 바뀌지 않는다
상승 에지 D 플립플롭, D = X, 출력 Y = Q, 액티브 로우 비동기 리셋. CK 상승 에지가 t1·t5·t9, Reset 은 t1 앞부터 t4 까지 Low, X 는 t2~t6 과 t10~t12 에 High 인 경우
- 처음부터 t4 까지 : 리셋이 걸려 Y = 0. t1 에지도 무시된다. X 가 t2 에 올라도 Y 는 0
- t4 에 리셋이 풀려도 에지가 아니라 Y 는 0 그대로다
- t5↑ : X = 1 이므로 Y = 1
- t9↑ : X = 0(t6 에 내려감)이므로 Y = 0. t10~t12 의 X 펄스 동안에는 상승 에지가 없어 Y 는 0 이다
결과적으로 Y 는 t5 부터 t9 까지만 High 다.
- 기호의 클록 단자에 그린 작은 삼각형(>)은 에지 트리거라는 뜻이다. 삼각형이 없으면 레벨 감응 래치다
- 삼각형 앞에 작은 원(버블)이 붙어 있으면 하강 에지(1 → 0)에서 동작한다. 원이 없으면 상승 에지다
하강 에지 D 플립플롭, Q 의 초기값 0. 클록의 하강 에지 순간마다 그때의 D 를 보고, 그 값을 다음 하강 에지까지 유지한다.
- 첫 하강 에지에 D = 1 이면 Q 가 그 순간 1 로 오른다. D 가 클록 High 구간 중간에 올랐더라도 Q 는 하강 에지에서야 바뀐다
- 다음 하강 에지에 D 가 이미 0 으로 내려가 있으면 Q 가 0 이 된다
- D 가 여러 클록 동안 1 로 머물면 Q 는 첫 하강 에지부터 D 가 0 으로 내려간 뒤의 첫 하강 에지까지 1 이다
- Q 의 변화가 하강 에지 선에만 걸쳐 있는 파형이 맞다. D 가 바뀌는 순간에 Q 가 바로 따라 바뀌는 파형은 래치(투명)의 동작이고, 상승 에지에 맞춰 바뀌는 파형은 상승 에지 플립플롭의 동작이다
- 래치를 NOR·NAND 게이트로 만드는 법은 래치 문서에 있다