gpt4 book ai didi

verilog - @(a==1) 和@(posedge a) 的区别

转载 作者:行者123 更新时间:2023-12-01 02:14:17 28 4
gpt4 key购买 nike

在不可综合的代码中,有什么区别:

@(a==1); 


@(posedge a);

他们的行为真的一样吗?

最佳答案

以下示例 ( on EDA Playground ) 显示它们不相同:

module test;

logic a = 1'b0;
initial begin
#100ns a <= 1'b1;
#100ns a <= 1'b0;
#100ns a <= 1'b1;
#1000ns $finish;
end

initial begin
@(a == 1'b1)
$display("%t : a == 1 (1) %b",$realtime, a);
@(a == 1'b1)
$display("%t : a == 1 (2) %b",$realtime, a);
@(a == 1'b1)
$display("%t : a == 1 (3) %b",$realtime, a);
end

initial begin
@(posedge a)
$display("%t : posedge a (1)",$realtime);
@(posedge a)
$display("%t : posedge a (2)",$realtime);
@(posedge a)
$display("%t : posedge a (3)",$realtime);
end

endmodule

哪个显示
100 : posedge a (1)
100 : a == 1 (1) 1
200 : a == 1 (2) 0
300 : a == 1 (3) 1
300 : posedge a (2)
@(posedge a)从 x/z/0 到 1 的真正转换解除阻塞。 @(a == 1)在更改之前或之后的更改为真时解除阻止。

少量 ?

当一个声明为位时,它只能保存 0 或 1,2-状态而不是 4-状态(0,1,x,z)。因此posedge 只能是0 -> 1 的转换。在modelsim 10.1 中,它不会改变示例的行为。 AldoT (OP) 观察到 @(a==1)现在的行为与 @(a) 相同.

关于verilog - @(a==1) 和@(posedge a) 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26356325/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com