Input And Output Ports
Fait partie de la section Fondamentaux du Journey Verilog de Coddy. Leçon 31 sur 90.
Les ports d’entrée et de sortie sont les connexions qui permettent à un module de communiquer avec le monde extérieur. Ils sont comme les broches d’une puce. Les ports constituent l’interface entre un module et le reste de la conception.
Chaque module possède :
- Ports d’entrée : signaux qui arrivent dans le module
- Ports de sortie : signaux qui sortent du module
Input Ports
Input ports reçoivent des données de l’extérieur. Ils ne peuvent pas être modifiés à l’intérieur du module : only read.
input clk; // Entrée monobit
input [7:0] data; // Vecteur d'entrée de 8 bits
input a, b; // Plusieurs entrées sur une ligneRègles pour les inputs :
- Impossible de leur affecter une valeur à l’intérieur du module
- Impossible de les déclarer comme
reg - Toujours
wire(par défaut)
Ports de sortie
Les ports de sortie envoient des données vers l'extérieur. Ils peuvent être pilotés par des blocs assign ou always.
output out; // Sortie monobit
output [3:0] result; // Sortie 4 bits
output reg busy; // La sortie peut être reg
output wire ready; // La sortie peut être wireRègles pour les sorties :
- Peut être
wire(avecassign) oureg(avecalways) - Doit être pilotée par quelque chose à l’intérieur du module
Syntaxe de déclaration des ports
La syntaxe de déclaration des ports est la manière précise dont vous écrivez les ports d’entrée et de sortie dans un module. Elle indique à Verilog trois choses concernant chaque port :
- Direction : s’agit-il de input, output ou inout ?
- Taille : sur combien de bits s’étend-il ?
- Nom : comment est-il appelé ?
module example (
input [7:0] data_in, // Vecteur d'entrée
input clk, // Entrée unique
input enable, // Entrée unique
output reg [7:0] out, // Sortie reg
output busy // Sortie wire
);Pourquoi le sens des ports est important
Le sens indique à Verilog :
- Quels signaux le module can read (entrées)
- Quels signaux le module can write (sorties)
- Quels types de connexions sont autorisés
Utiliser une direction incorrecte provoque des erreurs de compilation.
Exemple de code
module port_demo (
input [3:0] a, // Peut seulement lire
input [3:0] b, // Peut seulement lire
output reg [3:0] sum, // Peut écrire (reg)
output [3:0] diff // Peut écrire (wire)
);
always @(*) begin
sum = a + b; // Écriture vers la sortie reg
end
assign diff = a - b; // Écriture vers la sortie wire
endmoduleDéfi
Compléter les déclarations des ports
À faire :
- Ajouter une entrée de 8 bits appelée
data_in - Ajouter une entrée d’un seul bit appelée
clk - Ajouter une sortie de 4 bits appelée
result(utiliser reg : sera affectée dans le bloc always) - Ajouter une sortie d’un seul bit appelée
valid(utiliser wire : sera affectée avec assign)
Essayez vous-même
module port_challenge (
// Tâche 1 : Ajouter une entrée 8 bits appelée data_in
// Tâche 2 : Ajouter une entrée d'un seul bit appelée clk
// Tâche 3 : Ajouter une sortie 4 bits appelée result (utiliser reg)
// Tâche 4 : Ajouter une sortie d'un seul bit appelée valid (utiliser wire)
);
reg [3:0] counter;
always @(posedge clk) begin
counter <= counter + 1;
result <= counter;
end
assign valid = (counter > 8);
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