2015-07-12 173 views
4

我試圖顯示一些十進制的32位值,這是工作正常,而不是我的%b和以前的字符之間的不必要的空間的奇怪數量。在Verilog顯示不必要的空間

例如: 如果我有一個32位REG帶的33十進制值,我會使用類似這樣

initial 
begin 
    $display("a=%d;", a); 
end 

在CMD輸出將類似於此: 一= ___________________33;

該行僅代表%b和前一個字符之間的長空格。 有人可以向我解釋爲什麼會發生這種情況嗎?我該如何擺脫它們?

回答

9

IEEE Std 1800-2012(21.2.1.3),你可以找到以下信息:

當顯示十進制值,前導零被抑制,並用空格代替。在其他基數中,始終顯示前導零。

這就是爲什麼你在33之前有這麼多空間。最簡單的方式來實現whay你想會是:

$display("a=%0d;", a); 

通過%性格和d(字母,表示基數)顯示的數據的自動調整大小將被覆蓋之間加入0。結果將以儘可能小的尺寸打印。

+2

請使用免費提供的[IEEE Std 1800-2012](https://standards.ieee.org/getieee/1800/download/1800-2012.pdf) –