본문 바로가기
전공 관련/논리회로설계

6. Sequential Logic

by 현댕5697 2020. 12. 1.
반응형

Sequential Circuit

sequential circuit이란 피드백이 가능한 회로를 말한다.

즉, output이 input과 예전의 input, output에 영향을 받는 것이다.

그래서 값들을 저장하기 위해 회로 안에 메모리가 포함되어 있다. 

 

예를 들면 도어락 회로를 구성할 때 비밀번호가 4자리인 경우, 문이 열릴려면 4자리가 모두 맞아야 한다.

그래서 2번째 자리 번호가 맞았는지 output를 출력하기 위해서는 첫번째 자리 번호까지도 확인해야 한다.

이전의 output이 현재 output에 영향을 미치는 것이다.

 

무한히 피드백이 이루어지지 않게하기 위해서 우리는 이 피드백을 멈출 수 있어야 한다.

그렇다면, 어떻게 피드백을 제어할 수 있을까?

 

 

2개의 inverter로 이루어진 static memory cell 구조

 

이 그림에서 하단 와이어의 값은 0으로, 상단 와이어의 값은 1로 유지될 것이다. 아니면 반대의 경우도 가능하다.

전원이 공급되는 한 지속적으로 값이 유지될 것이다. 즉, 1이라는 값은 stored value라고 할 수 있다.

이 경우가 무한하게 피드백이 계속되는 경우라고 할 수 있겠다.

 

이 그림을 보자. 위의 그림에서 스위치가 추가되었다. 

우리는 스위치를 통해 피드백 경로를 제어할 수 있다. 

만약 좌측 스위치가 연결되고, 우측 스위치가 끊어진다면 데이터(input)는 바로 output으로 보내는 load를 수행할 것이다. 

좌측 스위치가 끊어지고, 우측 스위치가 연결된다면 데이터는 지속적으로 루프를 돌면서 값이 유지될 것이다. 다시 말해 데이터가 store되는 것이다.

 

cross-coupled NOR gate

 

cross-coupled NOR gate는 다른 말로 R-S latch(=flip-flop)라고도 한다.

여기서 우리는 Q값을 중요시 보면 되는데, P는 Q'이라고 생각하면 된다.

S(set)가 1이 되면 Q값은 1이 되고, R(reset)이 1이 되면 Q값은 0이 된다.

이 그림에서 S, R의 값이 (1,1)이었다가 (0,0)으로 바뀌면 race condition이 발생한다.

R, S의 값이 동시에 1인 경우는 매우 관측하기 힘든데, 보통 하나가 먼저 값이 바뀌기 때문이다.

 

 

이러한 R-S latch는 여러 문제점이 있다. 

1. input에 noise가 발생하면, 그것이 바로 output에 반영되버린다.

2. invalid input가 존재한다.

3. race condition이 발생할 가능성이 있다.

 

 

그렇기 때문에 안전하게 데이터를 저장할 수 있는 구조가 필요하다!

이를 위해 만들어진 것이 gated R-S latch이다.

gated R-S latch는 제어시그널이 존재하고, 이를 통해 input값이 안정적일 때만 반영할 수 있도록 할 수 있다.

 

gated R-S latch

EN' = 1이라면 데이터를 hold하고, EN' = 0인 상태라면 input 값을 output에 반영한다.

 

 

그렇다면 이 EN 시그널을 어떻게 공급받을 것인가가 고민 될 것이다. 

그래서 우리는 clock 시그널로 부터 EN 신호를 공급받는다.

clock 시그널은 주기적인 신호를 가지고 있다. clock' = 1일 때 R, S값이 바뀌고, clock' = 0일 때 R, S값을 바꿀 수 없으므로, 안정한 상태의 input을 얻을 수 있다.

 


 

여기서 더 나아가 clock이 1->0, 0->1로 바뀌는 시점을 인지하고 싶다면?

그래서 나온 것이 master slave flip-flop이다.

 

 

 

