「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
相关推荐
通信小呆呆2 天前
当算法有了“五感”:多模态数据融合如何向人体感官协同学习?
人工智能·学习·算法·机器学习·机器人
H__Rick2 天前
自动对焦学习-3
人工智能·学习·计算机视觉
Daisy Lee2 天前
量化学习-第1章-什么是量化金融
学习·金融·datawhale
坏孩子的诺亚方舟2 天前
FPGA系统架构设计实践15_高云Arora V系列时钟体系
fpga开发·系统架构
Alsn862 天前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
YM52e2 天前
买菜计算器小应用 - HarmonyOS ArkUI 开发实战-PC版本
学习·华为·harmonyos·鸿蒙·鸿蒙系统
小雨下雨的雨2 天前
HarmonyOS ArkUI训练营入门-组件掌握系列-Animation 动画效果实现-PC版本
学习·华为·harmonyos·鸿蒙
闪闪发亮的小星星2 天前
高斯光以及高斯光公式解释
笔记
cqbzcsq2 天前
CellFlow虚拟细胞论文阅读
论文阅读·人工智能·笔记·学习·生物信息
YangYang9YangYan3 天前
2026初入职场学习数据分析的价值
学习·数据挖掘·数据分析