Restablecer restablecer a cero después de un ciclo de reloj en verilog

0

Tengo problemas para configurar el Inicio (restablecer) a cero después de estar alto para un borde del reloj. Busqué en línea e intenté diferentes maneras de escribir el reloj, pero lo que me sorprende es que cuando configuro Iniciar como 1, el reloj no cambia como debería. Es como si Start beed esté bloqueando la ejecución del código de reloj. Aquí está:

initial begin
    Clock = 0;
    Start = 1'b1;
    forever begin
    #20 Clock = ~Clock;
    end
end

initial begin
    @(negedge Clock);
    Start = 1'b0;
    @(negedge Start);
    X = 3'd5;
end

Mi forma de onda de salida se verá así:

Luego,siconfiguroelcódigocomotal:

initialbeginClock=0;Start=1'b1;#20Start=1'b0;foreverbegin#20Clock=~Clock;endendinitialbegin@(negedgeStart);X=3'd5;end

Obtendrélaformadeondadesalidaenlasiguienteimagen.Aunquenoquieroeso.Quieroqueelrelojhagasuspulsosnormalesindependientementedequecomienceacambiar.¿Cómologroeso?

    
pregunta Lim LS

1 respuesta

0

Supongo que estás intentando hacer algo como lo siguiente. Tenga en cuenta el #1 para protegerse contra el reloj de compensación de x a 0 en el tiempo 0.

initial begin
  Clock = 1'b0;
  forever begin
    #20 Clock = ~Clock;
  end
end

initial begin
  Start = 1'b1;
  #1; // little delay so x->0 transition does not trigger negedge Clock
  @(negedge Clock);
  Start = 1'b0;
  // @(negedge Start); // not needed as we know Start fell
  X = 3'd5;
end
    
respondido por el Greg

Lea otras preguntas en las etiquetas