Menu
Coddy logo textTech

Port Mapping By Order

Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 35 sur 90.

Dans la leçon précédente, tu as découvert le mappage des ports par nom, où tu étiquettes explicitement chaque connexion à l’aide de .port(signal). Nous allons maintenant voir la méthode alternative : le mappage des ports par ordre.

Il connecte les signaux aux ports d’un module en fonction de l’order dans lequel ils apparaissent dans la définition du module. Il suffit de lister les signaux entre parenthèses, et Verilog les associe un par un.

Syntaxe :

module_name instance_name (signal1, signal2, signal3);

Le premier signal se connecte au premier port, le deuxième au deuxième port, et ainsi de suite.

Exemple

Définition du module :

module or_gate (
  input in1,      // Premier port
  input in2,      // Deuxième port
  output result   // Troisième port
);
  assign result = in1 | in2;
endmodule

Instantiation avec mappage des ports par ordre :

or_gate or1 (input_a, input_b, output_y);

Cela connecte :

  • Premier signal input_a → premier port in1
  • Deuxième signal input_b → deuxième port in2
  • Troisième signal output_y → troisième port result

L’ordre compte

Avec le mapping des ports par ordre, la séquence est essentielle :

// Ordre correct
or_gate or1 (input_a, input_b, output_y);

// Mauvais ordre - signaux connectés aux mauvais ports !
or_gate or1 (input_b, input_a, output_y);
or_gate or1 (output_y, input_a, input_b);

Si tu mélanges l’ordre, les connexions sont attribuées aux mauvais ports. Cela peut être difficile à déboguer, car le code semble correct au premier coup d’œil.

Association des ports par nom ou par ordre

FonctionnalitéPar nomPar ordre
Syntaxe.port(signal)signal1, signal2
L’ordre est-il important ?NonOui
Auto-documenté ?OuiNon
Risque d’erreursFaibleÉlevé
Recommandé pourLa plupart des conceptionsLes cas simples uniquement

Quand utiliser le mappage des ports par ordre

Le mappage des ports par ordre est acceptable lorsque :

  • Le module possède très peu de ports (2-3)
  • L’ordre des ports est évident et peu susceptible de changer
  • Vous écrivez des bancs de test rapides

Pour la plupart des conceptions, le mappage des ports par nom est préférable, car il est plus clair et présente moins de risques d’erreur.

challenge icon

Défi

Terminez l’instanciation en listant les signaux dans le bon ordre à l’aide de la mise en correspondance des ports par ordre.

À faire :

Ports du module (dans cet ordre) :

  1. input en (activation)
  2. input [7:0] d (entrée de données)
  3. output [7:0] q (sortie de données)

Signaux à connecter :

  • enable_signal → connecter à en
  • data_input → connecter à d
  • data_output → connecter à q

Essayez vous-même

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: Instancier register avec le nom reg1 en utilisant le mapping ORDER
  // Lister les signaux dans le bon ordre : enable_signal, data_input, data_output
  // Ne pas utiliser la syntaxe .port(signal)

endmodule
quiz iconTestez-vous

Cette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.

Toutes les leçons de Fondamentaux

Entraînez-vous par vous-même : Compilateur Verilog en ligne