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 el mapeo de puertos por nombre, donde etiquetas explícitamente cada conexión usando .port(signal). Ahora cubriremos el método alternativo: mapeo de puertos por orden.
Conecta señales a los puertos de un módulo basándose en el orden en que aparecen en la definición del módulo. Simplemente enumeras las señales entre paréntesis, y Verilog las hace coincidir una por una.
Sintaxis:
module_name instance_name (signal1, signal2, signal3);La primera señal se conecta al primer puerto, la segunda al segundo puerto, 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 orden, las conexiones irán a los puertos incorrectos. Esto puede ser difícil de depurar porque el código parece correcto a primera vista.
Mapeo de puertos por nombre vs. por orden
| Característica | Por nombre | Por orden |
|---|---|---|
| Sintaxis | .port(signal) | signal1, signal2 |
| ¿Importa el orden? | 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á escribiendo bancos de pruebas (testbenches) rápidos
Para la mayoría de los diseños, se prefiere el mapeo de puertos por nombre 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 el mapeo 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
Hoja de referencia
El mapeo de puertos por orden conecta señales basándose en su posición, coincidiendo con el orden de definición de los puertos del módulo:
module_name instance_name (signal1, signal2, signal3);Ejemplo con un módulo or_gate (puertos: in1, in2, result):
or_gate or1 (input_a, input_b, output_y);El orden es crítico — intercambiar las señales provoca conexiones incorrectas que son difíciles de depurar.
| Característica | Por Nombre | Por Orden |
|---|---|---|
| Sintaxis | .port(signal) | signal1, signal2 |
| ¿El orden importa? | No | Sí |
| Riesgo de errores | Bajo | Alto |
| Recomendado para | La mayoría de los diseños | Solo puertos simples/escasos |
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 el registro con el nombre reg1 usando mapeo por ORDEN
// Listar las señales en el orden correcto: enable_signal, data_input, data_output
// 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