【问题标题】:Verilog $signed(), what is this?Verilog $signed(),这是什么?
【发布时间】:2015-12-16 15:52:41
【问题描述】:

我刚刚开始使用verilog。我正在查看某人编写的浮动乘法的一些示例代码,我遇到了这个......

if ($signed(b_e == -1023) && (b_m == 0)) begin
            z[63] <= 1;
            z[62:52] <= 2047;
            z[51] <= 1;
            z[50:0] <= 0;
            state <= put_z;
          end

我只是想知道 $signed 是什么。我试着用谷歌搜索它,但我得到了一堆关于签名数学的结果(不是关于这个函数)。我认为以 $ 开头的函数仅适用于测试台代码。这个函数有什么作用?还有一个地方可以让我获得verilog函数的列表吗?

【问题讨论】:

  • 参考 SV LRM 1800-2012:“... $signed 和 $unsigned 系统函数可用于转换表达式的符号性。”。所以,如果我们有logic signed [7:0] myreg;myreg=$signed(4'b1100),那么MSB被认为是有符号位和myreg=-4
  • 在您的情况下,检查条件是否 b_e 等于 ...10000000001 返回的结果是 0 或 1。使用 $signed 会产生什么差异仍然是个谜...
  • 我只是感到困惑,因为我认为美元符号函数仅用于模拟。
  • 综合工具解析和忽略系统函数,因此甚至可以包含在可综合模型中。
  • 嗯,但我想知道在那里添加签名有什么意义。

标签: verilog


【解决方案1】:

有许多 Verilog 系统函数可用于综合以及测试平台。大多数可综合函数执行某种算术或逻辑转换。 SystemVerilog 已将大部分 $functions 替换为强制转换或内置方法。

在这个例子中,$signed 的使用对我来说毫无意义,因为比较的结果总是一个 1 但无符号的值,并且这个结果将与另一个 1 位表达式进行与运算。所以 $signed 没有做任何事情。仅当值需要扩展到更大的宽度或在关系操作中时,将值强制转换为有符号才有意义。

您可以在Language Reference Manual (LRM) 中找到函数列表。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多