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:
- Escribe el número positivo en binario
- Invierte todos los bits (0 se convierte en 1, 1 se convierte en 0)
- Suma 1
Ejemplo: Representar -5 en 4 bits
| Paso | Operación | Resultado |
|---|---|---|
| 1 | 5 positivo en binario | 0101 |
| 2 | Invertir todos los bits | 1010 |
| 3 | Sumar 1 | 1011 |
-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 dosPara 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 bitsCon 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 15Rango 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
| Bits | Rango |
|---|---|
| 4 bits | -8 a 7 |
| 8 bits | -128 a 127 |
| 16 bits | -32768 a 32767 |
Notas importantes
- Utilice la palabra clave
signedpara 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
Desafío
Completa el código escribiendo los valores correctos en complemento a dos.
Qué hacer:
- Establece
aa -3 usando binario en complemento a dos de 4 bits - Establece
ba -8 usando binario en complemento a dos de 4 bits - Establece
ca -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:
- Escribir el número positivo en binario
- Invertir todos los bits
- Sumar 1
Ejemplo: -5 en 4 bits → 0101 → 1010 → 1011 = 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 15Asigne 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 bitsRango 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
endmoduleEsta lección incluye un breve cuestionario. Empieza la lección para responderlo y registrar tu progreso.
Todas las lecciones de Fundamentos
1Introducción
¿Qué es Verilog?Hardware vs SoftwareNiveles de abstracción de diseñoTu primer móduloComentarios4Operadores Parte 1
Operadores aritméticosOperador de móduloOperadores de comparaciónRepaso - Matemáticas simplesOperadores bit a bit7Asignación y Compuertas
Asignación ContinuaAsignación con OperadoresPrimitivas de Compuertas IntegradasCompuertas AND OR NOTCompuertas XOR XNORResumen - Circuito de Compuertas Lógicas10Toma de decisiones
Sentencia IfIf - ElseRepaso - Comparador simpleSentencia CaseCasex y CasezRepaso - Diseño de ALU5Operadores Parte 2
Operadores lógicosOperadores de reducciónOperadores de desplazamientoOperador de concatenaciónOperador condicionalResumen - Desafío de operadores3Sistema de numeración
Representación binariaNúmeros con tamaño definidoNúmeros sin tamaño definidoNúmeros negativosValores especiales X y ZResumen - Formatos de números6Módulos
Estructura del móduloPuertos de entrada y salidaPuertos InoutInstanciación de módulosMapeo de puertos por nombreMapeo de puertos por ordenResumen: Construye un módulo