Numeri con dimensione specificata
Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 14 di 90.
Esiste un modo per dichiarare un numero con una dimensione specifica in Verilog. Si chiama numero con dimensione specificata. È utile perché evita confusione sul numero di bit del numero e garantisce che l’hardware si comporti esattamente come previsto.
Un numero con dimensione specificata segue questo formato: [bits]'[format][value]
<strong>bits</strong>: il numero di bit (per esempio,8)<strong>'</strong>: un apostrofo che separa la dimensione dal formato (obbligatorio)
<strong>format</strong>: la base del numero:bper il binario,dper il decimale,hper l'esadecimale oppureoper l'ottale<strong>value</strong>: il numero effettivo (per esempio,1010)
Per esempio:
4'b1010: 4 bit, binario 1010 (decimale 10)8'd255: 8 bit, decimale 255 (binario 11111111)16'hFF: 16 bit, esadecimale FF (binario 0000000011111111)3'b1: 3 bit, binario 001 (i bit a sinistra sono riempiti con zeri)
Esempio di codice:
reg [7:0] data;
data = 8'b10101010; // 8 bits, binary 10101010
data = 8'd170; // 8 bit, decimale 170
data = 8'hAA; // 8 bits, hex AATutti e tre gli esempi assegnano lo stesso valore a data.
Perché la dimensione è importante
Senza dimensione:
reg [7:0] data;
data = 1; // Che cosa significa? 1 bit? 8 bit?Verilog presume che i numeri piccoli siano di 32 bit per impostazione predefinita, il che può causare problemi.
Con dimensione:
reg [7:0] data;
data = 8'b00000001; // Clear: 8-bit value 1Riempimento con zeri
Quando assegni un valore più piccolo a un vettore più grande, Verilog riempie i bit a sinistra con degli zeri:
reg [7:0] data;
data = 4'b1010; // Becomes 8'b00001010Sfida
Completa il codice scrivendo i numeri della dimensione corretta.
Cosa fare:
- Imposta
asu un numero binario a 8 bit corrispondente al decimale 170 (binario 10101010) - Imposta
bsu un numero binario a 4 bit corrispondente al decimale 12 (binario 1100) - Imposta
csu un numero esadecimale a 16 bit corrispondente al decimale 255 (esadecimale FF)
Provalo tu
module sized_challenge;
reg [7:0] a;
reg [3:0] b;
reg [15:0] c;
initial begin
a = ______; // binario de 8 bits para 170 (10101010)
b = ______; // binario de 4 bits para 12 (1100)
c = ______; // hexadecimal de 16 bits para 255 (FF)
$display("a = %b", a);
$display("b = %b", b);
$display("c = %h", c);
$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