¿Por qué la codificación de estado caliente tiene una ventaja en la decodificación en comparación con la codificación de estado binario?

4

Antes de hacer la pregunta, he buscado en Google las ventajas de la codificación de estado de activación rápida en comparación con otras, como la codificación de estado gris y binario.

Pude entender las ventajas y desventajas de one-hot sobre el esquema de codificación de otros, como la distancia constante de hamming (dos), rápido pero que requiere un N flops, etc.

Muchos artículos mencionaron que el uso rápido es rápido y se adapta al diseño de alta velocidad, y también mencionaron que la razón es que tiene un tiempo de decodificación muy pequeño en comparación con la codificación gris y la codificación binaria.

Sin embargo, no pude entender por qué la decodificación instantánea es más rápida en comparación con otras. Por ejemplo, cuando decodificamos la máquina de estado codificada de un solo uso, la declaración del caso podría implementarse como se muestra a continuación

parameter STATE_ONE    = 3'b001,
          STATE_TWO    = 3'b010;
          STATE_THREE  = 3'b100;
parameter STATE_ONE_ID = 'd0,
          STATE_TWO_ID = 'd1;
          STATE_THR_ID = 'd2;
reg [2:0] states;

switch(1'b1)
  states[STATE_ONE_ID]: begin end
  states[STATE_TWO_ID]: begin end 
...

También para los estados codificados en binario, podríamos utilizar el siguiente código para decodificar

parameter STATE_ONE   = 2'b00,
          STATE_TWO   = 2'b01,
          STATE_THREE = 2'b10;
case (current_state)
  STATE_ONE   : begin end
  STATE_TWO   : begin end
  STATE_THREE : begin end 
  ....

Cuando nos fijamos en el RTL que implementa el decodificador para un solo recurso y binario, no parece realmente diferente.

Me gustaría saber por qué la decodificación instantánea es mucho más rápida que el caso binario.

¿Se induce la diferencia cuando se sintetizan?

    
pregunta JaeHyuk Lee

1 respuesta

5

Lo que hay que recordar acerca del código de comportamiento de Verilog es que lo que puede parecer "simplemente podríamos hacer", no representa en realidad lo simple o complejo que es el hardware resultante.

La declaración de su caso describe el comportamiento que desea, pero las herramientas de síntesis tienen que convertirlo en puertas lógicas. No hay una simple puerta lógica case . Ambos infieren cadenas de multiplexores para cada señal controlada dentro.

En el ejemplo de un solo uso, la lógica que verifica el estado puede simplemente usar los bits de un solo calor para la multiplexación.

Para el estado codificado en binario, la lógica debe incluir una carga de lógica de decodificador para convertir el valor binario en un valor de una sola caliente antes de que pueda realizar la multiplexación.

TL; DR; La diferencia básicamente se reduce a donde se coloca la lógica de decodificación. En un instante, la lógica se coloca antes de que se registre la máquina de estados que rompe las rutas combinacionales (bueno). En binario, la lógica se coloca después de que la máquina de estados se registre formando rutas combinacionales más largas (incorrectas).

    
respondido por el Tom Carpenter

Lea otras preguntas en las etiquetas