En el código verilog, ¿qué sucede cuando existe una sentencia de repetición dentro de una sentencia siempre con posición?

2

Por ejemplo,

always @(posedge clk)
begin
    repeat (20)
        @(posedge clk) ;
end

En esta declaración, cuando se activa el clk por primera vez, se ejecutará la instrucción de repetición. Sin embargo, si el clk se activa la próxima vez, ¿significa que hay dos declaraciones de repetición en ejecución?

    
pregunta sungjun cho

1 respuesta

3

Una condición 'posedge' (u otra) solo se vuelve efectiva (puede ser activada nuevamente) si los eventos activados por ella han finalizado.

Por lo tanto, la primera posición comenzará la condición de repetición. Después de 20 "posiciones", el que está en la parte superior puede activarse nuevamente.

Apareció una pregunta:
Sí, es Verilog legal completo y se puede utilizar en bancos de pruebas.

Este es probablemente un ejemplo más útil:

always @(posedge signal)
begin 
   <do something>
   // ignore any posedges of signal for the next 20 clock cycles
   repeat (20)
      @(posedge clk);
end
    
respondido por el Oldfart

Lea otras preguntas en las etiquetas