Asignación 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 veremos el método alternativo: mapeo de puertos por orden.
Conecta las señales a los puertos de un módulo según 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 asignación 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 la asignación de puertos por orden, la secuencia es fundamental:
// 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 van a los puertos equivocados. Esto puede ser difícil de depurar porque el código parece correcto a primera vista.
Asignación de puertos por nombre frente a por orden
| Característica | Por nombre | Por orden |
|---|---|---|
| Sintaxis | .port(signal) | signal1, signal2 |
| ¿Importa el orden? | No | Sí |
| ¿Se documenta por sí mismo? | Sí | No |
| Riesgo de errores | Bajo | Alto |
| Recomendado para | La mayoría de los diseños | Solo casos simples |
Cuándo usar la asignación de puertos por orden
La asignación 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 rápidos
Para la mayoría de los diseños, se prefiere la asignación de puertos por nombre porque es más clara y menos propensa a errores.
Desafío
Completa la instanciación enumerando las señales en el orden correcto mediante 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 que se conectarán:
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: Instancia 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 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