Manufactura industrial
Internet industrial de las cosas | Materiales industriales | Mantenimiento y reparación de equipos | Programación industrial |
home  MfgRobots >> Manufactura industrial >  >> Industrial programming >> Verilog

Retardo de puerta Verilog

Los elementos digitales son entidades binarias y solo pueden contener cualquiera de los dos valores:0 y 1. Sin embargo, la transición de 0 a 1 y de 1 a 0 tiene un retraso de transición, al igual que cada elemento de puerta para propagar el valor desde la entrada hasta su salida.

Por ejemplo, una puerta AND de dos entradas tiene que cambiar la salida a 1 si ambas entradas se convierten en 1 y volver a 0 cuando cualquiera de sus entradas se convierte en 0. Estos retardos de puerta y de pin a pin se pueden especificar en Verilog al instanciar primitivas lógicas.

Retardos de subida, bajada y apagado

El tiempo que tarda la salida de una puerta en cambiar de algún valor a 1 se denomina aumento. demora. El tiempo que tarda la salida de una puerta en cambiar de algún valor a 0 se denomina caída. demora. El tiempo que tarda la salida de una puerta en cambiar de algún valor a alta impedancia se denomina apagado. retraso.

Estos retrasos son aplicables a cualquier señal, ya que todos pueden subir o bajar en cualquier momento en circuitos reales y no están restringidos solo a las salidas de las puertas. Hay tres formas de representar los retardos de puerta y el formato de dos retardos se puede aplicar a la mayoría de las primitivas cuyas salidas no pasan a alta impedancia. Al igual que un formato de tres retrasos, no se puede aplicar a una puerta AND porque la salida no irá a Z para ninguna combinación de entrada.

  
  
// Single delay specified - used for all three types of transition delays
or #(<delay>) o1 (out, a, b);

// Two delays specified - used for Rise and Fall transitions
or #(<rise>, <fall>) o1 (out, a, b);

// Three delays specified - used for Rise, Fall and Turn-off transitions
or #(<rise>, <fall>, <turn_off>) o1 (out, a, b);

  

Si solo se especifica un único retraso, los tres tipos de retrasos utilizarán el mismo valor dado. Si hay dos retrasos especificados, el primero representa aumento y el segundo representa otoño demora. Si hay tres retrasos especificados, representan aumento , caer y apagar retrasos respectivamente.

Formato de un retraso

  
  
module des (	input 	a, b,
            	output out1, out2);

	// AND gate has 2 time unit gate delay
  and 		#(2) o1 (out1, a, b);
  
  // BUFIF0 gate has 3 time unit gate delay
  bufif0 	#(3) b1 (out2, a, b);
  
endmodule

  
  
  
module tb;
  reg a, b;
  wire out1, out2;
  
  des d0 (.out1(out1), .out2(out2), .a(a), .b(b));
  
  initial begin
    {a, b} <= 0;
    
    $monitor ("T=%0t a=%0b b=%0b and=%0b bufif0=%0b", $time, a, b, out1, out2);
    
    #10 a <= 1;
    #10 b <= 1;
    #10 a <= 0;
    #10 b <= 0;
  end
endmodule

  

Vea que la salida de AND las puertas cambian 2 unidades de tiempo después de que una de sus entradas cambia. Por ejemplo, b se vuelve 1 mientras que a ya es 1 en T=20. Pero la salida se convierte en 1 solo en T=22. De manera similar, a vuelve a cero en T=30 y la salida obtiene el nuevo valor en T=32.

El retraso de puerta se especifica como 3 unidades de tiempo para BUFIF0 y por lo tanto, cuando b cambia de 0 a 1 mientras que a ya está en 1, la salida tarda 3 unidades de tiempo en actualizarse a Z y finalmente lo hace en T=23.

Registro de simulación
ncsim> run
T=0 a=0 b=0 and=x bufif0=x
T=2 a=0 b=0 and=0 bufif0=x
T=3 a=0 b=0 and=0 bufif0=0
T=10 a=1 b=0 and=0 bufif0=0
T=13 a=1 b=0 and=0 bufif0=1
T=20 a=1 b=1 and=0 bufif0=1
T=22 a=1 b=1 and=1 bufif0=1
T=23 a=1 b=1 and=1 bufif0=z
T=30 a=0 b=1 and=1 bufif0=z
T=32 a=0 b=1 and=0 bufif0=z
T=40 a=0 b=0 and=0 bufif0=z
T=43 a=0 b=0 and=0 bufif0=0
ncsim: *W,RNQUIE: Simulation is complete.

