Codificación Binaria, Gray y One‑Hot: Guía Práctica para Máquinas de Estados en FPGA
Este artículo proporciona una comparación detallada de codificaciones binaria, Gray y one‑hot al implementar máquinas de estados finitos (FSM) en FPGAs. Entender cómo las herramientas de síntesis evalúan y potencialmente transforman estas codificaciones es esencial para lograr rendimiento óptimo y eficiencia energética.
Las máquinas de estados finitos son ubicuas en el diseño digital. Las herramientas de síntesis analizan rutinariamente su RTL para detectar FSMs y pueden reescribir codificaciones de estado para cumplir objetivos de temporización, área o potencia. Incluso si asigna manualmente códigos de estado, la herramienta puede sustituir valores diferentes —a veces con diferente ancho de bits— basándose en su estrategia de optimización.
Para un repaso sobre construcción de FSMs en Verilog, vea mi artículo Creación de Máquinas de Estados Finitos en Verilog.
Opciones de Codificación: Binaria, Gray y One‑Hot
Las tres codificaciones FSM más comunes son binaria, Gray y one‑hot. Cada una ofrece compromisos distintos.
Codificación Binaria
La codificación binaria asigna la menor cantidad posible de bits para representar todos los estados. Es la opción más eficiente en espacio, pero las transiciones de estado pueden involucrar múltiples cambios de bit, lo que puede aumentar la potencia dinámica.

Un ejemplo de codificación binaria. Imagen de Steve Arar
Codificación Gray
El código Gray asegura que solo un bit cambie entre estados consecutivos. Cuando la FSM sigue una secuencia predecible, la codificación Gray puede reducir la actividad de conmutación y bajar la potencia dinámica.

La rueda de código Gray. Imagen de Marie Christiano
Codificación One‑Hot
La codificación one‑hot representa cada estado con un bit dedicado de flip‑flop. Aunque consume más recursos lógicos e introduce muchas combinaciones inválidas, elimina la necesidad de decodificación de estado, simplificando la lógica combinacional y a menudo mejorando el cierre de temporización a altas frecuencias de reloj.

Un ejemplo de codificación one‑hot. Imagen de Steve Arar
Para perspectivas más profundas sobre codificación de estados en VHDL, consulte Codificación de los Estados de una Máquina de Estados Finitos en VHDL de Steve Arar.
Elección de la Codificación Adecuada
Determinar la codificación óptima depende del contexto e implica equilibrar área, temporización y potencia. Directrices generales incluyen:
- Si su diseño es pequeño y las diferencias de rendimiento son insignificantes, conserve la codificación original que especificó.
- Para FSMs que recorren estados en un orden fijo y secuencial —como contadores— el código Gray suele ser ventajoso.
- Cuando una FSM tiene transiciones arbitrarias u debe operar a altas frecuencias, la codificación one‑hot puede proporcionar el mejor cierre de temporización.
Debido a que los compromisos son matizados, recomiendo permitir que la herramienta de síntesis elija la codificación. No obstante, realicé experimentos comparativos en tres herramientas de desarrollo principales y tres máquinas de estados distintas para ilustrar cómo cada codificación se desempeña en la práctica. Los resultados se discuten en mi próximo artículo.
Incrustado
- Six Sigma vs. Manufactura Esbelta: Guía Clara para Elegir la Estrategia Correcta
- Hierro gris desmitificado: Propiedades, grados y aplicaciones industriales
- Numeración octal y hexadecimal: guía práctica para ingenieros
- Suma binaria explicada: reglas, ejemplos y su papel en computadoras digitales
- Resta binaria usando complemento a dos
- Desbordamiento binario: cómo los bits de signo afectan la suma binaria
- Código Morse y Doble Extorsión: Panorama Actual de Amenazas Avanzadas de Malware
- Estrategias de protección contra incendios para talleres EDM y CNC: proteja productividad y seguridad
- Acero series 300, 400 y 500: composición, propiedades y aplicaciones
- Estructuras vs Clases en C++: Guía práctica para desarrolladores embebidos
- Elección de la Codificación FPGA Adecuada: Estudio Práctico con el Juego de la Vida de Conway