FSM状态在Verilog中更改
|
我已经看到了用于在Verilog模块中进行状态更改的以下内容:
state <= 2\'b10;
state <= #1 IDLE;
为什么使用<=而不仅仅是=?使用#1的目的是什么?这有什么不同吗?
这是FSM的一些Verilog代码,显示了正在使用的第一个。如果将其替换为第二个,它会起到相同的作用吗?
module fsm( clk, rst, inp, outp);
input clk, rst, inp;
output outp;
reg [1:0] state;
reg outp;
always @( posedge clk, posedge rst )
begin
if( rst )
state <= 2\'b00;
else
begin
case( state )
2\'b00:
begin
if( inp ) state <= 2\'b01;
else state <= 2\'b10;
end
2\'b01:
begin
if( inp ) state <= 2\'b11;
else state <= 2\'b10;
end
2\'b10:
begin
if( inp ) state <= 2\'b01;
else state <= 2\'b11;
end
2\'b11:
begin
if( inp ) state <= 2\'b01;
else state <= 2\'b10;
end
endcase
end
end
没有找到相关结果
已邀请:
2 个回复
浅镁
延迟。有时是由于在同一模拟中混合了RTL和门网表。在其他时候,它是用来弥补建模不佳的。如果可以,您应该避免在RTL代码中使用延迟。 也可以看看: Verilog综合中的非阻塞分配,编码风格令人难以置信! 另外,最好使用ѭ8来命名您的每个州。如果将一个州命名为“ 9”而不是“ 10”,那将更有意义。
硕歌沙