Dos formatos de retardo

Apliquemos el mismo banco de pruebas que se muestra arriba a un modelo de Verilog diferente que se muestra a continuación donde rise y caer los retrasos se mencionan explícitamente.

  
  
module des (	input 	a, b,
            	output out1, out2);

  and #(2, 3) o1 (out1, a, b);
  bufif0 #(4, 5) b1 (out2, a, b);
  
endmodule

  
Registro de simulación
ncsim> run
T=0 a=0 b=0 and=x bufif0=x
T=3 a=0 b=0 and=0 bufif0=x
T=5 a=0 b=0 and=0 bufif0=0
T=10 a=1 b=0 and=0 bufif0=0
T=14 a=1 b=0 and=0 bufif0=1
T=20 a=1 b=1 and=0 bufif0=1
T=22 a=1 b=1 and=1 bufif0=1
T=24 a=1 b=1 and=1 bufif0=z
T=30 a=0 b=1 and=1 bufif0=z
T=33 a=0 b=1 and=0 bufif0=z
T=40 a=0 b=0 and=0 bufif0=z
T=45 a=0 b=0 and=0 bufif0=0
ncsim: *W,RNQUIE: Simulation is complete.

Tres formatos de retardo

  
  
module des (	input 	a, b,
            	output out1, out2);

  and #(2, 3) o1 (out1, a, b);
  bufif0 #(5, 6, 7) b1 (out2, a, b);
  
endmodule

  
Registro de simulación
ncsim> run
T=0 a=0 b=0 and=x bufif0=x
T=3 a=0 b=0 and=0 bufif0=x
T=6 a=0 b=0 and=0 bufif0=0
T=10 a=1 b=0 and=0 bufif0=0
T=15 a=1 b=0 and=0 bufif0=1
T=20 a=1 b=1 and=0 bufif0=1
T=22 a=1 b=1 and=1 bufif0=1
T=27 a=1 b=1 and=1 bufif0=z
T=30 a=0 b=1 and=1 bufif0=z
T=33 a=0 b=1 and=0 bufif0=z
T=40 a=0 b=0 and=0 bufif0=z
T=46 a=0 b=0 and=0 bufif0=0
ncsim: *W,RNQUIE: Simulation is complete.

Retrasos mín./típ./máx.

Los retrasos no son los mismos en diferentes partes del chip fabricado ni lo son para diferentes temperaturas y otras variaciones. Entonces, Verilog también proporciona un nivel adicional de control para cada uno de los tipos de retraso mencionados anteriormente. Cada puerta digital y celda de transistor tiene un retraso mínimo, típico y máximo especificado en función del nodo de proceso y, por lo general, lo proporcionan las bibliotecas de la fundición de fabricación.

Para cada tipo de retardo (subida, bajada y apagado), tres valores min , escribir y máx se pueden especificar y representar retrasos mínimos, típicos y máximos.

  
  
module des (	input 	a, b,
            	output out1, out2);

  and #(2:3:4, 3:4:5) o1 (out1, a, b);
  bufif0 #(5:6:7, 6:7:8, 7:8:9) b1 (out2, a, b);
  
endmodule

  
Registro de simulación
ncsim> run
T=0 a=0 b=0 and=x bufif0=x
T=4 a=0 b=0 and=0 bufif0=x
T=7 a=0 b=0 and=0 bufif0=0
T=10 a=1 b=0 and=0 bufif0=0
T=16 a=1 b=0 and=0 bufif0=1
T=20 a=1 b=1 and=0 bufif0=1
T=23 a=1 b=1 and=1 bufif0=1
T=28 a=1 b=1 and=1 bufif0=z
T=30 a=0 b=1 and=1 bufif0=z
T=34 a=0 b=1 and=0 bufif0=z
T=40 a=0 b=0 and=0 bufif0=z
T=47 a=0 b=0 and=0 bufif0=0
ncsim: *W,RNQUIE: Simulation is complete.


Verilog

  1. Tutorial de Verilog
  2. Concatenación Verilog
  3. Asignaciones de Verilog
  4. Bloqueo y no bloqueo de Verilog
  5. Control de retardo de Verilog
  6. Retraso de asignación inter e intra de Verilog
  7. Modelado de nivel de puerta
  8. Ejemplos de nivel de puerta de Verilog
  9. Generador de reloj Verilog
  10. Funciones matemáticas de Verilog
  11. Formato de hora de Verilog