Primitivas de compuertas integradas
Parte de la sección Fundamentos del Journey de Verilog de Coddy. Lección 39 de 90.
Verilog tiene primitivas de compuertas integradas que te permiten describir circuitos lógicos utilizando símbolos de compuertas reales. Esto se denomina modelado estructural. Construyes circuitos conectando compuertas, igual que al dibujar un esquema.
Las primitivas de compuerta son palabras clave predefinidas que modelan compuertas lógicas básicas. En lugar de escribir una expresión como assign out = a & b, instancias una compuerta:
and(out, a, b); // Puerta AND con salida out, entradas a y bSintaxis general
gate_type (output, input1, input2, ...);- El primer argumento siempre es la salida
- Los argumentos siguientes son las entradas (1 o más, según la compuerta)
Primitivas de compuertas disponibles
| Tipo de compuerta | Palabra clave | Número de entradas |
|---|---|---|
| AND | and | 2 o más |
| OR | or | 2 o más |
| NOT | not | 1 |
| NAND | nand | 2 o más |
| NOR | nor | 2 o más |
| XOR | xor | 2 o más |
| XNOR | xnor | 2 o más |
Cómo funcionan las primitivas de compuerta
Cuando escribes and(out, a, b), Verilog crea una compuerta AND que impulsa continuamente out con el resultado de a & b. Cada vez que a o b cambia, out se actualiza de inmediato, igual que una compuerta real.
Primitivas de compuerta frente a asignación continua
Ambos métodos producen el mismo hardware:
// Primitiva de compuerta
and(out, a, b);
// Asignación continua (mismo resultado)
assign out = a & b;Las primitivas de compuerta son útiles cuando quieres describir un circuito como una colección de compuertas (estilo estructural). La asignación continua es mejor para el estilo conductual (expresiones).
Desafío
Qué hacer:
- Añade la primitiva de compuerta correcta para hacer funcionar este circuito. El módulo debe producir la operación AND de las entradas
ayb. El puerto de salida ya se llamac.
Pruébalo tú mismo
module gate_challenge (
input a,
input b,
output c
);
// TODO: Añade la primitiva de compuerta correcta
// La salida c debe ser a AND b
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 VerilogHardware frente a softwareTu primer móduloComentariosNiveles de abstracción del diseño4Operadores, parte 1
Operadores aritméticosOperador móduloOperadores de comparaciónRepaso: matemáticas simplesOperadores bit a bit7Asignaciones y compuertas
Asignación continuaAsignación con operadoresPrimitivas de compuertas integradasCompuertas AND, OR y NOTCompuertas XOR y XNORRepaso: circuito de compuertas lógicas10Toma de decisiones
Sentencia IfIf - ElseRepaso - Comparador simpleSentencia CaseCasex y CasezRepaso - Diseño de ALU5Operadores, parte 2
Operadores lógicosOperadores de reducciónOperadores de desplazamientoOperador de concatenaciónOperador condicionalRepaso: desafío de operadores11Bucles
Bucle ForBucle WhileBucle de repeticiónBucle infinitoInstrucción DisableRepaso: patrones de bucles3Sistema numérico
Representación binariaNúmeros con tamañoNúmeros sin tamañoNúmeros negativosValores especiales X y ZRepaso: formatos numéricos6Módulos
Estructura de módulosPuertos de entrada y salidaPuertos inoutInstanciación de módulosAsignación de puertos por nombreAsignación de puertos por ordenRepaso: construir un móduloPractica por tu cuenta: Compilador de Verilog online