小编sha*_*ura的帖子

verilog"〜"运算符另外运算会产生不需要的结果

在以下简化的Verilog代码中:

wire [31:0] depth;
wire mode_u2 = 1'h0;

assign depth = 'h80 + (~mode_u2);
Run Code Online (Sandbox Code Playgroud)

如果我在深度上进行显示,并用VCS进行模拟(2014.12-1)

$display("depth is 0x%2x", depth);
Run Code Online (Sandbox Code Playgroud)

我得到了0x7f,而不是预期的0x81.好像~mode_u2被视为减1.

如果我换~mode_u2!mode_u2.我按预期得到0x81.

更有趣的是,如果我做wire mode = ~mode_u2,然后assign depth = 'h80 + (~mode)而不是0x80,我得到0x7e

我在这里错过了什么吗?

有人可以解释为什么~+操作中这样做吗?或者这些模拟和综合中的哪一个是不同的情况?

非常感谢!!

威利

verilog system-verilog

5
推荐指数
1
解决办法
145
查看次数

标签 统计

system-verilog ×1

verilog ×1