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

ops/2024/12/22 17:30:16/

一、实验目的

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/ops/144077.html

相关文章

HTML中的Vue3解析!

#Vue 3 是一个用于构建用户界面的渐进式 JavaScript 框架。它在 HTML 中发挥着重要的作用&#xff0c;可以让开发者轻松地创建交互式的网页应用。与 HTML 结合时&#xff0c;Vue 3 通过自定义指令、组件等方式增强了 HTML 的功能。# 一、vue的概述 Vue 采用了双向数据绑定机制…

【CSS in Depth 2 精译_084】第 14 章:CSS 蒙版、形状与剪切概述 + 14.1:CSS 滤镜

当前内容所在位置&#xff08;可进入专栏查看其他译好的章节内容&#xff09; 第四部分 视觉增强技术 ✔️【第 14 章 蒙版、形状与剪切】 ✔️ 14.1 滤镜 ✔️ 14.1.1 滤镜的类型 ✔️14.1.2 背景滤镜 ✔️ 14.2 蒙版 文章目录 第 14 章 蒙版、形状与剪切 Masks, shapes, and…

单节点calico性能优化

在单节点上部署calicov3273后&#xff0c;发现资源占用 修改calico以下配置是资源消耗降低 1、因为是单节点&#xff0c;没有跨节点pod网段组网需要&#xff0c;禁用overlay方式网络(ipip&#xff0c;vxlan),使用route方式网络 配置calico-node的环境变量 CALICO_IPV4POOL_I…

23 go语言(golang) - gin框架安装及使用(四)

五、跨域资源共享 跨域资源共享&#xff08;CORS&#xff0c;Cross-Origin Resource Sharing&#xff09;是一种机制&#xff0c;它允许来自不同源的请求访问资源。默认情况下&#xff0c;浏览器出于安全原因会阻止跨域 HTTP 请求。Gin 框架本身没有内置的 CORS 支持&#xff…

SQL server学习07-查询数据表中的数据(下)

目录 一&#xff0c;自连接查询 二&#xff0c;多表查询 三&#xff0c;关系代数运算 1&#xff0c;笛卡尔乘积运算 1&#xff09;交叉连接 2&#xff0c;连接运算 2&#xff09;内连接 四&#xff0c;外连接 1&#xff0c;左外连接 2&#xff0c;右外连接 3&…

12. 最大括号深度

题目描述 现有一字符串仅由"("&#xff0c;")", "{","}", "[", "]"六种括号组成。若字符串满足以下条件之一&#xff0c; 则为无效字符串:任一类型的左右括号数量不相等 存在未按正确顺序(先左后右)闭合的括号输出…

FFmpeg 安装教程(Windows 系统)

1. 前言 FFmpeg 是一个用于处理视频、音频等多媒体文件的开源工具包。它支持几乎所有的多媒体格式转换、剪辑和编辑&#xff0c;是开发者和多媒体工作者必备的工具。本文详细讲解如何在 Windows 系统上安装 FFmpeg 并进行基本配置。 2. 下载 FFmpeg 安装包 打开 Dpwnload FFmp…

Android Room 数据库使用详解

一、Room介绍 Android Room 是 Google 提供的一个 Android 数据持久化库&#xff0c;是 Android Jetpack 组成部分之一。它提供了一个抽象层&#xff0c;使得 SQLite 数据库的使用更为便捷。通过 Room&#xff0c;开发者可以轻松地操作数据库&#xff0c;不需要直接编写繁琐的…