앞에서 말한 RS플립플롭은 S와 R이 동시에 활성화 될 경우에 문제가 있었다. 이러한 문제점을 해결하기 위해서 여러 종류의 플립플롭이 개발되기 시작했는데 그 중 하나가 D플립플롭이다.
기존의 RS플립플롭에서 S와 R이 동시에 활성화되는 것을 피하기 위해서 입력을 D로 하나로 단일화 시켰다. D와 연결된 한쪽에는 NOT게이트(인버터)를 연결하여 RS플립플롭에 0과 1로 들어갈 수 밖에 없게 만들었다. 위 그림에서 E를 클록과 pulse detector라고 하자.(줄여서 CP) 그럼 아래와 같이 진리표를 정리할 수 있다.
CP | D | Q | Q' | 기능 | |
---|---|---|---|---|---|
0 | X | 0 | 0 | 상태유지 | |
1 | 0 | 0 | 1 | Reset | |
1 | 1 | 1 | 0 | Set |
전에 RS플립플롭에서 CP가 0일 경우에 RS플립플롭이 작동하지 않았었다. 그러므로 CP가 0일 경우에는 상태유지가 된다. 그리고 CP가 1일 경우에만 작동하는데 D가 0일 경우 Reset으로 RS플립플롭에서 S가 0, R이 1이되는 경우와 같다. 반대로 D가 1일 경우에는 Set으로 RS플립플롭에서 S가 1, R이 0이 되는 경우와 같다.
D플립플롭 이외에도 JK플립플롭, T플립플롭이 있다. 간단하게 알아보자.
JK플립플롭은 RS플립플롭에서 R과 S가 모두 1일 경우에 토글이 작동하여 입력값 2개가 모두 1이되는 것을 막는 플립플롭이다. 여기서 토글은 어떤 상태를 반대로 전환하거나 스위치하는 동작을 말한다. 즉, JK플립플롭은 J와 K 2가지 입력값을 가지고 J와 K 모두 1이 입력될 경우 토글이 작동하여 J가 0으로 반전되어져 입력값 2개가 모두 1인 것을 피할 수 있다.
JK플립플롭에서 입력을 하나로 단일화하면 T플립플롭이다. T입력에 따라 토글이 작동한다. 이러한 특성은 특정 논리조건 또는 클록 신호에 따라 상태를 전환하고자 할 때 유용하다고 한다. 클럭 분할기, 카운터 등에 사용된다고 한다.
참고사이트 :
https://nate9389.tistory.com/922
https://ko.wikipedia.org/wiki/%ED%94%8C%EB%A6%BD%ED%94%8C%EB%A1%AD