Saltar al contenido

Imprimiendo el valor entero con signo almacenado en una variable de tipo reg

Si encuentras algún problema en tu código o proyecto, recuerda probar siempre en un entorno de testing antes subir el código al trabajo final.

Solución:

Si declaras la reg como signed, $display mostrará el signo menos:

module tb;

reg signed [7:0] acc;

initial begin
    acc = 8'hf0;
    $display("acc : %d", acc);
end

endmodule

Imprime:

acc :         -16

También me encontré con este problema y revisé el estándar SystemVerilog 2012, pero no vi ninguna mención de la firma en la sección sobre especificadores de formato. Aquí hay una solución alternativa (básicamente equivalente) que también funciona:

$display("acc : %d", $signed(acc))

La función "$firmado" convierte el valor de entrada en un tipo firmado con el mismo ancho de bits.

Aquí tienes las reseñas y puntuaciones

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada.