题解 | #根据状态转移写状态机-三段式#

根据状态转移写状态机-三段式

https://www.nowcoder.com/practice/d8394a6d31754e73ace8c394e9465e2a

`timescale 1ns/1ns

module fsm1(
	input wire clk  ,
	input wire rst  ,
	input wire data ,
	output reg flag
);
//*************code***********//
parameter s0=0;
parameter s1=1;
parameter s2=2;
parameter s3=3;
reg [1:0]state;
reg [1:0]next_state;

//1
always@(posedge clk or negedge rst)
begin  if(!rst)
   state<=0;
   else state<=next_state;
end

//2
always@(*)
begin case(state)
s0: if(data) next_state=s1; else next_state=s0;
s1: if(data) next_state=s2; else next_state=s1;
s2: if(data) next_state=s3; else next_state=s2;
s3: if(data) next_state=s0; else next_state=s3;
endcase
end 

//3
always@(posedge clk or negedge rst)
begin if(!rst)
  flag<=0;
  else if((next_state==s0)&(data==1))
  flag<=1;
  else  flag<=0;
  end

//*************code***********//
endmodule

全部评论

相关推荐

牛客52071342...:不同的岗位,你得把不对口的内容删掉一些,优化一下,人家公司不管你有多少技能,他只看对他有用的技能,你得根据公司的需求简化简历
那些拿到大厂offer的...
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务