Menu
Coddy logo textTech

Numeri negativi

Fa parte della sezione Fondamenti del percorso Verilog di Coddy. Lezione 16 di 90.

In Verilog, i numeri negativi sono rappresentati usando il formato in complemento a due. Il complemento a due è un modo per rappresentare numeri sia positivi sia negativi in binario. Il bit più significativo (MSB) indica il segno:

  • 0 = numero positivo
  • 1 = numero negativo

Come calcolare il complemento a due

Per trovare il complemento a due di un numero:

  1. Scrivi il numero positivo in binario
  2. Inverti tutti i bit (0 diventa 1, 1 diventa 0)
  3. Aggiungi 1

Esempio: rappresenta -5 con 4 bit

PassaggioOperazioneRisultato
15 positivo in binario0101
2Inverti tutti i bit1010
3Aggiungi 11011

-5 in complemento a due su 4 bit è <strong>4'b1011</strong>

Scrivere numeri negativi in Verilog

Puoi scrivere i numeri negativi direttamente usando il formato decimale:

reg signed [3:0] a;
a = -5;        // Verilog usa automaticamente il complemento a due

Per i numeri binari di dimensione fissa, devi scrivere il valore in complemento a due:

a = 4'b1011;   // This is -5 in 4-bit two's complement

Con segno e senza segno

Per impostazione predefinita, Verilog considera i numeri senza segno. Per usare numeri negativi, dichiara i segnali come signed:

reg signed [3:0] negative;   // Può memorizzare valori da -8 a 7
reg [3:0] positive;          // Può memorizzare valori da 0 a 15

Intervallo dei numeri con segno

Con N bit, un numero con segno può rappresentare:

  • Minimo: -2^(N-1)
  • Massimo: 2^(N-1) - 1
BitIntervallo
4 bit-8 to 7
8 bit-128 to 127
16 bit-32768 to 32767

Note importanti

  • Usa la parola chiave signed per abilitare la gestione dei numeri negativi
  • Senza signed, Verilog considera tutti i valori positivi
  • L'aritmetica in complemento a due funziona automaticamente quando si usa signed
  • Il bit più significativo determina il segno: 1 = negativo, 0 = positivo
challenge icon

Sfida

Completa il codice scrivendo i valori corretti in complemento a due.

Cosa fare:

  1. Imposta a su -3 usando la rappresentazione binaria in complemento a due su 4 bit
  2. Imposta b su -8 usando la rappresentazione binaria in complemento a due su 4 bit
  3. Imposta c su -1 usando la rappresentazione binaria in complemento a due su 4 bit

Provalo tu

module negative_challenge;
  reg signed [3:0] a, b, c;
  
  initial begin
    a = 4'b______;   // -3 in 4-bit two's complement
    b = 4'b______;   // -8 in 4-bit two's complement
    c = 4'b______;   // -1 in 4-bit two's complement
    
    $display("a = %d", a);
    $display("b = %d", b);
    $display("c = %d", c);
    $finish;
  end
endmodule
quiz iconMettiti alla prova

Questa lezione include un breve quiz. Inizia la lezione per rispondere e tenere traccia dei tuoi progressi.

Tutte le lezioni di Fondamenti

Esercitati da solo: Compilatore Verilog online