순차회로
입력에만 의존했던 조합회로와는 달리
순차회로는 현재 입력과 입력들의 과거 값들의 순서에 의존합니다.
따라서 순차회로는 현재의 출력을 발생시키기 위해, 과거에 대한 무언가를 기억해야합니다.
이때 Latch(이하 래치)와 Flip-Flop(이하 플립플롭)이 기억소자로 사용됩니다.
래치와 플립플롭은 기억소자들로
1. 두 개의 안정된 출력 상태 중에 한 개를 가질 수 있으며
2. 출력 상태를 바꿀 수 있는 입력을 한 개 이상 가질 수 있습니다.
이때 클럭 입력이 없는 기억소자를 래치라고 부릅니다.
피드백
위와같이 게이트 출력중의 일부가 게이트의 다른 입력에 연결되어 폐회로를 만드는 경우, 피드백 회로라고 부릅니다.
저장장치는 피드백 회로의 지연시간으로 구현될 수 있습니다.
즉, 출력으로 나간 값이 다시 입력으로 들어와 값을 변경하기 전까지의 시간동안 출력은 변하지 않을것이고,
이를 값을 저장한다고 표현하는 것입니다.
하지만 피드백 회로는 앞서 설명한대로 폐회로이기 때문에 입력에 따라 값을 변경할 수 없습니다.
래치
래치는 비동기형 저장장치입니다.
클럭펄스가 존재하지 않고, 입력값이 바뀌는 순간 바로 출력이 바뀌게 됩니다.
SR 래치
SR 래치는 Set-Reset 래치라고 불립니다.
NOR 게이트 회로에 피드백을 도입하여 구성할 수있습니다.
아래 쪽 입력에 Set이 있다는 것을 확인해주세요.
SR 래치는 위 그림과 같이 구성되며, S랑 R입력에 따라 총 4개의 경우가 발생합니다.
1. $S=0, \ \ R = 0$ $\longrightarrow$ 기존의 입력 유지, 즉 값을 기억!!
이 경우 기존의 Q랑 P입력이 유지됩니다.
2. $S=1, \ \ R = 0$ $\longrightarrow$ Q의 값을 1로 만듦
이 경우 $Q=1, \ \ P=0$이 됩니다.
3. $S=0, \ \ R = 1$ $\longrightarrow$ Q의 값을 0으로 초기화
이 경우 $Q=0, \ \ P=1$이 됩니다.
4. $S=1, \ \ R = 1$ $\longrightarrow$ ??
이 경우 $Q=0, \ \ P=0$이 됩니다.
위 경우들을 잘 보면 $S=R=1$인 입력이 아닌 경우에는 Q와 P의 값이 서로 다르다는 것을 알 수 있습니다.
SR래치에서 Q와 P의 값은 항상 보수관계여야합니다.
이때 $S=R=1$인 입력은 SR래치에서 입력으로 주면 안되는 경우입니다.
S는 Set을 의미하며, R의 입력이 0인 상태에서 S의 입력을 1로 주면 Q의 값이 1이 되어야합니다.
R은 Reset을 의미하며, S의 입력이 0인 상태에서 R의 입력을 1로 주면 Q의 값이 0이 되어야합니다.
하지만 $S=R=1$인 입력이 들어오면
1. Q와 P의 값이 보수관계가 아니게 되며
2. 이후 입력에 대해 정해진 결과가 나오지 않게됩니다.
따라서 $S=R=1$인 입력은 SR래치에서 금지입니다.
추가적으로 NOR이 아닌 NAND로 게이트를 바꾸면, 위에서 정한 입력과 대응되는 출력의 관계가 반대로 뒤집힙니다.
따라서 NAND로 구현한 SR래치의 경우 $S=R=0$인 입력은 금지입니다.
게이트형 SR 래치
게이트형 SR 래치는 게이트 또는 활성립력이라 부르는 입력을 가지고 있습니다.
게이트 입력이 비활성화(입력이 0)되면, 래치 상태는 변하지 않습니다.
오직 게이트 입력이 활성화(입력이 1)된 경우, 래치는 입력 상태에 따라 변화하게 됩니다.
기존 SR래치와 다른점은 게이트 입력인 C입니다.
C가 0인경우 S와 R의 입력과 상관없이 $Q$와 $\bar {Q}$의 출력이 모두 1이 됩니다.
따라서 기존의 SR래치와 같이 사용하기 위해서는 C의 입력을 1로 주어야합니다.
D래치
D래치는 SR래치의 비결정 상태 즉, $S=R$인 경우를 배제한 래치입니다.
게이트형 SR래치에서 S, R 입력 대신 S에는 $D$ 입력을 R에는 $\bar {D}$입력을 줍니다.
래치의 투과성
순차회로에서는 다음과 같이 조합회로를 통하는 두가지 경로가 존재합니다.
1. 하나의 저장회로의 출력이 다른 저장회로의 입력이 되는 경우
2. 하나의 저장회로의 출력이 동일한 저장회로의 입력이 되는 경우
다음은 게이트형 D래치입니다.
게이트형 D래치는 G가 활성화된 기간 동안 입력 D가 지속적으로 출력에 반영됩니다.
래치는 그동안 입력의 변화에 따라 출력이 바로 바뀌는 성질이 있었습니다.
이를 그나마 잡아준 것이 게이트 입력이지만,
게이트 입력이 활성화된 동안에는 입력이 출력에 관여하는 상황이 발생합니다.
이를 입력신호를 투과시킨다고 하며, 래치의 투과성(Transparency)라고 부릅니다.
즉, 하나의 래치의 출력이 다른 래치의 출력 값에 즉시 영향을 줍니다.
이런 투과성이 어떤 문제가 있는지 와닿지 않기 때문에 한가지 문제를 통해 이해해보겠습니다.
타이밍 문제
앞서 피드백은 출력이 입력에 들어가 다시 출력을 변화시키기 전까지의 지연시간으로 값의 저장을 구현했다고 설명했습니다.
위 회로에서 게이트 입력(C)은 클럭 입력이기 때문에
클럭입력이 1이 되었다가 다시 0으로 떨어지는 시간동안 Q의 값은 1과 0중 어느값이 될지 모릅니다.
즉, 굉장히 빠른 주기로 $Q^+$가 바뀔수도 있고
$\rightarrow$ $Q^+$가 0일지 1일지 모릅니다.
생각만큼의 주기로 $Q^+$가 바뀔 수도 있으며,
$\rightarrow$ $Q^+$가 1이 되고나서 클럭이 0으로 바뀝니다. 즉, 원하던 상황입니다.
굉장히 느린 주기로 $Q^+$가 바뀔 수도 있습니다.
$\rightarrow$ $Q^+$가 1이 되기 전에 클럭이 0으로 바뀌기 때문에 값의 변화가 전혀 없을 수 있습니다.
원했던 동작은 클럭 한번에 상태 변화가 단 한번이 일어나야하는데
위와같은 상황에서는 클럭 한번에 상태 변화가 몇번이나 일어날지 예측할 수가 없게됩니다.
투과성 문제
예를 들어 3개의 래치(A, B, C)를 직렬로 연결하고, C의 출력은 다시 A로 들어가는 회로를 생각해보겠습니다.
원하는 동작은 클럭 한번에
1. A에 있던 값이 B로 이동하고
2. B에 있던 값이 C로 이동하고
3. C의 값은 다시 A로 들어간다고 하겠습니다.
이제 입력으로 $A=1, B=0, C=0$을 준 상태에서, 클럭 입력이 1에서 0으로 변하는 시간동안
A, B, C에 입력한 값들에 의한 상태변화가 래치 서로서로에게 계속해서 영향을 주게 됩니다.
즉, 래치는 입력이 바로 출력에 반영되기 때문에(즉, 투과성 때문에) 회로 설계에서 문제가 됩니다.
따라서 회로를 사용자가 원하는 대로 설계하기 위해서 투과성을 제거해야하며
출력이 클럭입력의 에지(클럭이 0에서 1로 또는 1에서 0으로 변하는 상황)에서만 변하도록 설계해야합니다.
이를 적용한 것이 플립플롭입니다.
'CS > 논리회로' 카테고리의 다른 글
[논리회로] 카운터 (0) | 2022.06.11 |
---|---|
[논리회로] 레지스터 (0) | 2022.06.10 |
[논리회로] 플립플롭 (0) | 2022.06.10 |
[논리회로] ROM과 PLA (0) | 2022.06.09 |
[논리회로] MUX와 디코더 (0) | 2022.06.09 |