Input And Output Ports
Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 31 von 90.
Input- und output-Ports sind die Verbindungen, die es einem module ermöglichen, mit der Außenwelt zu kommunizieren. Sie sind wie die Pins auf einem Chip. Ports sind die Schnittstelle zwischen einem module und dem Rest des Designs.
Jedes module hat:
- Input ports: Signale, die in das module hineinkommen
- Output ports: Signale, die aus dem module herausgehen
Input-Ports
Input-Ports empfangen Daten von außerhalb. Sie können innerhalb des Moduls nicht geändert werden: nur gelesen.
input clk; // Ein-Bit-Eingang
input [7:0] data; // 8-Bit-Eingangsvektor
input a, b; // Mehrere Eingänge in einer ZeileRegeln für inputs:
- Kann innerhalb des module kein Wert zugewiesen werden
- Kann nicht als
regdeklariert werden - Immer
wire(standardmäßig)
Ausgangsports
Ausgangsports senden Daten nach außen. Sie können durch assign- oder always-Blöcke angesteuert werden.
output out; // Ein-Bit-Ausgang
output [3:0] result; // 4-Bit-Ausgang
output reg busy; // Ausgang kann reg sein
output wire ready; // Ausgang kann wire seinRegeln für Ausgänge:
- Kann
wire(mitassign) oderreg(mitalways) sein - Muss von etwas innerhalb des Moduls gesteuert werden
Syntax für Portdeklarationen
Die Syntax für Portdeklarationen ist die spezifische Schreibweise für input- und output-Ports in einem module. Sie teilt Verilog drei Dinge über jeden Port mit:
- Richtung: Ist es input, output oder inout?
- Größe: Wie viele Bits breit ist es?
- Name: Wie wird es called?
module example (
input [7:0] data_in, // Eingabevektor
input clk, // Einzelner Eingang
input enable, // Einzelner Eingang
output reg [7:0] out, // Ausgabe-reg
output busy // Ausgabe-wire
);Warum die Port-Richtung wichtig ist
Die Richtung teilt Verilog Folgendes mit:
- Welche Signale das Modul read kann (inputs)
- Welche Signale das Modul write kann (outputs)
- Welche Arten von Verbindungen zulässig sind
Die Verwendung der falschen Richtung verursacht Kompilierungsfehler.
Codebeispiel
module port_demo (
input [3:0] a, // Kann nur gelesen werden
input [3:0] b, // Kann nur gelesen werden
output reg [3:0] sum, // Kann schreiben (reg)
output [3:0] diff // Kann schreiben (wire)
);
always @(*) begin
sum = a + b; // Schreiben in output reg
end
assign diff = a - b; // Schreiben in output wire
endmoduleAufgabe
Portdeklarationen vervollständigen
Was zu tun ist:
- Add einen 8-Bit-input namens
data_inhinzu - Add einen single-Bit-input namens
clkhinzu - Add einen 4-Bit-output namens
resulthinzu (reg verwenden: wird im always-Block zugewiesen) - Add einen single-Bit-output namens
validhinzu (wire verwenden: wird mit assign zugewiesen)
Probier es selbst
module port_challenge (
// Aufgabe 1: Füge einen 8-Bit-Eingang namens data_in hinzu
// Aufgabe 2: Füge einen 1-Bit-Eingang namens clk hinzu
// Aufgabe 3: Füge einen 4-Bit-Ausgang namens result hinzu (verwende reg)
// Aufgabe 4: Füge einen 1-Bit-Ausgang namens valid hinzu (verwende wire)
);
reg [3:0] counter;
always @(posedge clk) begin
counter <= counter + 1;
result <= counter;
end
assign valid = (counter > 8);
endmoduleDiese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Grundlagen
1Einführung
Was ist VerilogHardware vs. SoftwareIhr erstes ModulKommentareAbstraktionsebenen des Designs4Operators 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 LogicÜbe selbstständig: Online-Verilog-Compiler