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;
endmoduleInstantiation avec mappage des ports par ordre :
or_gate or1 (input_a, input_b, output_y);Cela connecte :
- Premier signal
input_a→ premier portin1 - Deuxième signal
input_b→ deuxième portin2 - Troisième signal
output_y→ troisième portresult
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 nom | Par ordre |
|---|---|---|
| Syntaxe | .port(signal) | signal1, signal2 |
| L’ordre est-il important ? | Non | Oui |
| Auto-documenté ? | Oui | Non |
| Risque d’erreurs | Faible | Élevé |
| Recommandé pour | La plupart des conceptions | Les 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.
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) :
input en(activation)input [7:0] d(entrée de données)output [7:0] q(sortie de données)
Signaux à connecter :
enable_signal→ connecter àendata_input→ connecter àddata_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)
endmoduleCette leçon comprend un petit quiz. Commencez la leçon pour y répondre et suivre votre progression.
Toutes les leçons de Fondamentaux
1Introduction
Qu’est-ce que VerilogMatériel vs logicielVotre premier moduleCommentairesNiveaux d’abstraction de conception4Operators Part 1
Arithmetic OperatorsModulo OperatorComparison OperatorsRecap - Simple MathBitwise Operators7Assign And Gates
Continuous AssignmentAssign With OperatorsBuilt In Gate PrimitivesAND OR NOT GatesXOR XNOR GatesRecap - Logic Gate Circuit10Decision Making
If StatementIf - ElseRecap - Simple ComparatorCase StatementCasex And CasezRecap - ALU Design5Operators Part 2
Logical OperatorsReduction OperatorsShift OperatorsConcatenation OperatorConditional OperatorRecap - Operator Challenge3Number System
Binary RepresentationSized NumbersUnsized NumbersNegative NumbersSpecial Values X And ZRecap - Number Formats6Modules
Module StructureInput And Output PortsInout PortsModule InstantiationPort Mapping By NamePort Mapping By OrderRecap - Build A Module9Procedural Blocks
Always BlockInitial BlockSensitivity ListBlocking AssignmentNon Blocking AssignmentRecap - Always vs Initial15Traffic Light Controller
Defining The StatesState Machine LogicEntraînez-vous par vous-même : Compilateur Verilog en ligne