Interi e reali
Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 8 di 90.
Oltre a wire e reg, Verilog ha altri tipi di dati per i numeri con scopi diversi.
Intero
integer è una variabile generica per contare e fare calcoli.
- La dimensione predefinita è di 32 bit
- Con segno (può memorizzare numeri negativi)
- Usato principalmente nei testbench e nei cicli for
Dichiarare un intero:
integer i; // Variabile con segno a 32 bit
integer count; // Può memorizzare numeri negativiUsare integer:
integer i;
initial begin
i = 0; // Inizia da 0
i = i + 1; // Incrementa
i = -5; // Può contenere valori negativi
$display("i = %d", i); // Stampa: i = -5
endReale
real si usa per i numeri in virgola mobile (numeri con decimali).
- Memorizza valori frazionari
- Utilizzato nei testbench per i calcoli
- Non può essere sintetizzato in hardware
Dichiarare un reale:
real pi; // Variabile in virgola mobile
real voltage;Utilizzo di real:
real pi;
initial begin
pi = 3.14159; // Valore decimale
pi = 22.0 / 7.0; // Risultato della divisione
$display("pi = %f", pi); // Stampa: pi = 3.142857
endDove usarli
Nei testbench: Gli interi e i numeri reali sono comunemente usati per i contatori dei cicli, i calcoli e la verifica dei valori attesi. Rendono il codice di test più facile da scrivere e comprendere.
In hardware: Questi tipi di solito non sono sintetizzabili, ovvero non possono essere trasformati in circuiti reali. Per l’hardware destinato a un FPGA o a un chip, usa invece reg e wire.
Sfida
Completa il codice per far funzionare il testbench.
Cosa fare:
- Dichiara un intero chiamato i (per il contatore del ciclo)
- Dichiara un numero reale chiamato value (per il calcolo)
Provalo tu
module test;
// Dichiara un intero chiamato i
// Dichiara un numero reale chiamato value
initial begin
i = 7;
value = i * 0.5;
$display("i = %0d, value = %f", i, value);
$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