Menu
Coddy logo textTech

Mappatura delle porte per ordine

Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 35 di 90.

Nella lezione precedente, hai imparato l’associazione delle porte per nome, in cui etichetti esplicitamente ogni connessione usando .port(signal). Ora vedremo il metodo alternativo: l’associazione delle porte per ordine.

Collega i segnali alle porte di un modulo in base all'ordine in cui compaiono nella definizione del modulo. Ti basta elencare i segnali tra parentesi e Verilog li abbina uno per uno.

Sintassi:

module_name instance_name (signal1, signal2, signal3);

Il primo segnale si collega alla prima porta, il secondo alla seconda e così via.

Esempio

Definizione del modulo:

module or_gate (
  input in1,      // Prima porta
  input in2,      // Seconda porta
  output result   // Terza porta
);
  assign result = in1 | in2;
endmodule

Istanziazione con mappatura delle porte in base all’ordine:

or_gate or1 (input_a, input_b, output_y);

Questo collega:

  • Primo segnale input_a → prima porta in1
  • Secondo segnale input_b → seconda porta in2
  • Terzo segnale output_y → terza porta result

L'ordine è importante

Con la mappatura delle porte in base all'ordine, la sequenza è fondamentale:

// Ordine corretto
or_gate or1 (input_a, input_b, output_y);

// Ordine errato - segnali collegati alle porte sbagliate!
or_gate or1 (input_b, input_a, output_y);
or_gate or1 (output_y, input_a, input_b);

Se confondi l'ordine, i collegamenti finiscono nelle porte sbagliate. Può essere difficile individuare il problema perché, a prima vista, il codice sembra corretto.

Assegnazione delle porte per nome vs per ordine

CaratteristicaPer nomePer ordine
Sintassi.port(signal)signal1, signal2
L'ordine è importante?NoSì
Autoesplicativo?SìNo
Rischio di erroriBassoAlto
Consigliato perLa maggior parte dei progettiSolo casi semplici

Quando usare la mappatura delle porte per ordine

La mappatura delle porte per ordine è accettabile quando:

  • Il modulo ha pochissime porte (2-3)
  • L'ordine delle porte è ovvio e difficilmente cambierà
  • Stai scrivendo testbench rapidi

Per la maggior parte dei progetti, è preferibile associare le porte per nome perché è più chiaro e meno soggetto a errori.

challenge icon

Sfida

Completa l’istanza elencando i segnali nell’ordine corretto usando la mappatura delle porte per ordine.

Cosa fare:

Porte del modulo (in quest’ordine):

  1. input en (abilitazione)
  2. input [7:0] d (ingresso dati)
  3. output [7:0] q (uscita dati)

Segnali da collegare:

  • enable_signal → collega a en
  • data_input → collega a d
  • data_output → collega a q

Provalo tu

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: Istanzia register con il nome reg1 usando la mappatura ORDER
  // Elenca i segnali nell'ordine corretto: enable_signal, data_input, data_output
  // Non usare la sintassi .port(signal)

endmodule
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Verilog online