Menu
Coddy logo textTech

Port-Mapping nach Reihenfolge

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

In der vorherigen Lektion haben Sie etwas über port mapping by name gelernt, bei dem Sie jede Verbindung explizit mit .port(signal) kennzeichnen. Nun behandeln wir die alternative Methode: port mapping by order.

Es verbindet Signale mit den Ports eines Moduls basierend auf der Reihenfolge (order), in der sie in der Moduldefinition erscheinen. Sie listen die Signale einfach in Klammern auf, und Verilog weist sie nacheinander zu.

Syntax:

module_name instance_name (signal1, signal2, signal3);

Das erste signal verbindet sich mit dem ersten port, 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 Port-Mapping 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

Reihenfolge ist wichtig

Bei der Port-Verknüpfung nach Reihenfolge ist die Sequenz 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 Sie die Reihenfolge verwechseln, gehen die Verbindungen zu den falschen Anschlüssen. Dies kann schwer zu debuggen sein, da der Code auf den ersten Blick richtig aussieht.

Port Mapping By Name vs By Order

MerkmalBy NameBy Order
Syntax.port(signal)signal1, signal2
Reihenfolge wichtig?NeinJa
Selbstdokumentierend?JaNein
FehlerrisikoNiedrigHoch
Empfohlen fürDie meisten DesignsNur einfache Fälle

Wann Port-Mapping nach Reihenfolge verwendet werden sollte

Port-Mapping nach Reihenfolge ist akzeptabel, wenn:

  • Das Modul nur sehr wenige Ports hat (2-3)
  • Die Reihenfolge der Ports offensichtlich ist und sich wahrscheinlich nicht ändert
  • Sie schnelle Testbenches schreiben

Für die meisten Designs wird Port-Mapping nach Name bevorzugt, da es übersichtlicher und weniger fehleranfällig ist.

challenge icon

Aufgabe

Vervollständige die Instanziierung, indem du die Signale in der richtigen Reihenfolge unter Verwendung von Port-Mapping nach Reihenfolge (port mapping by order) auflistest.

Was zu tun ist:

Modul-Ports (in dieser Reihenfolge):

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

Zu verbindende Signale:

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

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: Instanziere register mit 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