Master-Slave 구조

master-slave flip-flop

 

이 구조에서는 clock이 1일 때 latch inputs(J, K)가 Master latch로 들어간다.

clock이 0일 때 바뀐 output이 Slave latch로 들어간다.

즉, clock이 1->0으로 바뀌는 시점에서 약간의 게이트 지연시간 후에 output이 바뀌고 Slave latch로 전달되지만, clock이 0이면 Slave latch에서 데이터를 hold하고 있는 상태이기 때문에 Slave latch의 output이 바로 바뀌지 않는다.

 

 

그렇지만 이 구조에서도 문제점은 있다....!

0->1->0으로 바뀌는 noise에 대해서 이것을 정상적인 input이라고 인식하는 문제이다.

이를 1s catching problem이라고 한다.

이 그림에서 set으로 되어 있는 부분이 noise가 발생한 부분이다.

이 때 CLK가 high인 상태이기 때문에 catch가 되어 master output P에 반영이 되어 버린다.

 

 

그러면 또 고민이 된다. 1s catching problem을 어떻게 없앨 수 있을까.

그 해답은 바로 D flip-flop 구조를 사용하는 것이다.

이 구조는 1s catching problem을 없앨 수 있다.

 

 

master-slave 구조와 차이점은 d 시그널이 추가가 되었다는 것이다.

d 시그널의 목적은 R, S값이 동시에 0이 되거나 1이 되는 것을 방지한다.

그러니 1s catching problem이 발생할 수 없다.

d flip-flop에서 input은 D이고, output은 Q이다.

 

 


 

 

master-slave 구조같은 경우 9개의 gates가 필요할 것이다.

gate는 적게 사용하면서 같은 장점을 가지는 회로를 생각해보다 나온 것이 바로 edge triggered flip-flop이다.

 

edge triggered flip-flop

 

이 구조에서 clock = 1일 때 Data 값을 반영하고, clock = 0이라면 기존의 Data 값을 hold하고 있다.

즉, 이 구조는 positive edge-triggered flip-flop으로, clock이 0 -> 1로 갈 때 input이 catch되어 output에 반영된다.

negative edge-triggered flip-flop의 경우, clock이 1 -> 0으로 갈 때 input이 catch되어 output에 반영된다.

 

 

그래서 기존의 R-S latch와 positive edge-triggered flip-flop을 비교해 보면 다음과 같다.

CLK가 high가 되었을 때 D값이 high 이므로, Qedge, Qlatch모두 이 값을 반영한다.

그런데 CLK가 high인 상태에서 D의 값이 low가 되었을 때 Qedge는 이를 반영하지 않고 기존 값 high를 유지하는 반면, Qlatch의 경우 이것을 바로 반영하여 low가 된다.

Qedge의 경우 다음 CLK가 high인 구간에서 D값이 처음 low인 것을 감지하고 low를 반영한다.

 

R-S latch와 positive edge-triggered flip-flop을 비교

 

 

그렇다면 이러한 flip-flop을 어디에 사용할까?

대표적인 예로는 counter와 shift register가 있다.

 

universal shift register
universal shift register의 구조

 

universal shift register은 한번에 여러 개의 input, output을 얻을 수 있고, shift 방향이 왼쪽, 오른쪽 모두 가능하다.

또한, shift할 때 새로운 값을 받아올 것인지, 아니면 기존의 값을 받아올 것인지도 선택 가능하다.

s0, s1에 의해 이것을 결정할 수 있는데, (s0,s1)이 (0,0)인 경우 값을 유지하고, (0,1)인 경우 shift-right, (1,0)인 경우 shift-left, (1,1)인 경우 새로운 input을 load한다.

 

반응형

'전공 관련 > 논리회로설계' 카테고리의 다른 글

8. FSM Optimization  (0) 2020.12.05
7. FSM(유한 상태 기계)  (2) 2020.12.05

댓글