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

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

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

状态机(State Machine)

有限状态机(Finite State Machine,简称FSM)

在有限个状态之间按一定规律转换的时序电路。

状态机可以分为Moore状态机和Mealy状态机。

  • Moore状态机:输出只由当前状态决定
  • Mealy状态机:输出由当前状态和当前的输入共同决定。

三段式状态机是指当前状态切换、次态切换和输出更新分别由不同的块控制。

`timescale 1ns/1ns

module fsm1(
	input wire clk  ,
	input wire rst  ,
	input wire data ,
	output reg flag
);
//*************code***********//

	parameter S0=0, S1=1, S2=2, S3=3;
	reg [1:0] cur_state, next_state;

	always@(posedge clk or negedge rst)begin
		if(~rst)
			cur_state <= S0;
		else
			cur_state <= next_state;
	end

	always@(*)begin
		case(cur_state)
			S0: next_state = data? S1:S0;
			S1: next_state = data? S2:S1;
			S2: next_state = data? S3:S2;
			S3: next_state = data? S0:S3;
			default: next_state = S0;
		endcase
	end

	always@(posedge clk or negedge rst)begin
		if(~rst)
			flag <= 0;
		else
			flag <= cur_state==S3 && data==1;
	end


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

全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

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