Menu
Coddy logo textTech

Port Mapping By Order

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 order en que aparecen en la definición del módulo. Simplemente enumeras las señales entre paréntesis y Verilog las empareja una por una.

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;
endmodule

Instanciación con asignación de puertos por orden:

or_gate or1 (input_a, input_b, output_y);

Esto conecta:

  • First señal input_a → primer port in1
  • Second señal input_b → segundo port in2
  • Third señal output_y → tercer port result

El orden importa

Con el mapping de port 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 order, las conexiones van a los puertos wrong. Esto puede ser difícil de depurar porque el código parece correct a primera vista.

Mapeo de puertos por nombre frente a por orden

CaracterísticaPor nombrePor orden
syntax.port(signal)signal1, signal2
¿Importa el orden?No
¿Se explica por sí mismo?No
Riesgo de erroresBajoAlto
Recomendado paraLa mayoría de los diseñosSolo casos sencillos

Cuándo usar el mapping de ports por ORDER

El mapping de ports por ORDER es aceptable cuando:

  • El module tiene muy pocos ports (2-3)
  • El ORDER de los ports 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.

challenge icon

Desafío

Completa la instanciación enumerando las señales en el correct order mediante el mapeo de puertos por orden.

Qué hacer:

Puertos del módulo (en este orden):

  1. input en (habilitación)
  2. input [7:0] d (entrada de datos)
  3. output [7:0] q (salida de datos)

Señales que se conectarán:

  • enable_signal → conectar a en
  • data_input → conectar a d
  • data_output → conectar a q

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)

endmodule
quiz iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Compilador de Verilog online