* Sequential Logic
- 현재 들어온 Input과 이전에 들어온 Input 값의 조합으로 Output이 결정된다.
- 이전 값을 저정할 메모리가 필요하다.
- State Variable
> State : 미래에 회로가 갖을 값에 대한 정보를 State라고 한다.
> 이 State의 집합을 state variable라고 한다.
* Laches And Flip-Flops
- 단일로(1bit)의 State를 저장하는 요소들
- Memory Building : 안정된 상태를 갖는 2개의 요소로 값을 저장한다.
- N개의 안정된 상태를 갖는 요소는 logN bit의 state variable이 필요하다.
ⓐ Bistable Circuit(양안정 회로)
1) Q = 1
> I1은 0이 된다는 것이다. 회로를 순회하여 다시 I1에 도착해도 I1은 0이다.
(이런 경우를 안정됬다고 한다.)
2) Q = 0
> 1)의 경우와 같이 순환해도 같은 값을 갖는 안정된 상태이다.
3) Q = ?
> 이 경우는 전압이 0과 1사이의 중간에 위치하여(전압 변화중, clock edge) 결과 값을 예측할 수 없다.
(metastable(준안정)상태라고 한다.)
※ 위의 예에서 하나를 알면 다른 한 쪽도 알 수 있다.
Q = 0 이면, inverse Q = 1 또는 Q = 1이면, inverse Q = 0이 된다.
State variable로 Q하나만 존재하면 가능하다.
ⓑ SR Latch
- 2개의 NOR 게이트의 쌍으로 구성
- 2개의 input, S(set, Output state 값을 1로 만듬)과 R(reset, Output state 값을 0으로 만듬)을 갖는다.
- SR Latch는 가장 최근에 회로가 Reset됐는지, Set됐는지를 판단하는 역할을 한다.
ⓒ D Latch(= transparent latch, level-sensitive latch)
- SR latch의 문제점 보안
> S와 R이 동시에 활성될 가능성이 존재한다.
> 어떤 값(what)이 언제(when) 들어갈지를 정할 수 없다.
- 2개의 Input, CLK(clock, 언제 회로를 넘길 것인가를 결정)와 D(data, 어떤 값을 활성 시킬 것인가)을 가지며,
2개의 output은 SR Latch의 S와 R로 연결된다.
- 2개의 AND gate와 1개의 Inverter를 가지며, 다음과 같다.
- CLK의 상태에 따라 D의 값을 그대로 통과시켜주는 투명한(transparent)상태와
D의 이동을 단절하는 불투명한(opaque)상태로 변한다.
(특정 시간에만 값을 전달 할 수 있게 됐다.)
- CLK가 1일 때만 Data Copy가 일어난다.
ⓓ D Flip-Flop
- 2개의 D Latch와 1개의 inverter로 구성, 각각의 latch를 Master와 slave로 부른다.
- clock의 상태에 따라 master가 투명한 상태, slave가 불투명한 상태가 된다. 이 역도 성립한다.
- CLK이 0에서 1로 상승 엣지인 상태에서만 Data를 Q로 Copy해준다.
※ D latch vs D Flip-Flop
> D-latch는 CLK가 1일때 D값을 따라 움직이는 것을 알 수 있다.(파란 네무 구간)
> D-FlipFlop은 CLK이 상승하는 구간(0>1)에서만 D값을 반영 하는 것을 알 수 있다.(검정선)
ⓔ Register
- CLK입력을 공유하는 N개의 Flip-Flop의 묶음
- CLK의 값에 의해 모든 값이 함께 갱신된다.
ⓕ Enable Flip-Flop(활성화된 Flip Flop)
- Clock과 ENABLE의 AND게이트 연결이나 ENABLE값에 의한 Mux를 구현하여 switch역할을 한다.
- 1차적으로 ENABLE이 1일때 D값이 넘어가는데, 2차적으로 CLK가 상승 엣지상태에 있어야지 D값이 Q로간다.
ⓖ Resettable / settable Flip-flop
- Reset의 중요성 : 전원을 켰을때 Flip-Flop에 어떤 값이 들어갈지 모른다.
이를 하나의 값인 0으로 리셋하고 시작한다.
- Synchronously, Asynchronously한 방법으로 초기화가 가능하다.
> Synchronously 방법 : D값과 inverse RESET값을 AND게이트로 연결하여 활성화여부를 결정하게 한다.
※ inverse RESET : active low신호로 0일 때 RESET기능을 수행한다.
※ settable : reset의 반대. and -> or
* 동기식 논리회로(Synchronous Sequential Circuit)
- 순차회로는 원치 않는 경쟁 또는 불안전한 동작을 갖는다.
이는 에러를 방생시키기도 하며 이를 분석하는 것은 매우 힘들다.
- 순차회로에 register를 넣는 것으로 이런 순환적 문제를 방지한다.
> register가 들어갔다는 것은 CLK edge(0>1)상태에서만 전달이 발생하다는 것이다.
- 동기식 순차회로의 성질
ⓐ Every circuit element is either a register or combinational circuit
> 모든 회로요소는 레지스터 이거나 조합회로이다.
ⓑ At least one circuit element is Register
> 적어도 하나의 회로 요소는 레지스터이다.
※ ⓐ,ⓑ 레지스터 자체에 순환적 요소가 있는 것을 생각하자!
ⓒ All registers receive the same clock signal
> 모든 레지스터는 하나의 CLK로 부터 값을 받는다.
(이 값들은 동식에 적용되야 하므로, 어떠한 지연도 있어서는 안된다.)
ⓓ Every cyclic path contains at least one register
> 모든 순환경로에는 적어도 하나의 register와 연결되어야 한다.