【状态机FSM 序列检测 饮料机_2023.12.1】

同步状态机

概念

同步状态机(同一脉冲边沿触发):有限个离散状态及某状之间的转移
异步状态机无法综合

分类

Moore状态机 只和状态有关,与输入无关
Mealy状态机 和状态和输入都有关
Mealy型比Moore型少一个状态

结构

由状态寄存器(触发器)作为状态记忆部件
仅当触发信号到达时刻才可能发生状态改变
n个触发器,最多2^n个状态

三要素

状态——状态方程
输出——输出方程
输入——驱动方程

状态分配

二进制码:触发器少/多个比特位改变,易产生毛刺
gray码:一个比特位改变/状态改变必须依序改变
独热码(001 010 100):n个状态n个触发器,高速/电路较大
三段式three always最佳

设计步骤

1.分析输入输出端口信号
2.状态说明与状态转移图
3.根据状态转移图进行Verilog语言描述

  1. 输入输出端口声明
  2. 现态和次态声明:reg[x:0]state,next_state;
  3. 给状态定义常量:parameter s0=3'd0,s1=3'd1......
  4. 现态与次态转变:always@(posedge clk or negedge rst_n)begin if(!rst_n) state<=s0; else state<=next_state; end
  5. 状态转移说明:always@(posedge clk)begin case(state)......endcase end
  6. 输出说明

4.测试代码编写,仿真

序列检测

代码

在这里插入图片描述
in输入:01010‘1011011’0
在这里插入图片描述

结果

当next_state为s9时,out置为1
在这里插入图片描述

自动售饮料机

要求

2.5元/瓶,硬币有0.5和1.0两种,考虑找零

设计

s0-0元
s1-0.5元
s2-1元
s3-1.5元
s4-2元
s5-2.5元
s6-3元
s0状态下,start=1,若检测到投币,一次新的售货操作开始
s1/s2/s3/s4状态下,若检测到cancel=1,取消操作,状态返回s0,并退回相应的币值
s5状态下,卖出饮料不找零;s6状态下,卖出饮料并找零;
s5/s6状态下,操作完成后,都返回s0
只有在s0状态下,hold=0,可发起新一轮操作,其它状态下都为1
在这里插入图片描述

实现

在这里插入图片描述
依次投入硬币:1,1,0,5,1,cancel置1
在这里插入图片描述
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/224053.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Tomcat从认识安装到详细使用

文章目录 一.什么是Tomact?二.Tomcat的安装1.下载安装包2.一键下载3.打开Tomcat进行测试4.解决Tomcat中文服务器乱码 三.Tomcat基本使用1.启动与关闭Tomcat2.Tomcat部署项目与浏览器访问项目 四.Tomcat操作中的常见问题1.启动Tomcat后&#xff0c;启动窗口一闪而过&#xff1f…

排序 | 冒泡插入希尔选择堆快排归并计数排序

排序 | 冒泡插入希尔选择堆快排归并计数排序 文章目录 排序 | 冒泡插入希尔选择堆快排归并计数排序冒泡排序插入排序希尔排序选择排序堆排序快速排序--交换排序三数取中快速排序hoare版本快速排序挖坑法快速排序前后指针法 快速排序--非递归实现归并排序归并排序非递归实现非比…

【AutoDL】使用云服务器跑深度学习代码

一、AutoDL租用服务器 1.选用服务器 1.算力市场 租用服务器&#xff0c;选择自己心仪的服务器 2.镜像 可以选择一些基础的镜像&#xff0c;社区镜像里是git上有的环境。 3.上传文件 在文件存储中&#xff0c;选择上传的区&#xff0c;在右边点击上传&#xff0c;选择自己的文…

Dockerfile创建镜像LNMP+WordPress

目录 实验部署 nginx 配置mysql 配置php 实验部署 INMPwordpress nginx 172.111.0.10 docker-nginx mysql 172.111.0.20 docker-mysql php 172.111.0.30 docker-php nginx 关闭防火墙和安全机制在opt目录创建nginx MySQL php目录 cd nginx mysql php vim Dockerfile#声…

VueRouter的编程式导航和导航守卫

编程式导航 Vue Router 提供了编程式导航的方法&#xff0c;这意味着你可以在 JavaScript 中编写代码来导航到不同的路由。这通常在处理用户交互或其他异步操作时很有用。 要实现编程式导航&#xff0c;你可以使用 this.$router.push() 方法。这个方法接受一个路由对象或者一…

Arduino中读取SD卡文本文件数据

1、硬件 2、代码 #include <SD.h> #include <SPI.h> // needed for Arduino versions later than 0018const long _1000msTime 1000; // 1000 milli seconds unsigned long _1000msLastTime;File myFile; int date; int Lastdate; String strDate;//…

什么是分布式光伏发电系统?哪些地点适合建设?

随着全球环保意识的提高&#xff0c;光伏发电以发电效率高、环境污染小和能源来源丰富等优势脱颖而出。光伏发电是指利用太阳能辐射直接转变成电能的发电方式&#xff0c;能够有效帮助减少二氧化碳。 分布式光伏发电特指在用户场地附近建设&#xff0c;运行方式以用户侧自发自…

YOLOv5独家原创改进:SPPF自研创新 | SPPF与感知大内核卷积UniRepLK结合,大kernel+非膨胀卷积提升感受野

