Menu
Coddy logo textTech

Retardos de compuerta

Parte de la sección Fundamentos del Journey de Verilog de Coddy — lección 68 de 90.

En la lección anterior, cubrimos los retardos generales utilizados como #10 a = b; — estos esperan antes de ejecutar una sentencia.

En esta lección, cubrimos los retardos de compuerta, que son específicos de las primitivas de compuerta integradas como and, or y not. Un retardo de compuerta modela cuánto tiempo tarda una compuerta de hardware en producir una salida después de que sus entradas cambian.

En el hardware real, las compuertas no responden instantáneamente; hay un pequeño retraso. Cuando utilizas primitivas de compuerta integradas, puedes añadir un retraso para simular el tiempo de propagación de la compuerta. La salida cambia solo después del retraso especificado.

Diferencia entre General Delay y Gate Delay

 General DelayGate Delay
Sintaxis#10 a = b;and #5 (out, a, b);
Posición# antes de una sentencia# dentro de la primitiva de compuerta
PropósitoEsperar antes de ejecutarModelar el tiempo de propagación de la compuerta

Sintaxis:

gate_type #(delay) (output, input1, input2, ...);

El #(delay) especifica cuántas unidades de tiempo tarda la compuerta en responder.

Ejemplo sencillo

and #5 (out, a, b);

Esta puerta AND tarda 5 unidades de tiempo en cambiar su salida después de que a o b cambie.

Retardo de compuerta con múltiples entradas

nand #8 (out, a, b, c, d);   // NAND de 4 entradas con un retardo de 8 unidades de tiempo

Reglas Importantes

ReglaExplicación
El retardo viene después del nombre de la compuertaand #5 (out, a, b)
Valor de retardo en unidades de tiempoBasado en la directiva timescale
Todas las entradas afectan a la salidaCualquier cambio en la entrada activa el retardo
No sintetizableLos retardos de compuerta son solo para simulación
challenge icon

Desafío

Agrega los retardos de compuerta faltantes a este módulo. Usa diferentes retardos para cada compuerta.

Qué hacer:

  1. Compuerta AND: retardo de 5 unidades de tiempo
  2. Compuerta OR: retardo de 3 unidades de tiempo
  3. Compuerta NOT: retardo de 2 unidades de tiempo

Hoja de referencia

Los retardos de compuerta modelan el tiempo de propagación en las primitivas de compuerta integradas.

Sintaxis:

gate_type #(delay) (output, input1, input2, ...);

Ejemplos:

and  #5 (out, a, b);         // AND gate, 5 time unit delay
or   #3 (out, a, b);         // OR gate, 3 time unit delay
not  #2 (out, a);            // NOT gate, 2 time unit delay
nand #8 (out, a, b, c, d);   // 4-input NAND, 8 time unit delay

Puntos clave:

  • El símbolo # va después del nombre de la compuerta y antes de la lista de puertos
  • Cualquier cambio en la entrada activa el retardo antes de que se actualice la salida
  • Los retardos de compuerta son solo para simulación; no son sintetizables

Pruébalo tú mismo

module gate_delay_challenge;
  reg a, b;
  wire and_out, or_out, not_out;
  
  // TODO: Agregar compuerta AND con un retraso de 5 unidades de tiempo (entradas a, b)
  
  // TODO: Agregar compuerta OR con un retraso de 3 unidades de tiempo (entradas a, b)
  
  // TODO: Agregar compuerta NOT con un retraso de 2 unidades de tiempo (entrada a)
  

  initial begin
    $monitor("Time %0t: a=%b, b=%b | and=%b, or=%b, not=%b", 
              $time, a, b, and_out, or_out, not_out);
    
    a = 1; b = 1;
    #10 $finish;
  end
endmodule
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos