* Finite State Machine(FSM)
- State register와 2개의 Combinational logic으로 이루어져 있다.
> State register : 현재의 상태를 저장하고, 다음 상태를 불러온다.
> Combinational logic : 다음 상태를 계산하고, 출력을 계산한다.
: input을 이용해 next state 계산 // current state를 이용하여 output 계산
- Input과 Output과 state는 별개의 것이다.
- 다음 상태는 현재상태와 입력들에 의해서 결정되며, 두 가지 형태의 FSM이 존재한다.
ⓐ Moore FSM : 오직 현재의 상태에만 의존하여 결과 값이 도출된다.
ⓑ Mealy FSM : 현재의 결과값과 입력값의 조합으로 결과 값이 도출된다.
* FSM state Transition diagram
- 시스템의 모든 가능한 상태와 이러한 상태들 간의 상태 변화를 나타내는 다이어 그램
- 원과 화살표로 이루어져 있다.
> 원(circles) : 상태
> 화살표(arcs) : 변화
- 어떠한 상태에서 나가는 화살표가 하나 밖에 없다면 클럭 에지시 반드시 변화가 발생한다.
* 센서를 이용하여 신호등을 제어하는 FSM을 만들어라.
Q. Sensor Ta와 Tb를 이용하여 각각의 센서에서 차가 없는 것이 감지되면 다른 신호등을 켜준다.
ⓐ 문제 이해를 해라! Input과 Output을 명확히 생각해라.
Input : Ta, Tb (sensor) // Output : La, Lb(2길에 존재하는 신호등)
ⓑ 전체적 Circuit을 생성해라.
ⓒ State Transition Diagram을 그려라(이 과정이 잘못되면 모든 것이 틀려진다.)
※ CLK은 외부 컨트롤에 작동되는 것이 아니기 때문에 생략가능하다.
ⓓ State Transition Table을 작성한다.
> Current state - Output과 current state - Next state라는 두 개 과정에 대해서 작성해야 한다.
ⓔ SOP형태로 식을 정리해준다.
ⓕ FSM을 그려준다.
Register를 먼저 그려준후 SOP에서 Current State - Next state회로와 Current State - Output회로를
각각 그려준다.
* State Encodings
ⓐ Binary encoding : 우리가 알고 있는 2진 법칙으로 하나의 비트가 2개의 상태를 나타냄
ex) 4개의 상태를 나타내기 위한 Binary encoding : 2bit을 사용하면된다.
00 01 10 11
ⓑ One-hot encoding : 하나의 상태 비트가 하나의 상태만을 나타냄. 하나의 상태만 1
이로인해 더 많은 flip-flop이 필요하다.
ex) 4개의 상태를 나타내기 위한 One-hot encoding : 4bit을 사용해야 한다.
0001 0010 0100 1000
- 어떤 것을 선택하느냐에 따라서 FSM의 단순함이 달라 질 수 있다.
- 두개의 회로의 가격을 비교해서 정하게 된다.
※ One-cold encoding : one-hot과 반대로 하나의 상태만 0을 같는다.
ex) 4개의 상태를 나타내기 위한 One-cold encoding : 4bit를 사용해야 한다.
1110 1101 1011 0111
* Mealy Machine
- Mealy Machine은 Moore Machine과 다르게 Output을 결정하는데 Input도 관여한다.
- Mealy Machine과 Moore Machine을 만드는 과정은 동일하되, 단 한가지 State Diagram을 만드는 것이 다르다.
> State Diagram을 만들때 Transition에 Input뿐만아니라 Output까지 포함해서 작성해준다.
* Factoring State Machine
- FSM을 TASK단위로 나눠서 간단하게 한다.
- Input을 종류별(역할별)로 나눈 후 그 결과를 한 곳에 합쳐 줌으로써 단순화가 일어난다.