💡💡💡本文自研创新改进:SPPF与感知大内核卷积UniRepLK结合,大kernel+非膨胀卷积,使SPPF增加大kernel,提升感受野,最终提升检测精度 收录 YOLOv5原创自研 https://blog.csdn.net/m0_63774211/category_12511931.html 💡💡💡全网独家首发创新(原创),…

垃圾回收 (GC) 在 .NET Core 中是如何工作的?(二)

接上一篇文章垃圾回收 (GC) 在 .NET Core 中是如何工作的&#xff1f;-CSDN博客 GC 会分配堆段&#xff0c;其中每个段都是一系列连续的内存。 置于堆中的对象归类为 3 个代系之一&#xff1a;0、1 或 2。 代系可确定 GC 尝试在应用不再引用的托管对象上释放内存的频率。 编号…

【亚马逊云科技】使用Vscode Amazon-Q完成GUI界面粉笔脚本开发

本篇文章授权活动官方亚马逊云科技文章转发、改写权&#xff0c;包括不限于在 亚马逊云科技开发者社区, 知乎&#xff0c;自媒体平台&#xff0c;第三方开发者媒体等亚马逊云科技官方渠道 前言 亚马逊云科技-Q&#xff0c;可以快速获得紧迫问题的相关答案&#xff0c;解决问题…

如何选择适合自己的API:实用指南

导语&#xff1a;在当今的软件开发世界中&#xff0c;API&#xff08;应用程序接口&#xff09;已成为数据传输和功能调用的重要桥梁。然而&#xff0c;面对众多的API&#xff0c;如何选择适合自己的API成为了一个挑战。本文将为你提供一份实用指南&#xff0c;帮助你选择适合自…

Linux常用长命令总结

1、批量杀死进程 程序意外终止&#xff0c;但进程还在占用资源&#xff0c;如何批量杀死多进程&#xff1f; 可以先使用命令 ps aux 查看所有被启动进程的相同部分&#xff0c;使用grep过滤&#xff0c;然后运行语句&#xff1a; ps -ef | grep train.py | awk {print $2} |…

生物信息学分析领域领先的特制语言环境NGLess(Next Generation Less)介绍、安装配置和详细使用方法

介绍 NGLess&#xff08;Next Generation Less&#xff09;是一种用于生物信息学分析的领先的领域特定语言&#xff08;DSL&#xff09;。它旨在简化和加速NGS&#xff08;Next Generation Sequencing&#xff09;数据的分析过程。NGLess具有清晰的语法和功能&#xff0c;使用户…

使用React将JSON渲染为组件

使用React将JSON 渲染为组件 实现思路 要将JSON Schema渲染为React组件&#xff0c;我们可以按照以下步骤进行实现&#xff1a; 得到JSON . 构建自定义组件 。 嵌套渲染功能实现 。 示例代码 import React, { useState, useEffect } from "react";interface Sc…

机器翻译:跨越语言边界的智能大使

导言 机器翻译作为人工智能领域的瑰宝&#xff0c;正在以前所未有的速度和精度&#xff0c;为全球沟通拓展新的可能性。本文将深入研究机器翻译的技术原理、应用场景以及对语言交流未来的影响。 1. 简介 机器翻译是一项致力于通过计算机自动将一种语言的文本翻译成另一种语言的…

[Unity]关于Unity接入Appsflyer并且打点支付

首先需要去官方下载Appsflyer的UnityPackage 链接在这afPackage 然后导入 导入完成 引入此段代码 using AppsFlyerSDK; using System.Collections; using System.Collections.Generic; using UnityEngine;public class AppflysManager : MonoBehaviour {public static App…

测试总监给我分享的《接口自动化测试》总结,让我成功的入门接口自动化门槛......

前两天在测试技术交流群里&#xff0c;听了一位字节跳动的测试总监分享的接口自动化测试的内容&#xff0c;对接口自动化更加了解了&#xff0c;也为自己接下来在公司实施接口自动化项目提供了思路。 前言 自动化测试&#xff0c;算是近几年比较火热的一个话题&#xff0c;当…

dcf配置解析机制(元数据)

dcf配置解析机制(元数据) openguass的dcf是一个分布式一致性协议的实现&#xff08;基于paxos协议&#xff0c;类似raft&#xff09;&#xff0c;能够实现分布式一致性数据传输和存储。 dcf通过传入json字符串来传递配置数据&#xff0c;如&#xff1a; #1. 使能dcf特性开关…

现代C++ 实现单例模式

传统写法有什么问题 如果你了解过单例模式&#xff0c;双重检查锁定模式&#xff08;Double-Checked Locking Pattern&#xff0c;后文简称DCLP&#xff09;的写法你一定不会陌生&#xff0c;甚至你或许认为它是最正确的代码。 class Singleton { public://获取单例Singleton…

linux 内核同步互斥技术之顺序锁

顺序锁 顺序锁区分读者和写者&#xff0c;和读写自旋锁相比&#xff0c;它的优点是不会出现写者饿死的情况。读者不会阻塞写者&#xff0c;读者读数据的时候写者可以写数据。顺序锁有序列号&#xff0c;写者把序列号加 1&#xff0c;如果读者检测到序列号有变化&#xff0c;发…