Sunny Day
FSM State Encoding - One hot vs gray vs binary 본문
Digital Design은 FSM과 Counter만 잘 만들어도 다 설계할 수 있다고도 한다. 중요한 만큼 FSM의 관리 용이성이 중요하다.
그래서 주로 State 관리를 위한 State Register를 만들어둔다. 대부분의 시스템은 State Reg에 저장된 정보를 바탕으로 동작흐름을 제어할 수 있다. 그리고 Control을 위한 State의 Encoding 방식에 따라 속도, 리소스 사용량(Register, Logic), 전력 소비 측면에서 성능에 영향을 준다. 그래서 State Register의 Encoding 방식을 설계 시 고려해야 한다.
FSM의 State의 Encoding은 크게 Binary, one-hot, gray 3가지 정도가 대표적이다.
- Binary Encoding: "000", "001", "010", "011", "100"…
- One-hot Encoding: "000001", "000010", "000100", "001000", "010000"…
- Gray Encoding : "000", "001", "011", "010", "110"…
Binary Encoding은 벡터 길이를 최소화한다.
One-hot Encoding은 일반적으로 더 빠르고 더 많은 Reg와 더 적은 Logic을 사용한다. 그래서 고속 설계나 Reg가 풍부한 FPGA 설계에서 원핫인코딩이 적합하다.
Gray Encoding은 branch가 제한되거나 없을떄 결함을 줄여준다. (카운터같은 단일 path에서 State 순환 시 좋음)
'Digital Design' 카테고리의 다른 글
Reset Recovery & Removal time (0) | 2022.07.02 |
---|---|
Sync vs Async Reset (0) | 2022.07.02 |
CDC & Metastability (0) | 2022.05.17 |