总是阻止@(*)表示?

时间:2013-03-16 13:57:53

标签: verilog

我有谷歌但仍然了解它。 如果我写下面的代码:

module POLY(CLK,RESET_n,IN_VALID,IN,OUT_VALID,OUT);

input         CLK,RESET_n,IN_VALID;
input  [ 3:0] IN;
output        OUT_VALID;
output [12:0] OUT;

然后使用它。

always @(*)
begin
.........
end

1。 这是否意味着input CLK,RESET_n,IN_VALID;input [ 3:0] IN;将触发始终阻止或仅在块中使用的输入将触发始终阻止?

2。 但它不会写posedge或negedge,所以这两个边缘都会触发始终阻塞?

提前谢谢。

3 个答案:

答案 0 :(得分:15)

(*)表示“为我建立敏感度列表”。

例如,如果您有一个声明a = b + c;,则每次ab更改时您都希望c更改。换句话说,ab& c。所以要设置它:

always @( b or c ) begin
    a = b + c;
end

但是想象一下你有一个对信号负载敏感的大always块。编写敏感度列表需要很长时间。事实上,如果你不小心留下信号,行为也可能会改变!所以(*)是解决这些问题的简写。

答案 1 :(得分:0)

它认为所有变量都将在灵敏度列表中。因此,您不必担心将它们添加到灵敏度列表中。

答案 2 :(得分:-1)

它的行为就像组合逻辑。