简介:
用Verilog实现一个具有4个状态的有限状态机。
状态转移图如下:
代码实现:
/*----------------------------------------
Filename: fsm.v
Function: 具有4个状态的有限状态机(可综合)
Author: Zhang Kaizhou
Date: 2019-10-8 21:48:35
-----------------------------------------*/
module fsm(y3, y2, y1, state, clk, reset, a);
//定义输入输出端口
output y3, y2, y1;
output [3 : 0] state;
input clk, reset, a;
//定义状态寄存器
reg y3, y2, y1;
reg [3 : 0] state;
//状态编码
//parameter idle = 2'b00, start = 2'b01, stop = 2'b10, clear = 2'b11; //格雷码
parameter idle = 4'b1000, start = 4'b0100, stop = 4'b0010, clear = 4'b0001; //独热码(推荐)
//状态转移
always@(posedge clk)
begin
if(!reset)
begin
state <= idle;
y3 = 0; y2 = 0; y1 = 0;
end
else
begin
case(state