「Verilog学习笔记」根据状态转移写状态机-三段式

专栏前言

本专栏的内容主要是记录本人学习Verilog过程中的一些知识点,刷题网站用的是牛客网

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

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

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

本题是一个Mealy状态机。在所有状态下,

当输入data==0时,次态不变;

当输入data==1时,次态顺序切换。

复制代码
`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] state, nstate ; 

	// 当前状态切换
	always @ (posedge clk or negedge rst) begin 
		if (~rst) state <= S0 ; 
		else state <= nstate ; 
	end

	// 次态切换
	always @ (*) begin 
		if (~rst) nstate <= S0 ; 
		else
			case (state) 
				S0 : nstate = data ? S1 : S0 ; 
				S1 : nstate = data ? S2 : S1 ;
				S2 : nstate = data ? S3 : S2 ; 
				S3 : nstate = data ? S0 : S3 ; 
				default : nstate = S0 ; 
			endcase
	end

	// 输出更新
	always @ (posedge clk or negedge rst) begin 
		if (~rst) flag <= 0 ; 
		else 
			case (state) 
				S0 : flag <= 0 ; 
				S1 : flag <= 0 ; 
				S2 : flag <= 0 ; 
				S3 : flag <= data ; 
				default : flag <= 0 ; 
			endcase
	end

//*************code***********//
endmodule
相关推荐
im_AMBER41 分钟前
编辑器项目开发复盘:主题切换
前端·学习·前端框架·编辑器·html5
2401_865721331 小时前
WEEK 3 刷题&学习记录
网络·学习·ctf
强子感冒了2 小时前
Cherry Studio是如何联网的?一次详细的HTTP抓包分析与实现原理探究
笔记
好奇龙猫4 小时前
【日语学习-日语知识点小记-日本語体系構造-JLPT-N2前期阶段-第一阶段(19):単語文法】
学习
挨踢学霸8 小时前
技术全面重构|MsgHelper 新版深度拆解:交互、视觉与逻辑的底层优化(二)
经验分享·笔记·微信·架构·自动化
Nan_Shu_6148 小时前
学习: 尚硅谷Java项目之小谷充电宝(3)
java·后端·学习
头疼的程序员8 小时前
计算机网络:自顶向下方法(第七版)第三章 学习分享(二)
网络·学习·计算机网络
星期五不见面8 小时前
AI学习(三)openclow启动(2)2026/03/05
学习
weixin_443478518 小时前
flutter组件学习之Flex / Expanded弹性布局组件
javascript·学习·flutter
OxyTheCrack8 小时前
【C++】简述Observer观察者设计模式附样例(C++实现)
开发语言·c++·笔记·设计模式