always @(*) 是 Verilog 中写组合逻辑(combinational logic) 的标准写法,下面讲解含义、作用、以及为什么这么写。
🌟 什么是 always @(*)?
always @(*) begin
// 组合逻辑
end
它的意思是:
“只要块中用到的任何输入信号发生变化,这个 always 块就会自动执行一次。”
也叫做:
-
自动敏感列表
-
组合逻辑块(combinational block)
这是 Verilog-2001 标准引入的一种简化写法,用来避免遗漏敏感信号。
💡 举个例子(组合逻辑 vs 时序逻辑)
// 组合逻辑:根据 sel 输出 mux 结果
always @(*) begin
case (sel)
2'b00: out = a;
2'b01: out = b;
2'b10: out = c;
default: out = 0;
endcase
end
这个 always @(*) 块的作用是:
-
每当
sel、a、b、c中任何一个变化,它就自动运行一次,重新计算out -
它没有时钟,也没有寄存器,结果

最低0.47元/天 解锁文章
3731

被折叠的 条评论
为什么被折叠?



