플립플롭

 


1. 개요
2. 종류
2.1. SR 플립플롭
2.2. D 플립플롭
2.3. JK 플립플롭
2.4. T 플립플롭
3. 활용
4. 래치와의 차이점

'''Flip-Flop'''

1. 개요


순차 회로의 기본 요소로, 1비트의 정보를 보관 및 유지할 수 있는 회로이다. 전기 신호가 지속적으로 공급되어야만 정보를 유지할 수 있다. 플립플롭은 기본적으로 NOT 게이트 2개를 사용해서 피드백 루프를 돌리는 방식으로 구현한다.

2. 종류


작동 방식에 따라 4가지로 나뉘는데 SR, D, JK, T 타입이 있다. 그리고 스태틱한지 다이나믹한지로 분류할 수 있는데 $$\mathrm{C^{2}MOS }$$ flip flop, True single phase clocking D flip flop 등의 다이나믹 플립플롭들이 존재한다.

2.1. SR 플립플롭


논리식: Q+[1] = S + R'Q
입력 변수로는 S와 R 두 가지가 있으며, 각각을 Set, Reset이라고도 부른다. 클럭의 엣지[4]에서 S에 신호 1이 올 경우 다음 상태(next state, Q+)를 1로 세트하고, R에 신호 1이 오면 0으로 리셋한다. S = R = 0일 경우 현재 상태(present state, Q)를 그대로 다음 상태(Q+)에도 유지하지만 S와 R 둘 다 1일 경우는 설계 시 고려하지 않으므로 정의되지 않는다.[5] 이것이 SR 플립플롭의 한계점이며, 입력 S = R = 1 에 대한 출력을 정의하기 위해 만들어진 것이 바로 아래에 있는 JK 플립플롭이다. SR 플립플롭과 RS 플립플롭은 이론적으로 동일하지만, S=R=1인 경우의 S입력과 R입력 사이의 우선순위 차이로 둘을 구분하기도 한다.
S
R
Q+
0
0
Q
0
1
0
1
0
1
1
1
X[6]
[image]
SR 플립플롭은 SRAM의 기본이 되는 회로이다. 위의 그림은 SRAM 셀의 구조를 나타낸 것이며 최소 트랜지스터 4개를 사용해 구현 가능하다. 중간에 있는 NOT 게이트 두개로 피드백 루프를 돌려서 정보를 저장하며, 양쪽에 있는 트랜지스터 두개는 pass transistor logic으로 동작한다. 여기서 BL에 S를 넣어주고 BL bar에 R을 넣어준 후 WL에 클럭을 넣어주면 SR 플립플롭으로 동작한다는 점에서 SRAM 셀과 SR 플립플롭의 관계를 알 수 있다.

2.2. D 플립플롭


논리식: Q+ = D
SR 플립플롭의 특수한 형태로, 가장 간단한 플립플롭이다. 입력 변수는 D 하나이다. 클럭의 엣지에서 D에 0이 오면 다음 상태(Q+)도 0, 1이면 1이 되는 논리적으로 아주 간단한 회로이다. 즉 입력값과 같은 상태를 가진다.
[image]
마스터 슬레이브 D 플립플롭 회로의 예시. NOT 게이트를 사용해 루프를 돌려서 마스터와 슬레이브를 각각 만들어 준 후 신호가 통과하는 것을 클럭에 따라 적절히 막기 위해서 트랜스미션 게이트(Transmission gate)를 중간 중간에 배치한 구조다.

2.3. JK 플립플롭


논리식: Q+ = JQ' + K'Q
입력 변수가 J와 K 두 가지인 플립 플롭으로, SR 플립플롭의 확장된 버전이다. 기존의 SR 플립플롭에서 정의되지 않아 무관항으로 취급되던 11 입력에 토글(Toggle) 기능을 추가한 것이다. 네 종류의 플립 플롭 중에서 구조적으로 가장 복잡하지만 나머지 세 종류의 플립플롭의 기능을 모두 구현할 수 있으므로 가장 범용적이다. 나머지 00, 01, 10 입력은 SR 플립플롭과 동일하다.(입력 J는 기존의 S 역할을, K는 기존의 R역할을 한다.) 그러나 교과서에서나 배우지 지금은 실제 집적회로에서 거의 사용되지 않는 플립플롭이다.
J
K
Q+
0
0
Q
0
1
0
1
0
1
1
1
Q'

2.4. T 플립플롭


논리식: Q+ = T ⊕ Q = T'Q + TQ'
JK 플립플롭의 특수한 형태(J = K인 경우)이다. 입력 변수로 T 하나만을 가지며, Toggle이라고도 읽는다. ( On ↔ Off ) 버튼처럼, 클럭의 엣지에서 T가 0이면 현재 상태(Q)의 값을 유지하고, T가 1이 되면 다음 상태(Q+)의 값이 현재 상태(Q)의 값의 정반대가 된다. JK 플립플롭을 변형시켜 토글 기능만 사용하도록 [7] 만들어서 구현하거나, D 플립플롭을 변형시켜 구현할 수 있다. [8]
마인크래프트에서도 만들수 있다.

3. 활용


거의 모든 순차 회로에서 활용된다고 볼 수 있다. 특히 저장소로써의 기능은 캐시 메모리에 많이 쓰인다.

4. 래치와의 차이점


기본적으로 래치나 플립 플롭은 종류가 똑같으며 작동 방식도 유사하지만 클럭의 이용에 있어 차이를 보인다.
래치는 클럭이 아예 없거나 클럭의 레벨을 감지[9]해서 동작하고, 플립 플롭은 클럭의 엣지에서 트리거되어 동작한다.[10]

[1] Q(t+1)이라고도 함. 다음 상태(next state)를 뜻한다.[2] 'positive going edge'라고도 한다.[3] 'negative going edge'라고도 한다.[4] '0' →'1' 로 변하는 순간의 '상승엣지 트리거' rising edge[2] 와 '1' → '0' 로 변하는 순간의 '하강엣지 트리거' falling edge[3]) 가 있다.[5] SR 래치에 클럭 펄스(CP)와 (N)AND 게이트를 첨가한 형태이다. [6] undefined[7] 입력 J와 K를 입력 T로 통합하는 형태[8] 출력 Q를 피드백하여 XOR 게이트를 입력 T와 함께 통과시켜 다시 입력 D에 넣는 형태[9] 이를 level-sensitive라고 한다.[10] 이를 edge-sensitive라고 한다.