입력 뿐만 아니라 이전의 입력에도 영향을 받아서 출력한다.
따라서, 상태(state)를 기억할 수 있다 !
다음은 sequential circuit의 기본 형식이다.
⭐ 참고로, D-FF 1개 당 2개의 상태를 표현할 수 있다.
3-input 일 때, binary encoding 으로 A=00, B=01, C=10 설정하면 D-FF 가 2개 필요하다.
one hot encoding 으로 A=001, B=010, C=100 설정하면 D-FF가 3개 필요하다.
따라서, 필요한 state를 알아내고, 그 state의 encoding을 결정해서 거기에 필요한 D-FF 개수를 확인해서 Flip-flops 부분을 대체한다.
FF가 가지고 있는 값을 Present State (p.s) 로 표현하고, 이 p.s 와 외부입력 값을 참조해서 Next State (n.s) 를 표현한다.
combination logic에서 이 n.s 를 출력해서 FF로 바로 보내버린다. FF의 내부 구조를 보면 이미 n.s 가 FF의 master 에 들어가있을 것이다.
하지만, c의 rising edge 때만 slave 에 전달되므로 p.s 는 c의 rising edge에 동기화 돼서 n.s 를 잘 받아먹을 것이다.
❗ 그런데 이때, p.s 가 업데이트해서 나가야하는데 n.s에서 받아온 값으로 p.s 값이 변해버린다면?
-> 'i=i+1' 과 같은 현상이 일어나는데 정밀하게 타이밍을 재서 구현한다면 괜찮다.
마지막으로 output combinational circuit 에는 f(p.s, w) 가 들어간다. 여기서 외부입력 w 는 옵션이다.