Problemas con el muestreo de borde de reloj FPGA

  

Es bien sabido que los relojes son como el corazón para el cuerpo humano. En el diseño lógico secuencial, el procesamiento de cada señal está estrechamente relacionado con el reloj. Por lo general, tomamos el disparo de borde del reloj como condición de disparo de la señal. Entonces, ¿cómo procesa el sistema la señal en el borde del reloj?

Falso el siguiente procedimiento: prueba de moduel (clk, a, b);

input clk;

input a;

output b;

siempre @ (mensaje de posición)

begin b < = a; end

endmodule

El procedimiento anterior, si A cambia en el flanco ascendente del reloj, luego B Será asignado cuando llegue el próximo borde del reloj. De esta manera, en nuestro pensamiento general, esta idea se formará: después de que el reloj adquiera los datos, se asignará el siguiente borde del reloj. Sin embargo, escriba el archivo de banco de pruebas para que a se le asigne un valor de 1 a 15ps y un período de reloj de 10 ps. La forma de onda es que a A y B se les asigna un valor de 1 en el flanco ascendente del reloj. Porque es esto

De hecho, nuestro pensamiento tradicional es erróneo. La razón por la que B cambiará cuando llegue el próximo margen de reloj es porque el sistema no recolectó el cambio de A en el borde ascendente anterior. En el segundo El valor de A se recopila cuando llega el flanco ascendente y se asigna directamente a B. En el banco de pruebas, a A se le ha asignado un valor de 1 a 15ps, por lo que el margen del reloj se asigna al cambio de A y se asigna directamente a B. De hecho, si no es lo ideal, la asignación de B se mantendrá durante un período de tiempo después de que cambie el borde del reloj, ya que la asignación tendrá un pequeño retraso de tiempo.

Como se menciona la asignación, hablemos de la diferencia entre la asignación de bloqueo y la asignación de no bloqueo. De hecho, si está en un proceso diferente, no hay diferencia entre la asignación de bloqueo y la asignación de no bloqueo. Es solo cuando hay un valor variable asignado a otra variable en el mismo proceso. En este momento, la asignación sin bloqueo es equivalente a la ejecución paralela, y la asignación de bloqueo es equivalente a la ejecución secuencial.

Copyright © Conocimiento de Windows All Rights Reserved