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;
endmoduleIstanziazione con mappatura delle porte in base all’ordine:
or_gate or1 (input_a, input_b, output_y);Questo collega:
- Primo segnale
input_a→ prima portain1 - Secondo segnale
input_b→ seconda portain2 - Terzo segnale
output_y→ terza portaresult
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
| Caratteristica | Per nome | Per ordine |
|---|---|---|
| Sintassi | .port(signal) | signal1, signal2 |
| L'ordine è importante? | No | Sì |
| Autoesplicativo? | Sì | No |
| Rischio di errori | Basso | Alto |
| Consigliato per | La maggior parte dei progetti | Solo 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.
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):
input en(abilitazione)input [7:0] d(ingresso dati)output [7:0] q(uscita dati)
Segnali da collegare:
enable_signal→ collega aendata_input→ collega addata_output→ collega aq
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)
endmoduleQuesta lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.
Tutte le lezioni di Fondamenti
1Introduzione
Cos'è VerilogHardware e software a confrontoIl tuo primo moduloCommentiLivelli di astrazione della progettazione4Operatori - Parte 1
Operatori aritmeticiOperatore moduloOperatori di confrontoRiepilogo - Matematica sempliceOperatori bitwise7Assegnazioni e porte
Assegnazione continuaAssegnazioni con operatoriPrimitive di porte integratePorte AND, OR e NOTPorte XOR e XNORRiepilogo: circuito con porte logiche10Decisioni
Istruzione ifIf-ElseRiepilogo - Comparatore sempliceIstruzione caseCasex e casezRiepilogo - Progettazione di una ALU5Operatori Parte 2
Operatori logiciOperatori di riduzioneOperatori di scorrimentoOperatore di concatenazioneOperatore condizionaleRiepilogo - Sfida sugli operatori3Sistema numerico
Rappresentazione binariaNumeri con dimensione specificataNumeri senza dimensione specificataNumeri negativiValori speciali X e ZRiepilogo - Formati numerici6Moduli
Struttura di un moduloPorte di input e outputPorte InoutIstanziazione di un moduloMappatura delle porte per nomeMappatura delle porte per ordineRiepilogo - Costruire un modulo9Blocchi procedurali
Blocco alwaysBlocco initialLista di sensibilitàAssegnazione bloccanteAssegnazione non bloccanteRiepilogo: always vs initial12Progetto Multiplexer
Progettazione di un mux da 2 a 1Progettazione di un mux da 4 a 1Esercitati da solo: Compilatore Verilog online