밀리형과 무어형 상태 기계의 차이: 출력·타이밍·상태 수·HDL 작성법 비교
상태 기계(스테이트 머신)는 현재 상태를 기억하는 레지스터, 다음 상태를 정하는 조합 회로, 출력을 정하는 조합 회로로 이루어집니다. 밀리형과 무어형의 차이는 출력이 무엇으로 정해지느냐입니다. 밀리형에서는 출력이 현재 상태와 현재 입력 양쪽으로 정해지며, 입력의 변화가 같은 사이클 안에 출력에 나타납니다. 무어형에서는 출력이 현재 상태만으로 정해지며, 입력의 변화는 클럭으로 상태가 바뀐 뒤에 출력에 나타나므로 반응이 1사이클 늦습니다. 밀리형은 상태가 적고 반응이 빠르다는 점, 무어형은 출력이 안정되고 타이밍을 예측하기 쉽다는 점이 특징입니다.
| 비교 항목 | 밀리형 | 무어형 |
|---|---|---|
| 출력을 정하는 것 | 현재 상태와 현재 입력 | 현재 상태만 |
| 상태 전이도에서 출력을 쓰는 방법 | 전이 화살표에 '입력/출력' 형태로 쓴다 | 상태 원 안에 상태 이름과 함께 쓴다 |
| 입력에 대한 반응 | 입력이 바뀌면 클럭을 기다리지 않고 같은 사이클 안에 출력이 바뀐다 | 다음 클럭으로 상태가 바뀐 뒤에 출력이 바뀐다. 밀리형보다 1사이클 늦다 |
| 상태 수('101'을 겹침 허용으로 검출하는 예) | 3상태(아무것도 일치하지 않음, 1까지 일치, 10까지 일치) | 4상태(출력 1을 나타내는 '101 검출' 상태가 따로 필요) |
| 상태 수(일반) | 같은 기능이라면 무어형과 같거나 적다 | 밀리형의 상태를 들어오는 전이의 출력마다 나눌 필요가 있어 많아지기 쉽다 |
| 글리치와 잡음 | 입력의 글리치나 잡음이 조합 회로를 거쳐 그대로 출력에 나타난다 | 입력의 잡음은 출력에 전달되지 않는다. 출력을 상태 레지스터의 비트에서 직접 꺼내도록 인코딩하면 출력의 글리치도 없앨 수 있다 |
| 타이밍 경로 | 입력에서 출력까지 조합 회로가 이어져, 앞뒤 회로를 포함한 경로가 길어진다. 밀리형끼리 연결하면 조합 루프가 생길 수 있다 | 출력은 클럭 에지 뒤의 상태만으로 정해지므로 경로가 레지스터로 끊겨 타이밍을 분석하기 쉽다 |
| HDL 작성법 | 출력을 정하는 조합 회로 블록에서 상태에 더해 입력도 참조한다 | 출력 식은 상태만 참조한다(case 문으로 상태마다 출력을 정하는 등). 출력을 레지스터에서 내는 경우도 많다 |
| 적합한 용도 | 입력에 1사이클도 늦지 않고 응답하고 싶은 제어, 상태 수를 줄이고 싶을 때 | 깨끗한 출력이 필요한 제어 신호(다른 클럭의 회로나 칩 밖으로 내보내는 신호 등), 타이밍을 예측하기 쉽게 하고 싶을 때 |
수치는 대략적인 자릿수 기준이며, 공정 세대와 제품에 따라 달라져요.