module SimpleStateMachine (
input wire clk,
input wire rst,
output reg [1:0] state
);
// 状态定义
localparam S0 = 2'b00;
localparam S1 = 2'b01;
localparam S2 = 2'b10;
localparam S3 = 2'b11;
// 状态寄存器
reg [1:0] next_state;
always @(posedge clk or posedge rst) begin
if (rst) begin
// 复位时将状态设置为初始状态
state <= S0;
end else begin
// 在时钟上升沿处理状态转移
state <= next_state;
end
end
always @(posedge clk or posedge rst) begin
if (rst) begin
// 复位时将下一个状态设置为初始状态
next_state <= S0;
end else begin
// 在时钟上升沿根据当前状态计算下一个状态
case (state)
S0: next_state <= S1;
S1: next_state <= S2;
S2: next_state <= S3;
S3: next_state <= S0;
default: next_state <= S0;
endcase
end
end
endmodule
这是一个简单的4个状态的状态机。模块接受时钟信号(clk)和复位信号(rst),并输出当前状态(state)。状态机在每个时钟上升沿处理状态转移,当复位信号为高电平时,将状态复位为初始状态。你可以根据实际需要修改状态的数量和状态之间的转移关系。
转载请注明出处:http://www.zyzy.cn/article/detail/15107/Verilog