이번 포스팅에서는 Moore & Mealy Machine에 대해 알아보고 두 회로의 차이점이 무엇인지 알아보겠습니다.
아래 두 회로의 차이점은 무엇일까요?
왼쪽 회로는 output인 y가 입력 x와 state A, B에 모두 dependent하고 오른쪽 회로는 output y가 state에만 dependent하게 결정이 됩니다. 즉 왼쪽 회로는 input과 state로 output이 결정되고 오른쪽 회로는 state로 output이 결정되는 회로입니다.
두 회로는 State Diagram를 보면 큰 차이가 있다는 것을 확인할 수 있습니다. 이렇게 우리는 두 회로를 다른 type의 Machine로 정의하여 분류하려고 합니다.
"10" Sequence Detector을 생각해보겠습니다. 위 회로는 x가 "10"이 연속적으로 들어올때 output 으로 1을 출력하는 "10" Sequence Detector입니다. 우리는 이 회로를 Combinational Logic으로 구현할 수 있을까요?
위 회로는 과거에 들어온 input 값도 필요하기 때문에 Sequentail Logic을 사용해 회로를 설계해야 할 것입니다. 이렇게 **유한한 숫자의 state를 정의하고 이에 따라 동작하는 회로를 Finite state machine(FSM)**입니다.
"10" Sequence Detector에 대한 State Diagram을 그려보면 위와 같습니다. 이때 왼쪽과 같이 State에 의해 Output이 정해지는 State = Output인 회로를 Moore Machine, 오른쪽과 같이 State와 input에 의해 Output이 정해지는 회로를 Mealy Machine라고 합니다.
위 State Diagram에서 Moore Machine은 state가 3개이고 Mealy Machine은 state가 2개이므로 Mealy Machine을 구현하는데 사용되는 Flip Flop의 갯수가 더 적습니다. 따라서 Area가 줄어들고 더 좋은 회로가 아닐까요? 지금부터 천천히 알아보겠습니다.
위 사진을 보면 알 수 있듯이 Mealy Machine은 input과 state가 output을 결정하고 Moore Machine은 state로 output이 결정되는 회로입니다.
Flip Flop에 저장된 State는 Clock의 rising 혹은 falling 엣지에서만 update 됩니다. Moore Machine은 State가 output을 결정하기 때문에 Clock 엣지에서만 output이 바뀌게 됩니다. 하지만 Mealy Machine은 input이 변하면 output이 바뀌게 됩니다. 즉 Mealy Machine은 output이 clock과 상관없이 input이 변하면 바뀌게 됩니다.