这是:
assign ON = signalA && signalB;
always_comb begin
case (blabla)
case_A: begin
if (ON) next_state = some_state;
end
...
相当于:
always_comb begin
case (blabla)
case_A: begin
if (signalA && signalB) next_state = some_state;
end
...
他们生产相同数量的硬件吗?这个比那个好吗?
答案 0 :(得分:5)
在这种情况下,他们应该产生相同数量的逻辑。
一般情况下,至少following reasons
首选always_comb
always_comb
会更准确,因为它“对函数内容的变化很敏感”。 always_comb
会生成有关推断锁存器的警告。同样,你也可以写:
always_comb ON = signalA && signalB;
always_comb begin
case (blabla)
case_A: begin
if (ON) next_state = some_state;
end
end
或:
always_comb begin
ON = signalA && signalB;
case (blabla)
case_A: begin
if (ON) next_state = some_state;
end
end
请注意,通过连续分配或signalA && signalB
将ON
分配给always_comb
,您无需创建额外的逻辑。将其视为内部信号,无论哪种方式存在,但您可能会或可能不会选择为其指定名称。执行此操作的一个原因是在波形显示上调试和查看signalA && signalB
的值。