首页 > 解决方案 > SystemVerilog 中单位常量文字的符号扩展

问题描述

SystemVerilog 具有大小不一的单位值文字,例如'0'1。根据 IEEE Std 1800,在 5.7.1 Integer literal constants 中,我看到“一个未调整大小的单比特值......应被视为无符号”。但是,在本节的示例 5 中,我还看到:

logic [15:0] a, b, c, d;
a = '0;    // sets all 16 bits to 0
b = '1;    // sets all 16 bits to 1
...

这不意味着'1被视为已签名吗?

事实上,我通过 Quartus Prime 和 ModelSim-Altera'1得到了以下结果。1'b1

logic [3:0] a, b;
assign a = '1;    // => yields 4'b1111
assign b = 1'b1;  // => yields 4'b0001

我认为他们'11'b1他们自己都没有签名。为什么我会看到这样的差异?

标签: system-verilogieee

解决方案


我错过了“所有未设置大小值的位都应设置为指定位的值”的描述。在同一部分。在多位上下文中,'1被视为全为 1 的序列,但仍被视为无符号。

因此,在 4 位上下文中,'1is unsigned4'b11111'b1is unsigned 4'b0001

抱歉打扰了。


推荐阅读