这是:
assign ON = signalA && signalB;
always_comb begin
case (blabla)
case_A: begin
if (ON) next_state = some_state;
end
...
Run Code Online (Sandbox Code Playgroud)
等效于:
always_comb begin
case (blabla)
case_A: begin
if (signalA && signalB) next_state = some_state;
end
...
Run Code Online (Sandbox Code Playgroud)
他们生产相同数量的硬件吗?这个比那个好吗?
在这种情况下,它们应产生相同数量的逻辑。
通常,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
Run Code Online (Sandbox Code Playgroud)
要么:
always_comb begin
ON = signalA && signalB;
case (blabla)
case_A: begin
if (ON) next_state = some_state;
end
end
Run Code Online (Sandbox Code Playgroud)
请注意,通过分配signalA && signalB到ON连续作业或任always_comb,没有创建额外的逻辑。可以将其视为内部信号,以任何一种方式存在,但是您可以选择也可以不为其指定名称。这样做的一个原因是调试和查看signalA && signalB波形显示上的值。