verilog 状态机怎么用的?

2024-12-18 19:40:20
推荐回答(3个)
回答1:

有限状态机是指输出取决于过去输入部分和当前输入部分的时序逻辑电路。有限状态机又可以认为是组合逻辑和寄存器逻辑的一种组合。状态机特别适合描述那些发生有先后顺序或者有逻辑规律的事情,其实这就是状态机的本质。状态机就是对具有逻辑顺序或时序规律的事件进行描述的一种方法

在实际的应用中根据状态机的输出是否与输入条件相关,可将状态机分为两大类,即摩尔 (Moore)型状态机和米勒 (Mealy) 型状态机。

回答2:

parameter S_idle = 0;
parameter S_1 = 1;
parameter S_2 = 2;

reg [2:0] R_state = 0;
reg [2:0] R_next_state = 0;
状态机初始化,注意要用<=
always @ ( posedge I_Clk )
begin
R_state <= R_next_state;
end
状态转移,注意敏感列表,注意要用=
always @ ( I_en or R_cnt1 or R_cnt2 )
begin
case ( R_state ):
S_ilde;
if ( I_en )
begin
R_next_state = S_1;
end
else
begin
R_next_state = S_idle;
end
S_1:
if ( R_cnt1 = 100 )
begin
R_next_state = S_2;
end
else
begin
R_next_state = S_1;
end
S_2:
if ( R_cnt2= 100 )
begin
R_next_state = S_idle;
end
else
begin
R_next_state = S_2;
end
end
最后根据不同状态对你的变量赋值。

回答3:

菜单有insert -> template