Dans l'impression Verilog entier signé de valeur mémorisée dans une variable de type reg

StackOverflow https://stackoverflow.com/questions/9324706

  •  27-10-2019
  •  | 
  •  

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 $?

Était-ce utile?

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
scroll top