Mapeo de puertos por orden
Parte de la sección Fundamentos del Journey de Verilog de Coddy — lección 35 de 90.
En la lección anterior, aprendiste sobre la asignación de puertos por nombre, donde etiquetas explícitamente cada conexión usando .port(signal). Ahora cubriremos el método alternativo: la asignación de puertos por orden.
Conecta signals a los ports de un module según el order en el que aparecen en la definición del module. Simplemente listas los signals entre paréntesis, y Verilog los empareja uno a uno.
Sintaxis:
module_name instance_name (signal1, signal2, signal3);El primer signal se conecta al primer port, el segundo al segundo port, y así sucesivamente.
Ejemplo
Definición del módulo:
module or_gate (
input in1, // Primer puerto
input in2, // Segundo puerto
output result // Tercer puerto
);
assign result = in1 | in2;
endmoduleInstanciación con mapeo de puertos por orden:
or_gate or1 (input_a, input_b, output_y);Esto conecta:
- Primera señal
input_a→ primer puertoin1 - Segunda señal
input_b→ segundo puertoin2 - Tercera señal
output_y→ tercer puertoresult
El orden importa
Con el mapeo de puertos por orden, la secuencia es crítica:
// Orden correcto
or_gate or1 (input_a, input_b, output_y);
// Orden incorrecto - ¡señales conectadas a los puertos equivocados!
or_gate or1 (input_b, input_a, output_y);
or_gate or1 (output_y, input_a, input_b);Si confundes el order, las conexiones van a los ports wrong. Esto puede ser difícil de depurar porque el código parece correct a primera vista.
Mapeo de puertos por nombre vs por orden
| Característica | Por nombre | Por orden |
|---|---|---|
| Sintaxis | .port(signal) | signal1, signal2 |
| ¿El orden importa? | No | Sí |
| ¿Autodocumentado? | Sí | No |
| Riesgo de errores | Bajo | Alto |
| Recomendado para | La mayoría de los diseños | Solo casos simples |
Cuándo usar el mapeo de puertos por orden
El mapeo de puertos por orden es aceptable cuando:
- El módulo tiene muy pocos puertos (2-3)
- El orden de los puertos es obvio y es poco probable que cambie
- Estás escribiendo bancos de pruebas (testbenches) rápidos
Para la mayoría de los diseños, el mapeo de puertos por nombre es preferible porque es más claro y menos propenso a errores.
Desafío
Completa la instanciación enumerando las señales en el orden correcto utilizando la asignación de puertos por orden.
Qué hacer:
Puertos del módulo (en este orden):
input en(habilitación)input [7:0] d(entrada de datos)output [7:0] q(salida de datos)
Señales a conectar:
enable_signal→ conectar aendata_input→ conectar addata_output→ conectar aq
Pruébalo tú mismo
module register (
input en,
input [7:0] d,
output [7:0] q
);
assign q = en ? d : q;
endmodule
module top (
input enable_signal,
input [7:0] data_input,
output [7:0] data_output
);
// TODO: Instanciar register con el nombre reg1 usando mapeo ORDER
// Lista las señales en el orden correcto: enable_signal, data_input, data_output
// No uses 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