Primitive di porte integrate
Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 39 di 90.
Verilog ha primitive di porta integrate che ti permettono di descrivere circuiti logici usando simboli di porte effettivi. Questo si chiama modellazione strutturale. Costruisci circuiti collegando porte, proprio come quando disegni uno schema.
Le primitive di porte sono parole chiave predefinite che modellano le porte logiche di base. Invece di scrivere un'espressione come assign out = a & b, istanzi una porta:
and(out, a, b); // Porta AND con uscita out e ingressi a e bSintassi generale
gate_type (output, input1, input2, ...);- Il primo argomento è sempre l’output
- Gli argomenti successivi sono gli input (1 o più, a seconda della porta)
Primitive logiche disponibili
| Tipo di porta | Parola chiave | Numero di ingressi |
|---|---|---|
| AND | and | 2 o più |
| OR | or | 2 o più |
| NOT | not | 1 |
| NAND | nand | 2 o più |
| NOR | nor | 2 o più |
| XOR | xor | 2 o più |
| XNOR | xnor | 2 o più |
Come funzionano le primitive di porta
Quando scrivi and(out, a, b), Verilog crea una porta AND che pilota continuamente out con il risultato di a & b. Ogni volta che a o b cambia, out si aggiorna immediatamente, proprio come una porta reale.
Primitive di porta vs assegnazione continua
Entrambi i metodi producono lo stesso hardware:
// Primitiva di porta logica
and(out, a, b);
// Assegnazione continua (stesso risultato)
assign out = a & b;Le primitive logiche sono utili quando vuoi descrivere un circuito come una raccolta di porte logiche (stile strutturale). L’assegnazione continua è più adatta allo stile comportamentale (espressioni).
Sfida
Cosa fare:
- Aggiungi la primitiva di porta corretta per far funzionare questo circuito. Il modulo deve fornire in uscita l'AND degli ingressi
aeb. La porta di uscita si chiama giàc.
Provalo tu
module gate_challenge (
input a,
input b,
output c
);
// TODO: aggiungi la primitiva della porta logica corretta
// L'uscita c dovrebbe essere a AND b
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