verilog中两条语句的区别
Difference between two statement in verilog
请说明两种说法的区别
因为它们在侧硬件中的行为不同。
reg [31:0]A;
wire B;
Statement 1
assign B = (A==32'h0)?(1'b1):(1'b0);
Statement 2
assign B = (A==32'h0);
我怀疑 A
包含 'x
,这会使 (A==32'h0) 中的结果被评估为 'x
;那么你有 B = 1'bx
.
电路中这个是什么意思?我猜它 'x
将被工具处理为 Don't care
,这将用于进一步简化硬件。
#编辑:
正如 Serge 在评论中指出的那样,三元组会给出 'x 而不是 '0。程序块中的 if('x) B=1'b1; else B=1'b0;
会给出 '0,但不是三元在 verilog 中的作用。
请说明两种说法的区别 因为它们在侧硬件中的行为不同。
reg [31:0]A;
wire B;
Statement 1
assign B = (A==32'h0)?(1'b1):(1'b0);
Statement 2
assign B = (A==32'h0);
我怀疑 A
包含 'x
,这会使 (A==32'h0) 中的结果被评估为 'x
;那么你有 B = 1'bx
.
电路中这个是什么意思?我猜它 'x
将被工具处理为 Don't care
,这将用于进一步简化硬件。
#编辑:
正如 Serge 在评论中指出的那样,三元组会给出 'x 而不是 '0。程序块中的 if('x) B=1'b1; else B=1'b0;
会给出 '0,但不是三元在 verilog 中的作用。