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 Delay | Gate Delay | |
|---|---|---|
| Sintaxis | #10 a = b; | and #5 (out, a, b); |
| Posición | # antes de una sentencia | # dentro de la primitiva de compuerta |
| Propósito | Esperar antes de ejecutar | Modelar 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 tiempoReglas Importantes
| Regla | Explicación |
|---|---|
| El retardo viene después del nombre de la compuerta | and #5 (out, a, b) |
| Valor de retardo en unidades de tiempo | Basado en la directiva timescale |
| Todas las entradas afectan a la salida | Cualquier cambio en la entrada activa el retardo |
| No sintetizable | Los retardos de compuerta son solo para simulación |
Desafío
Agrega los retardos de compuerta faltantes a este módulo. Usa diferentes retardos para cada compuerta.
Qué hacer:
- Compuerta AND: retardo de 5 unidades de tiempo
- Compuerta OR: retardo de 3 unidades de tiempo
- 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 delayPuntos 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
endmoduleEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
1Introducción
¿Qué es Verilog?Hardware vs SoftwareNiveles de abstracción de diseñoTu primer móduloComentarios4Operadores Parte 1
Operadores aritméticosOperador de móduloOperadores de comparaciónRepaso - Matemáticas simplesOperadores bit a bit7Asignación y Compuertas
Asignación ContinuaAsignación con OperadoresPrimitivas de Compuertas IntegradasCompuertas AND OR NOTCompuertas XOR XNORResumen - Circuito de Compuertas Lógicas10Toma de decisiones
Sentencia IfIf - ElseRepaso - Comparador simpleSentencia CaseCasex y CasezRepaso - Diseño de ALU13Temporización y retardos
¿Qué son los retardos?Retardos de compuertaRetardos de asignaciónDirectiva TimescaleGeneración de relojResumen - Control de temporización5Operadores Parte 2
Operadores lógicosOperadores de reducciónOperadores de desplazamientoOperador de concatenaciónOperador condicionalResumen - Desafío de operadores3Sistema de numeración
Representación binariaNúmeros con tamaño definidoNúmeros sin tamaño definidoNúmeros negativosValores especiales X y ZResumen - Formatos de números6Módulos
Estructura del móduloPuertos de entrada y salidaPuertos InoutInstanciación de módulosMapeo de puertos por nombreMapeo de puertos por ordenResumen: Construye un módulo