플립플롭
플립플롭(이후 FF)은 단일클럭을 사용하는 순차회로에서 정확히 동작하도록 설계된 저장회로입니다.
FF의 특성은 다음과 같습니다.
1. FF에서 출력이 변경되기 전에 입력에서 출력으로 가는 경로를 끊어줍니다.
2. FF은 자신의 출력 변화를 볼 수 없습니다.
3. FF의 다음 상태는 바로 직전 상태에만 의존합니다.(즉, 다수의 상태 변경이 일어나지 않습니다.)
앞으로 설명하는 모든 FF은 에지-트리거형 FF입니다.
클럭 입력의 상승이나 하강 에지에서만 변경되기 때문에 사실 에지-트리거형이라고 묶어놓는 것은 의미가 없습니다.
다만 상승 에지-트리거냐 하강 에지-트리거냐가 중요합니다.
D-FF
D-FF은 데이터 D와 클럭 Ck 두개의 입력을 갖습니다.
심볼의 삼각형 모양이 클럭 모양입니다.
출력이 클럭신호가 0에서 1로 상승할 때 반영되면 $\longrightarrow$ 상승에지 트리거형,
1에서 0으로 하강할 때 반영되면 $\longrightarrow$ 하강에지 트리거형 D-FF입니다.
또한 D-FF의 다음 Q출력은 입력 D와 같습니다.
타이밍도를 보면 하강 에지일때 D의 입력이 Q에 바로 반영되는 것이 아니라
조금의 간격을 두고 Q의 출력이 변화하는 것을 볼 수 있습니다.
이는 FF내부에서 출력이 변화할때까지 걸리는 시간입니다.
타이밍도에서 눈여겨 봐야할 곳은 하강 에지일때만 D의 입력이 Q에 반영된다는 것입니다.
하강 에지-트리거형 D-FF은 두개의 게이트형 래치를 사용합니다.
이때 왼쪽에 있는 게이트형 D래치는 Master, 오른쪽에 있는 게이트형 SR래치는 Slave라고 부르며
이러한 구성을 마스터-슬레이브 형태라고 부릅니다.
이제 동작이 어떻게 이루어지는지 분석해보겠습니다.
게이트형 D입력에 대해 C가 활성화 되어있으면 게이트형 D래치의 Q에 반영이되지만
게이트형 SR래치의 C입력은 비활성화 되어있어 최종적인 출력에는 영향이 가지 않습니다.
반면 C가 비활성화 되면, 먼저 D래치가 비활성화 되지만 D래치의 Q출력은 이미 SR래치에 반영되는 중입니다.
SR래치의 게이트 입력이 1로 바뀔때까지 조금의 시간이 걸리게 되고(Ck입력이 NOT게이트를 지나면서 시간지연)
최종적으로 SR래치의 게이트가 활성화되는 순간
D에 입력되었던 값이 SR래치로 넘어가 최종 출력이 바뀌게 됩니다.
위 예시는 하강 에지 트리거임을 알 수 있습니다.
상승 에지-트리거형은 클럭 입력으로 들어가는 NOT게이트가 Master에 해당하는 래치의 클럭 입력이 되면 됩니다.
진리표에 따라 얻은 특성식은 다음과 같습니다.
$Q^{+} = D$
SR-FF
잘 보면 S, R입력이 바로 들어가지 않고, AND 게이트를 통해 클럭 입력으로 제어하고 있음을 알 수 있습니다.
$S$ | $R$ | $Q$ | $Q^{+}$ |
0 | 0 | 0 | 0 |
0 | 0 | 1 | 1 |
0 | 1 | 0 | 0 |
0 | 1 | 1 | 0 |
1 | 0 | 0 | 1 |
1 | 0 | 1 | 1 |
1 | 1 | 0 | x |
1 | 1 | 1 | x |
SR-FF의 진리표
SR-FF도 SR래치와 같이 $S=R=1$인 경우는 금지합니다.
진리표에 따라 얻은 특성식은 다음과 같습니다.
$Q^{+} = S + R'Q$
JK-FF
JK-FF은 J입력이 Set, K입력이 Reset을 의미합니다.
여기만 봐서는 SR-FF과 다를바가 없어보이지만, JK-FF은 $J=K=1$인 경우 출력이 Toggle됩니다.
즉, 출력이 0이었다면 1로 바뀌고 1이었다면 0으로 바뀌게 됩니다.
구성을 보면, $Q$의 출력이 K와 AND 게이트로 묶여있고, $\bar {Q}$의 출력이 J의 입력과 묶여있다는 것을 볼 수 있습니다.
따라서 $J=K=1$인 경우 값이 Toggle되는 것을 알 수 있습니다.
진리표에 따라 얻은 JK-FF의 특성식은 다음과 같습니다.
$Q^{+} = JQ' + K'Q$
T-FF
T-FF은 T입력으로 1이 들어오면 값을 Toggle시키고, 0이면 값의 변경이 없는 FF입니다.
위 진리표에 따라 얻은 $Q^{+}$의 특성식은 다음과 같습니다.
$Q^{+} = T'Q + TQ' = T \oplus Q$
'CS > 논리회로' 카테고리의 다른 글
[논리회로] 카운터 (0) | 2022.06.11 |
---|---|
[논리회로] 레지스터 (0) | 2022.06.10 |
[논리회로] 래치와 투과성 문제 (0) | 2022.06.10 |
[논리회로] ROM과 PLA (0) | 2022.06.09 |
[논리회로] MUX와 디코더 (0) | 2022.06.09 |