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 compuerta integradas que le permiten describir circuitos lógicos utilizando símbolos de compuerta reales. Esto se llama modelado estructural: usted construye circuitos conectando compuertas, tal como si estuviera dibujando 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, se instancia una compuerta:
and(out, a, b); // Compuerta AND con salida out, entradas a y bSintaxis General
gate_type (output, input1, input2, ...);- El primer argumento es siempre la salida
- Los siguientes argumentos son entradas (1 o más, dependiendo de 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 maneja continuamente out con el resultado de a & b. Siempre que a o b cambien, out se actualiza inmediatamente — igual que una compuerta real.
Primitivas de compuerta vs 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 se desea 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 puerta correcta para que este circuito funcione. El módulo debe dar como salida el AND de las entradas
ayb. El puerto de salida ya se llamac.
Hoja de referencia
Las primitivas de puerta en Verilog permiten el modelado estructural mediante la instanciación directa de puertas lógicas.
Sintaxis: El primer argumento es siempre la salida, seguido de las entradas:
gate_type(output, input1, input2, ...);Primitivas disponibles:
| Puerta | Palabra clave | Entradas |
|---|---|---|
| AND | and | 2+ |
| OR | or | 2+ |
| NOT | not | 1 |
| NAND | nand | 2+ |
| NOR | nor | 2+ |
| XOR | xor | 2+ |
| XNOR | xnor | 2+ |
Las primitivas de puerta y assign producen hardware equivalente:
and(out, a, b); // estructural (primitiva de puerta)
assign out = a & b; // conductual (asignación continua)Pruébalo tú mismo
module gate_challenge (
input a,
input b,
output c
);
// TODO: Añadir la primitiva de puerta 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 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 ALU5Operadores 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