Livelli di astrazione della progettazione
Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 5 di 90.
Nella progettazione digitale, possiamo descrivere lo stesso circuito a diversi livelli di dettaglio. Verilog è un linguaggio che può descrivere circuiti a qualsiasi livello di astrazione. È questo che lo rende potente!
Questi sono i livelli:
Livello 1: comportamentale
Questo livello descrive cosa fa il circuito, non come lo fa. Si concentra sulla funzione o sul comportamento, come "contare in avanti" o "sommare due numeri".
I dettagli interni di come avvengono il conteggio o l’addizione non vengono mostrati. Questo livello è il più vicino al modo di pensare umano ed è più facile da scrivere.
Livello 2: RTL
Questo livello mostra come i dati si spostano tra i registri e quali operazioni vengono eseguite su di essi. Puoi vedere il percorso dei dati: i dati passano da un registro a un sommatore, quindi tornano al registro.
Questo è il livello a cui lavora la maggior parte dei progettisti digitali, perché offre un buon equilibrio tra comprensibilità e dettaglio sufficiente per creare hardware.
Livello 3: Livello delle porte logiche
Questo livello descrive il circuito usando porte logiche di base come AND, OR e XOR. Ogni collegamento è mostrato esplicitamente.
Questo livello è molto dettagliato e difficile da scrivere a mano. Di solito viene generato da strumenti a partire da descrizioni di livello più alto, non scritto manualmente.
Perché è importante
- **Livello più alto** = Più facile da scrivere, meno controllo
- **Livello più basso** = Più difficile da scrivere, più controllo
- **RTL** è il giusto compromesso per la maggior parte dei lavori di progettazione
Sfida
Cosa fare:
- Esegui questo codice e osserva come la stessa operazione viene descritta a tre livelli diversi:
Provalo tu
module abstraction_demo;
initial begin
$display("=== Design Abstraction Levels ===");
$display("");
$display("Level 1 (Behavioral):");
$display(" 'Add a and b' - no details how");
$display("");
$display("Level 2 (RTL):");
$display(" 'On clock edge, result <= a + b' - shows data flow");
$display("");
$display("Level 3 (Gate Level):");
$display(" 'XOR gates for sum, AND gates for carry' - actual gates");
$display("");
$finish;
end
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