본문 바로가기
정보글

R-S flip-flop의 1's catching problem과 D flip-flop과 J-K flip-flop의 특징

by 행복한 왕밤꿀벌 2023. 6. 11.
반응형

 

 

Logic design에서 회로를 구성할 때 여러 Flip-Flop을 통해서 input에 대한 output 값을 저장한다. 그 중, R-S Flip-Flop과 D Flip-Flop에 특징과 특징에 따라 발생할 수 있는 문제에 대해서 정리해보았다. 

 

 

<R-S flip-flop의 특징>

R-S flip-flop은 2개 input인 set과 reset을 받아 output으로 Q를 내보낸다. Q'도 생성되는데 이는 Q와 함께 input 부분에 feedback loop으로 전달되어 output 값이 일정한 값으로 유지, 즉 Q값이 input에 대한 값으로 저장되게끔 한. R-S flip-flop은 이전 state를 저장해 hold((R, S) = (0, 0) case)할 수 있다는 특징이 있다. 

 

 

Output은 (R, S)에 값이 (0, 1)이면 set = 1이라 Q=1, (1, 0)이면 reset = 1이라 Q = 0, (0, 0)이면 이전에 Q에 저장된 값을 hold, (1, 1)은 오류값이므로 Q는 unstable이 된다. (R, S) = (1, 1)이란 뜻은 reset과 set이 모두 1이란 뜻으로 그렇게 되면 Q가 0으로 reset됨과 동시에 1로 set되어야 해서 오류 input 값이다. 그러나 실제로는 모종으로 오류로 이런 input이 들어올 수 있고 이런 경우, output Q와 Q'이 모두 0이 되며 추후 들어오는 input에 따라 feedback에 의해서 oscillation이 일어나게 된다.

 

<R-S flip-flop의 문제점>

R-S flip-flop의 문제는 S = 1 그리고 R = 1 인 이상한 input이 들어오고 나서 다음 input으로 S = 0과 R = 0이 오면 Q에 oscillation이 발생하는 점이다. flip-flop은 clock을 또다른 input으로 받아 synchronization이 일어나는데 clock의 rising edge에서만 input R과 S를 받는다. 즉, 이전 clock의 rising edge에서는 S = 1과 R = 1이 들어오고 다음 rising edge에서 S = 0과 R = 0이 들어오면 oscillation 문제가 발생한다. Rising edge의 짧은 시간에 S =1, S=1인 input이 수정되지 못하고 다음 input이 R과 S 모두 0인 케이스이므로 발생할 가능성은 낮지만 문제를 일으킬 수 있다.

 

 

또한, clockrising edge에서만 input을 받기 때문에 이 시점에 stable한 input이 아닌 glitch가 일어나면 원래 의도와는 다른 값이 output으로 나가는 1’s catching problem이 발생한다. 1's catching problem은  clock0에서 1로 바뀌는 순간 (R, S) = (0, 0) state glitch가 발생해서 (R, S) = (1, 0) state나 (R, S) = (0, 1) state이 되면 일어난다. (R, S) = (0, 0) state은 Q가 이전 값을 hold하길 기대하는데 glitch에 의해서 Q가 바뀔 가능성이 생겼기 때문이다. 

 

 

<D flip-flop의 특징>

1’s catching problem을 해결한 flip-flop이 바로 D flip-flop이다. Reset과 set input을 따로 받는 대신 D input 하나로 reset과 set을 해주는 방식이다. R-S flip-flop의 set input으로  D, reset input으로는 ~D를 주는데 이 방식으로는 D 값에 따라 가능한 input이 (1, 0) 또는 (0, 1)만 가능해진다. 때문에 (0, 0) 상태가 없게 되어서 glitch로 인해 오류가 있는 output이 저장될 위험이 사라진다. D flip-flop은 1’s catching problem이 없다는 강점이 있고 R-S flip-flop과 같이 Q Q’을 저장하여 내보낸다.

 

 

그러나 D flip-flop은 (0, 0) input일 때의 operation인 hold를 하는 것이 불가능하다. D flip-flop 만으로는 불가능하지만 외부 회로를 통해서 새로운 D값을 받을지, 이전 D 값을 다시 받을지를 선택하는 mux를 넣어주면 hold를 가진 것처럼 구현할 수 있다. 

 

 

 

 

<J-K flip-flop 특징>

J-K flip-flop은 S와 R이 모두 1인 오류 input이 왔을 때  output인 Q가 값 0으로 ~Q와 같아지는 문제로 생기는 oscillation을 해결한 flipflop이다. (S, R) = (1, 1)일 때 output으로 모두 0을 내보내지 않고 이전 저장값에 NOT 처리를 하여 저장하도록 구현되었다. 때문에 Q와 ~Q가 같아지는 문제가 발생하지 않는다. 바로 다음에 (S, R) = (0, 0)이 오더라도 오류 없이 현재 저장하고 있는 Q값을 hold할 수 있게 된다. Input의 개수는 J와 K의 2개이고 다른 flipflop과 마찬가지로 outputQQ’이다.

반응형

댓글


"); wcs_do();