Instanciación de módulos
Parte de la sección Fundamentos del Journey de Verilog de Coddy — lección 33 de 90.
La instanciación de módulos es el proceso de crear una copia de un módulo dentro de otro módulo. Es la forma en que se construyen diseños más grandes conectando componentes más pequeños entre sí.
Una vez que hayas definido un módulo, puedes usarlo dentro de otro módulo. Esto se llama instanciación. Cada instanciación crea una instancia separada de ese módulo. Piénsalo como usar un plano para construir múltiples copias del mismo componente.
Sintaxis básica
module_name instance_name (connections);| Parte | Significado |
|---|---|
module_name | Nombre del módulo a instanciar |
instance_name | Nombre único para esta copia |
connections | Señales conectadas a los puertos del módulo |
Ejemplo sencillo
Paso 1: Definir un módulo
module and_gate (
input a,
input b,
output c
);
assign c = a & b;
endmodulePaso 2: Instanciarlo en otro módulo
module top (
input x,
input y,
output z
);
and_gate gate1 (x, y, z);
endmoduleEsto es lo que sucede en este código:
and_gate— el nombre del módulo que queremos usar (debe existir en algún lugar)gate1— un nombre único que le damos a esta instancia específica(x, y, z)— las señales que conectamos a los puertos del módulo (en el mismo orden en que aparecen en la definición del módulo)
La primera señal x se conecta al primer puerto a. La segunda señal y se conecta al segundo puerto b. La tercera señal z se conecta al tercer puerto c.
Debes pasar señales al módulo. Los paréntesis no pueden estar vacíos. El número de señales debe coincidir con el número de puertos.
Múltiples instancias
Puedes crear múltiples copias del mismo módulo:
module top;
wire out1, out2;
wire sig1, sig2, sig3, sig4;
and_gate gate1 (sig1, sig2, out1);
and_gate gate2 (sig3, sig4, out2);
endmoduleCada instancia tiene su propio nombre (gate1, gate2) y sus propias conexiones. Funcionan de forma independiente.
Qué sucede durante la instanciación
- Se crea una copia del hardware
- Cada instancia tiene su propio conjunto de señales
- Las instancias se ejecutan en paralelo (simultáneamente)
- Las señales que pasas determinan cómo las instancias se conectan al resto de tu diseño
Reglas para la instanciación
| Regla | Por qué |
|---|---|
| El nombre de la instancia debe ser único | Para distinguir entre copias |
| El nombre del módulo debe existir | Debe estar definido en otro lugar |
| El número de conexiones debe coincidir con el número de puertos | De lo contrario, Verilog no sabe qué se conecta a qué |
| El orden de conexión debe coincidir con el orden de los puertos | La primera señal se conecta al primer puerto, etc. |
Desafío
Completa el código instanciando el módulo or_gate.
Qué hacer:
- Instancia
or_gatecon el nombre de instanciaor1 - Pasa las señales en el orden correcto:
input_a,input_b,output_y
Hoja de referencia
La instanciación de módulos crea una copia de un módulo dentro de otro módulo:
module_name instance_name (connections);Ejemplo:
module and_gate (input a, input b, output c);
assign c = a & b;
endmodule
module top (input x, input y, output z);
and_gate gate1 (x, y, z); // x→a, y→b, z→c
endmoduleReglas:
- El nombre de la instancia debe ser único
- El número de conexiones debe coincidir con el número de puertos
- El orden de las conexiones debe coincidir con el orden de definición de los puertos
- Múltiples instancias se ejecutan en paralelo, cada una con sus propias señales
Pruébalo tú mismo
module or_gate (
input in1,
input in2,
output result
);
assign result = in1 | in2;
endmodule
module top (
input input_a,
input input_b,
output output_y
);
// TODO: Instanciar or_gate con el nombre or1
// Pasar las señales en orden: input_a, input_b, output_y
// No usar la sintaxis .port(signal)
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