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 números tanto 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 encontrar 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 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 en 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 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