프로그래밍[Univ]/하드웨어

[하드웨어] Finite State Machine

Cloud Travel 2012. 4. 4. 19:31

* 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을 종류별(역할별)로 나눈 후 그 결과를 한 곳에 합쳐 줌으로써 단순화가 일어난다.