【Verilog】实验八 有限状态机设计

news/2024/12/23 9:21:03/

一、实验目的

1. 掌握有限状态机原理和设计方法。

2. 掌握ModelSim和VIVADO工具软件。

3. 掌握基本的测试代码编写和FPGA开发板使用方法。

二、实验环境

1. 装有ModelSim和VIVADO的计算机。

2. Sword实验系统。

三、实验原理

有限状态机是时序电路的通用模型,任何时序电路都可以表示为有限状态机。在由时序电路表示的有限状态机中,各个状态之间的转移总是在时钟的触发下进行的,状态信息存储在寄存器中。因为状态的个数是有限的,所以称为有限状态机。有限状态机可以分为同步和异步两种,

    状态机的同步置位与复位:

always@(posedge clk )

    if(!rst)

    …

    状态机的异步置位与复位:

always@(posedge clk or negedge rst)

我们主要讨论有限同步状态机。有限状态机也是由两部分组成:存储电路和组合逻辑电路。存储电路用来生成状态机的状态,组合逻辑电路用来提供输出以及状态机跳转的条件。

根据输出信号的产生方式,有限状态机可以分为Mealy型和Moore型两类。Mealy型状态机的输出信号不仅与当前状态有关,而且还与输入信号有关,即可以把Mealy型有限状态机的输出看成是当前状态和输入信号的函数。Moore型状态机的输出仅与当前状态有关,即可以把Moore型有限状态的输出看成是当前状态的函数。

  1. 设计并实现掌握检测连续接收“1111”的Moore型和Mealy型状态机设计。

要求:画出Moore型和Mealy型的状态转移图,并编写代码在modelsim上仿真

xc7k160tffg676-1

top.v

`timescale 1ns / 1psmodule 	 TOP(input  wire clk_100mhz,input  wire[15:0]SW,output wire led_clk,output wire led_clrn,output wire led_sout,output wire LED_PEN				);wire[31:0]Div;wire[15:0]LED_DATA;wire CK;clk_div       U8(clk_100mhz,1'b0,SW[2],Div,CK);LED_P2S 			  #(.DATA_BITS(16),.DATA_COUNT_BITS(4)) PLED (clk_100mhz,1'b0,Div[20],LED_DATA,led_clk,led_clrn,led_sout,LED_PEN);wire dout;seqdata1111_moore U1(Div[26],SW[1],SW[2],dout);assign LED_DATA = ~{dout,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,1'b0,Div[26]};	endmodule

seqdata1111_moore.v

module seqdata1111_moore(input wire clk,input wire clr,input wire din,output reg dout);reg[2:0] present_state,next_state;parameter s0=3'b000,s1=3'b001,s2=3'b010,s3=3'b011,s4=3'b100;always@(posedge clk)beginif(clr==1) present_state<=s0;else present_state<=next_state;endalways@(*)begincase(present_state)s0: if(din==1) next_state=s1;else next_state=s0;s1: if(din==1) next_state=s2;else next_state=s0;s2: if(din==1) next_state=s3;else next_state=s0;s3: if(din==1) next_state=s4;else next_state=s0;s4: if(din==1) next_state=s4;else next_state=s0;default: next_state=s0;endcaseendalways@(*)beginif(present_state==s4) dout=1;else dout=0;end
endmodule


http://www.ppmy.cn/news/1557123.html

相关文章

Spring Boot 集成 MQTT:实现订阅主题与消息接收详解

文章目录 1. 目标2. 关键代码解析入栈消息配置&#xff1a;MqttInboundConfiguration消息处理器&#xff1a;ReceiverMessageHandler 3. 配置文件4. 运行效果5. 总结参考资料 在上一篇文章中&#xff0c;我们已经完成了 MQTT 客户端的基础配置 和 连接实现。今天&#xff0c;我…

Windows开机黑屏|Windows开机黑屏只有鼠标|Windows开机不运行explorer

输入regedit打开注册表&#xff0c;进入以下路径 计算机\HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon 左键双击右侧的 Shell 查看是否设置为 Explorer.exe

鸿蒙NEXT游戏|Cocos参展2024华为开发者年度盛典

代码改变世界 2024华为开发者年度盛典在松山湖基地进行&#xff0c;来自各行各业的华为生态开发者相聚在一起&#xff0c;交流总结、探讨新的机遇。 开发者&#xff0c;用代码改变世界的人&#xff01; 这句 SLOGAN&#xff0c;引起了在场程序员的深度共鸣&#xff0c;持续热烈…

[oeasy]python054_python有哪些关键字_keyword_list_列表_reserved_words

python有哪些关键字_keyword_list_列表_reserved_words 回忆上次内容 hello world 不是 从来就有的 来自于 c语言 print、小括号 和 双引号 也来自于 c语言 添加图片注释&#xff0c;不超过 140 字&#xff08;可选&#xff09; python 标识符 的 命名规则 依然 完全 学习…

精通Redis(一)

目录 1.NoSQL 非关系型数据库 2.Redis 3.Redis的java客户端 4.Jedis 4.1Jedis快速入门 4.2Jedis连接池及使用 5.SpringDataRedis和RedisTemplate 1.NoSQL 非关系型数据库 基础篇-02.初始Redis-认识NoSQL_哔哩哔哩_bilibili NoSQL与SQL的区别就在于SQL是结构化的、关联…

第十五届蓝桥杯Scratch01月stema选拔赛—排序

排序 具体要求&#xff1a; 1). 点击绿旗&#xff0c;在舞台上出现4张点数不同的扑克牌&#xff0c;牌上的点数是随机的&#xff08;4-9点&#xff09;&#xff0c;如图所示&#xff1b; 完整题目可点击下方链接查看&#xff1a; 排序_scratch_嗨信奥-玩嗨信息奥林匹克竞赛-…

在window环境下安装openssl生成钥私、证书和签名,nodejs利用express实现ssl的https访问和测试

在生成我们自己的 SSL 证书之前&#xff0c;让我们创建一个简单的 Express应用程序。 要创建一个新的 Express 项目&#xff0c;让我们创建一个名为node-ssl -server 的目录&#xff0c;用终端cmd中进入node-ssl-server目录。 cd node-ssl-server 然后初始化一个新的 npm 项目…

如何在谷歌浏览器中设置家庭安全

在数字时代&#xff0c;保护家庭成员尤其是儿童的网络安全变得尤为重要。谷歌浏览器提供了一些实用的功能来帮助家长管理孩子的上网行为。本文将详细介绍如何在谷歌浏览器中设置家庭安全&#xff0c;包括启用加速访问模式、管理存储权限以及使用地址栏快捷搜索技巧。&#xff0…