Menu
Coddy logo textTech

Números negativos

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

En Verilog, los números negativos se representan utilizando el formato de complemento a dos. El complemento a dos es una forma de representar tanto números positivos como negativos en binario. El bit más significativo (MSB) indica el signo:

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

Cómo calcular el complemento a dos

Para hallar el complemento a dos de un número:

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

Ejemplo: Representar -5 en 4 bits

PasoOperaciónResultado
15 positivo en binario0101
2Invertir todos los bits1010
3Sumar 11011

-5 en complemento a dos de 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 utiliza automáticamente el complemento a dos

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

a = 4'b1011;   // Esto es -5 en complemento a dos de 4 bits

Con signo vs Sin signo

Por defecto, Verilog trata los números como sin signo (unsigned). Para trabajar con números negativos, declare 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

  • Utilice 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 a dos funciona automáticamente al usar signed
  • El MSB determina el signo: 1 = negativo, 0 = positivo
challenge icon

Desafío

Completa el código escribiendo los valores correctos en complemento a dos.

Qué hacer:

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

Hoja de referencia

En Verilog, los números negativos utilizan el formato de complemento a dos. El MSB (bit más significativo) indica el signo: 0 = positivo, 1 = negativo.

Cálculo del complemento a dos:

  1. Escribir el número positivo en binario
  2. Invertir todos los bits
  3. Sumar 1

Ejemplo: -5 en 4 bits → 010110101011 = 4'b1011

Declare las señales como signed para manejar números negativos:

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

Asigne valores negativos directamente o mediante binario en complemento a dos:

reg signed [3:0] a;
a = -5;        // Verilog utiliza automáticamente el complemento a dos
a = 4'b1011;   // Equivalente: -5 en complemento a dos de 4 bits

Rango para N bits con signo: -2^(N-1) a 2^(N-1) - 1 (por ejemplo, 4 bits: -8 a 7).

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