Menu
Coddy logo textTech

Negative Numbers

Parte de la sección Fundamentos del Journey de Verilog de Coddy. Lección 16 de 90.

En Verilog, los números negative se representan utilizando el formato two's complement. two's complement es una forma de representar tanto números positive como negative en binario. El bit más significativo (MSB) indica el signo:

  • 0 = número positive
  • 1 = número negative

Cómo calcular Two's complement

Para encontrar el Two's complement de un número:

  1. Escribe el número positivo en binario
  2. Invierte todos los bit (0 se convierte en 1, 1 se convierte en 0)
  3. Suma 1

Ejemplo: Representar -5 en 4 bits

PasoOperaciónResultado
1Positive 5 en binario0101
2Invertir todos los bit1010
3Sumar 11011

El complemento de two para -5 en 4 bits es <strong>4'b1011</strong>

Escribir números negativos en Verilog

Puedes escribir números negativos directamente usando el formato decimal:

reg signed [3:0] a;
a = -5;        // Verilog usa automáticamente el complemento a dos

Para los números binarios con tamaño definido, debes escribir el valor en complemento a dos:

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

Con signo frente a sin signo

De forma predeterminada, Verilog trata los números como sin signo. Para trabajar con números negativos, declara las señales como signed:

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

Rango de números con signo

Para N bits, un número con signo puede representar:

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

Notas importantes

  • Usa la palabra clave signed para habilitar el manejo de números negativos
  • Sin signed, Verilog trata todos los valores como positivos
  • La aritmética de complemento de two funciona automatically al usar signed
  • El MSB determina el signo: 1 = negative, 0 = positive
challenge icon

Desafío

Completa el código escribiendo los valores correctos de complemento de two.

Qué hacer:

  1. Establece a en -3 usando binario de complemento de two de 4 bits
  2. Establece b en -8 usando binario de complemento de two de 4 bits
  3. Establece c en -1 usando binario de complemento de two de 4 bits

Pruébalo tú mismo

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 iconPonte a prueba

Esta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.

Todas las lecciones de Fundamentos

Practica por tu cuenta: Compilador de Verilog online