[Digital Logic] Difference between Mealy Machine and Moore Machine
Digital logic을 설계하는데 있어서 state machine 사용은 필수적이다. 구현 방식에는 크게 두 가지 종류가 존재한다.
- Mealy machine
- Moore machine
1. Mealy Machine
Mealy machine은 현재 state와 input change에 의존하여 state가 변하는 구조다. 따라서 현재 state만 보고 next state를 반영하는게 아니기 때문에 구현 측면에서 Moore machine에 비해 더 복잡하며, asynchronous output이 생길 수 있다. 그리고 우리가 도출하고자 하는 output은 state가 아닌 transition에 함께 나오게 된다.
물론 design에 따라 필요에 따라 그때그때 사용해야 겠지만, 개인적으론 고려해야할 점이 많아서 꺼려지는 것 같다. 특징은 다음과 같다.
- Output은 현재 input과 현재 state에 따라 바뀐다.
- 만약 input이 변하면 output 또한 변한다.
- State의 수가 Moore machine에 비해 상대적으로 적게 필요하다.
- Circuit implementation에서 더 많은 hardware가 필요하다.
- Input에 대해 반응이 빠르다.
- Asynchronous output이 생성된다.
- Output은 transition time에 나타난다.
- Design이 어렵다.
2. Moore Machine
Mealy machine과 다르게 현재 state를 보고 output이 나타난다. Mealy machine보다 상대적으로 design을 할 때 더 넓게 사용되는 것으로 체감된다. 특징은 다음과 같다.
- Output은 오직 현재 state에 따라 바뀐다.
- 만약 input이 변하면 output도 변할 수 있다.
- 더 많은 수의 state가 필요하다.
- Circuit implementation 측면에서 Mealy machine에 비해 hardware cost가 적다.
- Input에 대해 반응이 느리다. (최소 1 cycle 후)
- Synchronous output, state가 생성된다.
- Output은 state에 나타난다.
- Design이 쉽다.
Reference
- https://www.geeksforgeeks.org/difference-between-mealy-machine-and-moore-machine/