verilog 状态机模版
定义所有状态参数
localparam IDLE = 3'b000;
localparam BOF = 3'b001;
localparam FIND = 3'b010;
localparam CHANGE = 3'b011;
localparam ERROR = 3'b100;
localparam EOF = 3'b101;
always @(posedge I_sys_clk or negedge I_rst_n)
begin
if(!I_rst_n)
CurState <= IDLE;
else begin
CurState <= NxtState;
end
end
解释状态变换的逻辑关系
always @(*) begin
NxtState = CurState;
case(CurState)
IDLE : begin
NxtState = (wr_sop) ? BOF : IDLE;
end
BOF : begin
NxtState = (wr_vld) ? FIND : BOF;
end
FIND : begin
NxtState = (addr_vld) ? CHANGE :
(failed) ? ERROR :FIND;
end
CHANGE : begin
NxtState = (adm_addr_finished) ? EOF : CHANGE;
end
ERROR : begin
NxtState = IDLE;
end
EOF : begin
NxtState = IDLE;
end
default : begin
NxtState = IDLE;
end
endcase
end

浙公网安备 33010602011771号