定义:将电路分成不同状态
组成
- 状态寄存器
- 转移条件 根据输入和当前状态,产生下一状态的组合逻辑
- 输出逻辑
实现
三段式
1 rst_n
2 状态case
3 输出
第一段:采用同步时序方式,描述状态转移
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
state_c<=IDLE;
end
else begin
state_c<=state_n;
end
end
//第二进程,组合逻辑模块,描述状态转移条件判断
//第三段,同步时序模块,格式化输出寄存器,多个输出多个always
eg
always @(*)begin
case(state_c)
IDLE:begin
if(en==1)
state_n=S1;
else
state_n=IDLE;
end
S1:begin
if(en==1)
state_n=S2;
else
state_n=S1;
end
S2:begin
if(en==1)
state_n=IDLE;
else
state_n=S2;
end
default:begin
state_n=IDLE;
end
endcase
end
always @(posedge clk or negedge rst_n)begin
if(rst_n==1'b0)begin
vld<=0;
end
else if(en==1&&state_c=S2) begin
vld<=1;
end
else begin
vld<=0;
end
end
end