两段式—状态机
适用于所有类型的状态机,具有较高的代码可读性。
组成
主要分为两大部分:纯净时序部分、纯净的组合逻辑部分。
纯净时序部分:主要完成状态的跳转、中间变量的更新、输出寄存工作。
纯净组合逻辑部分:主要完成状态转移函数的的实现、次态的生成、组合输出的生成工作。
练习
module top_module(
input clk,
input areset, // Asynchronous reset to OFF
input j,
input k,
output out); //
parameter OFF=0, ON=1;
reg state, next_state;
always @(*) begin
case(state)
OFF:begin
out = 1'b0 ;
if(j==1'b0)begin
next_state = OFF;
end
else begin
next_state = ON;
end
end
ON:begin
ou