【问题标题】:Unnecessary spaces in Verilog DisplayVerilog 显示中不必要的空间
【发布时间】:2015-09-30 17:07:03
【问题描述】:

我正在尝试以十进制显示一些 32 位值,除了我的 %b 和前一个字符之间出现奇怪数量的不必要空格之外,这一切正常。

例如: 如果我有一个十进制值为 33 的 32 位 reg a,我会使用类似这样的东西

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

cmd 中的输出类似于以下内容: a= _____33;

该行仅表示 %b 和前一个字符之间的长空格。 有人可以向我解释为什么会这样吗?我怎样才能摆脱它们?

【问题讨论】:

    标签: verilog spaces


    【解决方案1】:

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

    当显示十进制值时,前导零被抑制并替换为空格。在其他基数中,始终显示前导零。

    这就是为什么33 之前有这么多空格。实现你想要的最简单的方法是:

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

    通过在% 字符和d(表示基数的字母)之间添加0,将覆盖显示数据的自动调整大小。结果将以可能的最小尺寸打印。

    【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-14
    • 2021-03-17
    • 1970-01-01
    相关资源
    最近更新 更多