「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

相关推荐

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2023-12-07 13:46:01       94 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2023-12-07 13:46:01       101 阅读
  3. 在Django里面运行非项目文件

    2023-12-07 13:46:01       82 阅读
  4. Python语言-面向对象

    2023-12-07 13:46:01       91 阅读

热门阅读

  1. 在windows上使用多个版本的chrome(谷歌)浏览器

    2023-12-07 13:46:01       71 阅读
  2. 星期一 至 星期日的样本个数统计(Python)

    2023-12-07 13:46:01       58 阅读
  3. 基于灰狼算法求解旅行商问题的MATLAB源码

    2023-12-07 13:46:01       66 阅读
  4. nvm,node,npm,yarn相关安装报错问题记录

    2023-12-07 13:46:01       64 阅读
  5. CSS-2

    2023-12-07 13:46:01       46 阅读
  6. 数据库sql是什么?

    2023-12-07 13:46:01       56 阅读
  7. [Swift]RxSwift常见用法详解

    2023-12-07 13:46:01       53 阅读
  8. 开启gitlab中远程连接pgsql

    2023-12-07 13:46:01       47 阅读
  9. 【原创】Mac mini M1安装home-brew

    2023-12-07 13:46:01       56 阅读
  10. AURIX TC芯片中DSU实现安全启动

    2023-12-07 13:46:01       52 阅读
  11. 网络攻击有什么危害,该如何防御

    2023-12-07 13:46:01       58 阅读