Association des ports par ordre
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’ordre 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 mappage 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 conception4Opérateurs - Partie 1
Opérateurs arithmétiquesOpérateur moduloOpérateurs de comparaisonRécapitulatif - Mathématiques simplesOpérateurs bit à bit7Affectations et portes
Affectation continueAffectation avec opérateursPrimitives de portes intégréesPortes AND, OR et NOTPortes XOR et XNORRécapitulatif - Circuit de portes logiques10Prise de décision
Instruction IfIf - ElseRécapitulatif - Comparateur simpleInstruction CaseCasex et CasezRécapitulatif - Conception d'une ALU2Types de données
Type wireType regEntiers et réelsVecteursTableauxParamètresRécapitulatif - Déclarer des signaux5Opérateurs - Partie 2
Opérateurs logiquesOpérateurs de réductionOpérateurs de décalageOpérateur de concaténationOpérateur conditionnelRécapitulatif - Défi sur les opérateurs11Boucles
Boucle ForBoucle WhileBoucle RepeatBoucle ForeverInstruction DisableRécapitulatif - Modèles de boucles3Système de numération
Représentation binaireNombres dimensionnésNombres non dimensionnésNombres négatifsValeurs spéciales X et ZRécapitulatif - Formats des nombres6Modules
Structure d’un modulePorts d’entrée et de sortiePorts InoutInstantiation d’un moduleAssociation des ports par nomAssociation des ports par ordreRécapitulatif - Construire un module9Blocs procéduraux
Bloc alwaysBloc initialListe de sensibilitéAffectation bloquanteAffectation non bloquanteRécapitulatif - always vs initial12Projet de multiplexeur
Conception d’un multiplexeur 2 vers 1Conception d’un multiplexeur 4 vers 115Contrôleur de feux de circulation
Définition des étatsLogique de la machine à étatsEntraînez-vous par vous-même : Compilateur Verilog en ligne