Dans l'impression Verilog entier signé de valeur mémorisée dans une variable de type reg
Question
Comment puis-je imprimer une valeur entière signée stockée dans un registre 8 bits déclaré
reg [7: 0] acc;
Utilisation
$ affichage ( "acc:% d", acc)
Il imprime la valeur non signée.
Quelle est la syntaxe correcte pour la fonction d'affichage de $?
La solution
Si vous déclarez la reg
comme signed
, $display
affiche le signe moins:
module tb;
reg signed [7:0] acc;
initial begin
acc = 8'hf0;
$display("acc : %d", acc);
end
endmodule
/*
Prints out:
acc : -16
*/
Autres conseils
Ran ce problème aussi bien et regardé à travers la norme SystemVerilog 2012, mais ne voit aucune mention signedness dans la section sur les spécificateurs de format. Voici une solution de rechange (essentiellement équivalente) qui fonctionne aussi:
$display("acc : %d", $signed(acc))
La fonction « $ signé » convertit la valeur d'entrée en un type signé avec le même largeur de bit.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow