Declaraciones de bloqueo y no bloqueo para el contador

0

¿Hay alguna diferencia entre la no bloqueo y la asignación de bloqueo para los siguientes contadores?

module  nonblocking_counter (
  input clk,               
  input rstn,              
  output reg[3:0] out
);    

  always @ (posedge clk) begin
    if (! rstn)
      out <= 0;
    else 
      out <= out + 1;
  end
endmodule

module  blocking_counter (
    input clk,              
    input rstn,
    output reg[3:0] out              
);   

  always @ (posedge clk) begin
    if (! rstn)
      out = 0;
    else 
      out = out + 1;
  end
endmodule
    
pregunta delkov

1 respuesta

1

El circuito generado por las herramientas de síntesis será idéntico para este código. Sin embargo, en la simulación, tiene una condición de carrera en la salida que alimenta la entrada de otro proceso sincronizado cuando se usan asignaciones de bloqueo.

    
respondido por el dave_59

Lea otras preguntas en las etiquetas