Menu
Coddy logo textTech

Port Mapping By Order

Teil des Abschnitts Grundlagen der Verilog-Journey von Coddy. Lektion 35 von 90.

In der vorherigen Lektion hast du port mapping nach Namen kennengelernt, bei dem du jede Verbindung ausdrücklich mit .port(signal) beschriftest. Nun behandeln wir die alternative Methode: port mapping nach order.

Es verbindet Signale mit den Ports eines Moduls basierend auf der order, in der sie in der Moduldefinition erscheinen. Du listest die Signale einfach in Klammern auf, und Verilog ordnet sie nacheinander zu.

Syntax:

module_name instance_name (signal1, signal2, signal3);

Das erste Signal wird mit dem ersten Port verbunden, das zweite mit dem zweiten Port und so weiter.

Beispiel

Moduldefinition:

module or_gate (
  input in1,      // Erster Port
  input in2,      // Zweiter Port
  output result   // Dritter Port
);
  assign result = in1 | in2;
endmodule

Instanziierung mit Portzuordnung nach Reihenfolge:

or_gate or1 (input_a, input_b, output_y);

Dies verbindet:

  • Erstes Signal input_a → erster Port in1
  • Zweites Signal input_b → zweiter Port in2
  • Drittes Signal output_y → dritter Port result

Die Reihenfolge ist wichtig

Bei der Portzuordnung nach Reihenfolge ist die Abfolge entscheidend:

// Richtige Reihenfolge
or_gate or1 (input_a, input_b, output_y);

// Falsche Reihenfolge - Signale mit falschen Ports verbunden!
or_gate or1 (input_b, input_a, output_y);
or_gate or1 (output_y, input_a, input_b);

Wenn du die Reihenfolge durcheinanderbringst, werden die Verbindungen mit den falschen Ports hergestellt. Das kann schwer zu debuggen sein, weil der Code auf den ersten Blick korrekt aussieht.

Portzuordnung nach Namen vs. nach Reihenfolge

MerkmalNach NamenNach Reihenfolge
Syntax.port(signal)signal1, signal2
Spielt die Reihenfolge eine Rolle?NeinJa
Selbstdokumentierend?JaNein
FehlerrisikoNiedrigHoch
Empfohlen fürDie meisten DesignsNur einfache Fälle

Wann die Portzuordnung nach Reihenfolge verwendet wird

Die Portzuordnung nach Reihenfolge ist akzeptabel, wenn:

  • Das Modul sehr wenige Ports (2–3) hat
  • Die Reihenfolge der Ports offensichtlich ist und sich wahrscheinlich nicht ändert
  • Du schnelle Testbenches schreibst

Für die meisten Designs wird die Portzuordnung nach Namen bevorzugt, weil sie klarer und weniger fehleranfällig ist.

challenge icon

Aufgabe

Vervollständige die Instanziierung, indem du die Signale in der richtigen Reihenfolge mithilfe der Portzuordnung nach Reihenfolge auflistest.

Aufgabe:

Modul-Ports (in dieser Reihenfolge):

  1. input en (Aktivierung)
  2. input [7:0] d (Dateneingang)
  3. output [7:0] q (Datenausgang)

Zu verbindende Signale:

  • enable_signal → mit en verbinden
  • data_input → mit d verbinden
  • data_output → mit q verbinden

Probier es selbst

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: Instantiiere register mit dem Namen reg1 unter Verwendung von ORDER-Mapping
  // Liste die Signale in der richtigen Reihenfolge auf: enable_signal, data_input, data_output
  // Verwende nicht die .port(signal)-Syntax

endmodule
quiz iconTeste dich selbst

Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.

Alle Lektionen in Grundlagen

Übe selbstständig: Online-Verilog-Compiler