Menu
Coddy logo textTech

Números Negativos

Parte da seção Fundamentos do Journey de Verilog da Coddy — lição 16 de 90.

Em Verilog, números negativos são representados usando o formato de complemento de dois. O complemento de dois é uma forma de representar números positivos e negativos em binário. O bit mais significativo (MSB) indica o sinal:

  • 0 = número positivo
  • 1 = número negativo

Como Calcular o Complemento de Dois

Para encontrar o complemento de dois de um número:

  1. Escreva o número positivo em binário
  2. Inverta todos os bits (0 torna-se 1, 1 torna-se 0)
  3. Adicione 1

Exemplo: Representar -5 em 4 bits

EtapaOperaçãoResultado
15 positivo em binário0101
2Inverter todos os bits1010
3Adicionar 11011

-5 em complemento de dois de 4 bits é <strong>4'b1011</strong>

Escrevendo Números Negativos em Verilog

Você pode escrever números negativos diretamente usando o formato decimal:

reg signed [3:0] a;
a = -5;        // Verilog usa automaticamente o complemento de dois

Para números binários com tamanho, você deve escrever o valor em complemento de dois:

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

Signed vs Unsigned

Por padrão, o Verilog trata números como unsigned. Para trabalhar com números negativos, declare sinais como signed:

reg signed [3:0] negative;   // Pode armazenar de -8 a 7
reg [3:0] positive;          // Pode armazenar de 0 a 15

Intervalo de Números Sinalizados

Para N bits, um número signed pode representar:

  • Mínimo: -2^(N-1)
  • Máximo: 2^(N-1) - 1
BitsRange
4 bits-8 a 7
8 bits-128 a 127
16 bits-32768 a 32767

Notas Importantes

  • Use a palavra-chave signed para habilitar o suporte a números negativos
  • Sem o signed, o Verilog trata todos os valores como positivos
  • A aritmética de complemento de dois funciona automatically ao usar signed
  • O MSB determina o sinal: 1 = negative, 0 = positive
challenge icon

Desafio

Complete o código escrevendo os valores corretos em complemento de dois.

O que fazer:

  1. Defina a como -3 usando binário de 4 bits em complemento de dois
  2. Defina b como -8 usando binário de 4 bits em complemento de dois
  3. Defina c como -1 usando binário de 4 bits em complemento de dois

Experimente você mesmo

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 iconTeste seus conhecimentos

Esta lição inclui um quiz rápido. Comece a lição para respondê-lo e acompanhar seu progresso.

Todas as lições de Fundamentos