Superposición de bordes de reloj y datos en diseños de máquinas de estados múltiples

0

Tengo una pregunta general sobre los diseños de lógica de máquina de estado múltiple. Piense en un sistema que tenga múltiples máquinas de estados finitos con un solo reloj y flip flops de bordes crecientes. Estas máquinas comparten algunos de sus datos de entrada y salida. Así que las salidas de algunas máquinas pueden ser las entradas de otras máquinas.

Mi pregunta es, ya que todas las máquinas usan el mismo reloj y el flanco ascendente, ¿no habría una confusión en los flancos ascendentes donde también cambian los datos de entrada?

Para explicar en las figuras: La siguiente figura muestra un diagrama de datos conveniente y de tiempo de reloj. (la señal inferior es reloj, la señal superior es datos de entrada) No hay cambios en la señal de entrada en el flanco ascendente del reloj.

Peroaquílosdatosdeentradatienenunbordedescendenteenelbordeascendentedelreloj.Estomepareceproblemático:

Y la cosa es que, en un sistema de máquina de estado múltiple con un solo reloj, cada transición de un bit ocurre al mismo tiempo en todo el diseño. Así que para mí, a menos que se me ocurra un método, los bordes de los datos y el reloj siempre se superponen. Quiero saber si hay métodos para evitar esto (como cambiar la fase del reloj para cada máquina, etc.). O tal vez esto no sea un problema en absoluto, ¿y me estoy perdiendo algo aquí? Si es así, también me gustaría saber por qué estoy pensando mal.

    
pregunta packt

2 respuestas

1

En la práctica, cuando un solo reloj se distribuye adecuadamente alrededor del diseño, se puede considerar que las señales de salida llegan después del reloj que las creó. El reloj tiene que provocar la transición real de una salida de flop y luego la señal debe propagarse a través de varias capas de lógica antes de que alcance el siguiente flop. Estos retrasos son mucho más grandes que los pequeños errores en la sincronización del reloj.

    
respondido por el RoyC
1

Para la simulación basada en ciclos, asumimos que el borde del reloj se produce simultáneamente en todo el diseño. En el diseño de ASIC (incluidas las personas que diseñan los FPGA que uso), se necesita mucho trabajo para acercarse a este ideal.

Al mirar las formas de onda de simulación, tenga en cuenta que todas las señales que parecen aparecer al mismo tiempo que el reloj cambia en realidad cambian (al menos) un poco más tarde. Al menos deberían. De hecho, Verilog tiene problemas con condiciones de carrera que pueden causar problemas en la simulación. Y he tenido problemas de simulación en VHDL al activar un reloj, derivar un reloj de otro, o asignar un reloj a / desde una matriz o registro.

Cuando se sintetiza un diseño a FPGA o ASIC, el borde del reloj no ocurre simultáneamente en todo el diseño. Si un cambio en el cableado de un flip-flop cambia demasiado pronto después del reloj, llamamos a esto una "infracción de tiempo de espera". Estas violaciones se mostrarán en el análisis de tiempo estático que debe ser parte de su flujo de herramientas de ubicación y ruta. En mi experiencia FPGA, las violaciones de tiempo de espera son muy raras. Los pocos que he visto provienen de errores al especificar las restricciones de reloj.

Por lo general, el problema está en el otro extremo. En su simulación, todos los flip-flops controlados por su reloj parecen cambiar instantáneamente, y sus resultados están disponibles al instante para cualquier lógica que los necesite. En el hardware real, hay un cierto retardo entre el borde del reloj y la salida del flip-flop (tiempo de "reloj a Q"), y hay un cierto retardo entre la salida del flip-flop y la siguiente entrada del flip-flop debido a Retrasos en el enrutamiento y puertas lógicas. Cuando estos retrasos se vuelvan demasiado grandes, verá una "infracción de tiempo de configuración" en su informe de tiempo. Arreglar las violaciones de configuración y retención es el proceso llamado "cierre de tiempo".

    
respondido por el R.Hinton

Lea otras preguntas en las etiquetas