Comparación de codificación binaria, gris y One-Hot
Este artículo muestra una comparación de las implementaciones que resultan del uso de codificaciones binarias, Gray y one-hot para implementar máquinas de estado en una FPGA. Estas codificaciones a menudo son evaluadas y aplicadas por las herramientas de síntesis e implementación, por lo que es importante saber por qué el software toma estas decisiones.
Las máquinas de estados finitos (FSM) son una parte muy común de casi todos los sistemas digitales. Es por eso que las herramientas de síntesis a menudo inspeccionan su código para detectar FSM y realizar optimizaciones que pueden modificar la codificación de los estados. No importa si seleccionó y especificó cuidadosamente los valores que implementan sus estados en su código fuente, la herramienta de síntesis puede reemplazar esos valores con otros que incluso pueden tener una longitud de bits diferente a la codificación original.
Si desea repasar la implementación de máquinas de estado en Verilog, debería leer mi artículo titulado Creación de máquinas de estado finito en Verilog.
Codificación de estados:gris frente a binario frente a One-Hot
Las tres codificaciones más populares para estados FSM son binary, Gray y one-hot.
Codificación binaria
La codificación binaria es el método sencillo que puede usar intuitivamente cuando asigna valores secuencialmente a sus estados. De esta manera, está utilizando la menor cantidad de bits posible para codificar sus estados.
Un ejemplo de codificación one-hot. Imagen de Steve Arar
Codificación de grises
El código Gray consiste en una secuencia en la que solo un bit cambia entre un valor y el siguiente. Además de utilizar también el número mínimo de bits, esta codificación minimiza el consumo de energía dinámica si la secuencia de estados se sigue de manera óptima.
La rueda del código Gray. Imagen de Marie Christiano
Codificación One-Hot
Finalmente, la codificación one-hot consiste en utilizar un bit que representa cada estado, de modo que en cualquier momento, un estado se codificará como 1 en el bit que representa el estado actual y 0 en todos los demás bits. Esto puede no parecer muy eficaz al principio debido a la cantidad de bits utilizados y al número excesivo de estados no válidos. Sin embargo, la codificación one-hot es muy buena para simplificar la lógica de estímulo para los flip flops porque no es necesario decodificar los estados. Los bits son los Estados.
Un ejemplo de codificación one-hot. Imagen de Steve Arar
Para obtener más información sobre las codificaciones de estado, puede consultar el artículo Codificación de los estados de una máquina de estados finitos en VHDL de Steve Arar.
¿Qué codificación es la mejor?
Esta es una pregunta difícil, principalmente porque cada codificación tiene sus ventajas y sus deficiencias, por lo que se reduce a un problema de optimización que depende de una gran cantidad de factores.
- Si un sistema muy simple produce resultados muy similares en todas las codificaciones, la codificación original es la mejor opción.
- Si el FSM recorre sus estados en una ruta (como un contador), el código Gray es una muy buena opción.
- Si el FSM tiene un conjunto arbitrario de transiciones de estado o se espera que se ejecute a altas frecuencias, tal vez la codificación one-hot sea el camino a seguir.
Ahora, todas estas afirmaciones son solo conjeturas fundamentadas, y encontrar la asignación de estado óptima es un problema complicado. Debido a esto, mi consejo oficial es que deje que el compilador decida por usted. Dicho esto, decidí realizar una comparación de los resultados de estas tres codificaciones en tres herramientas de desarrollo diferentes y tres máquinas de estado diferentes.
En el próximo artículo, analizaremos los resultados de mis experimentos.
Incrustado
- Comparación de acero de las series 300, 400 y 500
- Numeración octal y hexadecimal
- Suma binaria
- Resta binaria
- Desbordamiento binario
- Estructuras y clases en C ++
- Comparación de Six Sigma y manufactura esbelta
- ¿Qué tipo de codificación debo utilizar? Ejemplos de aplicaciones FPGA
- Código Morse y doble extorsión:el estado actual del malware
- Protección contra incendios de máquinas EDM y CNC:comparación de sus opciones
- Explicación de las propiedades y grados del hierro gris