이진, 그레이, 원-핫 인코딩: FPGA 상태 머신을 위한 실용 가이드
이 기사는 FPGA에서 유한 상태 머신(FSM)을 구현할 때 이진, 그레이, 원-핫 인코딩에 대한 자세한 비교를 제공합니다. 합성 도구가 이러한 인코딩을 평가하고 잠재적으로 변환하는 방식을 이해하는 것은 최적의 성능과 전력 효율을 달성하는 데 필수적입니다.
유한 상태 머신은 디지털 설계에서 보편적입니다. 합성 도구는 RTL을 정기적으로 분석하여 FSM을 감지하고 타이밍, 면적, 전력 목표를 충족하기 위해 상태 인코딩을 재작성할 수 있습니다. 수동으로 상태 코드를 할당하더라도 도구는 최적화 전략에 따라 다른 비트 폭을 가진 다른 값으로 대체할 수 있습니다.
Verilog에서 FSM 구축에 대한 복습은 제 기사 Verilog에서 유한 상태 머신 만들기를 참조하세요.
인코딩 옵션: 이진, 그레이, 원-핫
세 가지 가장 일반적인 FSM 인코딩은 이진, 그레이, 원-핫입니다. 각각 고유한 트레이드오프를 제공합니다.
이진 인코딩
이진 인코딩은 모든 상태를 표현하는 데 가능한 최소 비트를 할당합니다. 가장 공간 효율적인 선택이지만, 상태 전이는 여러 비트 변경을 포함할 수 있어 동적 전력을 증가시킬 수 있습니다.

이진 인코딩 예시. 이미지: Steve Arar
그레이 인코딩
그레이 코드는 연속된 상태 간에 오직 한 비트만 변경되도록 보장합니다. FSM이 예측 가능한 시퀀스를 따를 때, 그레이 인코딩은 스위칭 활동을 줄이고 동적 전력을 낮출 수 있습니다.

그레이 코드 휠. 이미지: Marie Christiano
원-핫 인코딩
원-핫 인코딩은 각 상태를 전용 플립플롭 비트로 표현합니다. 더 많은 로직 리소스를 소비하고 많은 무효 조합을 도입하지만, 상태 디코딩이 필요 없어 조합 로직을 단순화하고 높은 클록 주파수에서 타이밍을 개선하는 경우가 많습니다.

원-핫 인코딩 예시. 이미지: Steve Arar
VHDL에서 상태 인코딩에 대한 더 깊은 통찰은 Steve Arar의 VHDL에서 유한 상태 머신의 상태 인코딩을 참조하세요.
올바른 인코딩 선택
최적의 인코딩 결정은 문맥 의존적이며 면적, 타이밍, 전력의 균형을 맞추는 것을 포함합니다. 일반적인 가이드라인에는 다음이 포함됩니다:
- 설계가 작고 성능 차이가 무시할 만하다면, 지정한 원래 인코딩을 유지하세요.
- 카운터와 같이 고정된 순차적 순서로 상태를 순회하는 FSM의 경우 그레이 코드가 종종 유리합니다.
- 임의의 전이가 있거나 높은 주파수에서 동작해야 하는 FSM의 경우, 원-핫 인코딩이 최적의 타이밍 클로저를 제공할 수 있습니다.
트레이드오프가 미묘하기 때문에, 합성 도구가 인코딩을 선택하도록 허용하는 것을 권장합니다. 그럼에도 불구하고, 저는 세 가지 주요 개발 도구와 세 가지 독특한 상태 머신 전반에 걸친 비교 실험을 수행하여 각 인코딩이 실제로 어떻게 수행되는지 보여주었습니다. 결과는 다음 기사에서 논의됩니다.