【从零开始学习计算机科学】数字逻辑(九)有限状态机

【从零开始学习计算机科学】数字逻辑(九)有限状态机

  • 有限状态机
    • 状态机的表示方法
    • 有限状态机的Verilog描述

有限状态机

有限状态机(简称状态机)相当于一个控制器,它将一项功能的完成分解为若干步,每一步对应于二进制的一个状态,通过预先设计的顺序在各状态之间进行转换,状态转换的过程就是实现逻辑功能的过程。

有限状态机三要素为状态(当前状态,下一个状态)、输入信号(事件)和输出控制信号(相应操作)。

从底层实现的角度来看,有限状态机是由寄存器组和组合逻辑构成的硬件时序电路。

为什么要使用状态机?因为有限状态机具有以下特点:有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点;状态机的结构模式相对简单;状态机容易构成性能良好的同步时序逻辑模块;状态机的HDL表述丰富多样;在高速运算和控制方面,状态机更有其巨大的优势;就可靠性而言,状态机的优势也是十分明显的。

如果我们有这样一个电路:

1,能记住自己目前所处的状态;

2,状态的变化只可能在同一个时钟的跳变沿时刻发生,而不可能发生在任意时刻;

3,在时钟跳变沿时刻,如输入条件满足,则进入下一状态,并记住自己目前所处的状态,否则仍保留原来的状态;

4,在进入不同的状态时刻,对系统的开关阵列做开启或关闭的操作。
当我们有了以上电路,我们就不难设计出复杂的控制序列来操纵数字系统的控制开关阵列。能达到要求的电路就是时序和组合电路互相结合的产物:同步有限状态机和由状态和时钟共同控制的开关逻辑阵列。

所以,只要掌握有限状态机的基本设计方法,加上对基本电路的掌握,再加上对数据处理的过程的细致了解,就可以规避由于逻辑器件和布线延迟产生的“竞争冒险”现象所造成的破坏,设计出符合要求的复杂数字逻辑系统。

状态机的表示方法

方法一:状态转换表

在这里插入图片描述

方法二:算法流程图

方法三:状态转换图

在这里插入图片描述
在这里插入图片描述

有限状态机的Verilog描述

有限状态机可以通过以下四种方法描述。

(1)用三个过程描述&#

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

springboot-bug

spring boot :3.2.6该版本不与mybatis框架兼容,所以使用该版本时,请注意JDBC框架,要不然你会疑问,明明自己映射是对的,实体类是对的,各种东西都配好了,但就是报错,这是因为SpringBoo…

MySQL 数据库优化与定期数据处理策略

✅作者简介:2022年博客新星 第八。热爱国学的Java后端开发者,修心和技术同步精进。 🍎个人主页:Java Fans的博客 🍊个人信条:不迁怒,不贰过。小知识,大智慧。 ✨特色专栏&#xff1a…

使用服务器搭建一个专属的密码管理工具Vaultwarden

一、服务器配置与Docker环境 ‌实例选型与系统准备‌ ‌推荐配置‌:‌1核2GB内存‌(莱卡云L1型实例),Vaultwarden资源占用低,适合轻量级部署‌34。‌操作系统‌:选择 ‌Ubuntu 22.04 LTS‌,兼容…

Vue23Web 基礎性拉滿的面試題(2025版)還沒更新完...

Vue2&3 基礎性1. 關於Vue2和Vue3生命週期的差別2. Vue2&3組件之間傳參不同點Vue2 傳遞與接收Vue3 傳遞與接收 (使用script setup語法糖)Vue3 傳遞與接收 (不使用script setup語法糖) 3. Vue2&3 keep-alive 組件Vue2 keep-aliveVue3 keep-alive 進階性爲什麽POST請求…

SSM架构 +java后台 实现rtsp流转hls流,在前端html上实现视频播放

序言:书接上文,我们继续 SSM架构 NginxFFmpeg实现rtsp流转hls流,在前端html上实现视频播放 步骤一:把rtsp流转化为hls流,用Java代码进行转换 package com.tools;import java.io.BufferedReader; import java.io.IOExc…

测试用大模型组词

已经把hanzi-writer的js的调用、hanzi-writer调用的数千个汉字的json文件,全都放在本地了。虽然用的办法还是比较笨的。我注意到 大模型也可以部署本地,虽然使用频率低的情况下不划算。 尝试直接通过html的javascript通过api key调用大语言模型&#x…

AI革命先锋:DeepSeek与蓝耘通义万相2.1的无缝融合引领行业智能化变革

云边有个稻草人-CSDN博客 目录 引言 一、什么是DeepSeek? 1.1 DeepSeek平台概述 1.2 DeepSeek的核心功能与技术 二、蓝耘通义万相2.1概述 2.1 蓝耘科技简介 2.2 蓝耘通义万相2.1的功能与优势 1. 全链条智能化解决方案 2. 强大的数据处理能力 3. 高效的模型…

Unity Shader 学习15:可交互式雪地流程

本质是 利用顶点变换实现的: 通过一个俯视整个场地的正交摄像机,根据绑定在移动物体身上的粒子系统,来获取物体移动过的位置,记录到一张RenderTexture上作为轨迹图,再通过这张图来对雪地做顶点变换。 1. 由于顶点变换需…

结合rpart包的决策树介绍

决策树与CART算法 决策树是一种基于树状结构的监督学习算法。它通过从根节点开始递归地对特征进行划分,构建出一棵树来进行决策。决策树的构建过程需要解决的重要问题有三个:如何选择自变量、如何选择分割点、确定停止划分的条件。解决这些问题是希望随…

DeepSolution:比o1推理模型还强的RAG方案

一、为什么需要 DeepSolution? 1.1 复杂工程设计的挑战 在现代工程领域,设计一个满足多重复杂约束的解决方案是至关重要的。举个例子,假设我们需要设计一个在年降雨量 3000 毫米、膨胀土条件和频繁地震活动区域的安全高效医院建设方案。这种…

SpringBoot - 用责任链模式实现业务编排

文章目录 前因责任链:像工作台一样组织代码CodeSEQ3.1 定义处理器规范3.2 实现具体处理器3.3 共享上下文3.4 组装责任链 适用场景优势 前因 2000多行的业务逻辑里,各种校验规则、促销计算、库存操作像意大利面条一样缠绕在一起。最要命的是这样的代码结…

从家用显卡到AI文生视频——Wan2.1本地部署教程与一键包分享

今天要聊一聊AI文生视频的最新进展。一直以来,AI生成视频对硬件的要求都让人望而却步,尤其是家用显卡,总是感觉“心有余而力不足”。 AI文生视频以前 基本需要的显存大概几十上百G 但最近,阿里开源的 Wan2.1 彻底改变了这一局面…

Facebook营销自动化—— Python脚本 + 代理IP实现内容高效分发

目录 1. 引言:内容分发与Facebook营销的现状与痛点 2. 环境搭建与前期准备 2.1 开发环境与工具选择 2.2 获取代理IP 2.3 Facebook账号与开发者平台配置 3. Facebook内容分发的基本流程与策略 3.1 内容规划与策略制定 3.2 内容分发方式选择 3.3 风控与风险防…

TypeError: JSON.stringify cannot serialize cyclic structures

🤍 前端开发工程师、技术日更博主、已过CET6 🍨 阿珊和她的猫_CSDN博客专家、23年度博客之星前端领域TOP1 🕠 牛客高级专题作者、打造专栏《前端面试必备》 、《2024面试高频手撕题》、《前端求职突破计划》 🍚 蓝桥云课签约作者、…

Manus邀请码申请与获取全攻略

大家好,我是吾鳴。 之前吾鳴给大家分享过一篇Manus的介绍文章——《全网疯抢邀请码的Manus到底是个啥?看完这篇你就懂了!》,介绍了Manus是什么、与DeepSeek有些什么区别、生活中的应用场景以及工作中的应用场景。 今天吾鳴给大家分…

c++实现最大公因数和最小公倍数

最大公因数和最小公倍数的介绍 读这篇文章,请你先对最大公因数以及最小公倍数进行了解: 最大公因数(英文名:gcd) 定义:最大公因数,也称最大公约数,指两个或多个整数共有约数&…

Jetpack Compose — 入门实践

一、项目中使用 Jetpack Compose 从此节开始,为方便起见,如无特殊说明,Compose 均指代 Jetpack Compose。 开发工具: Android Studio 1.1 创建支持 Compose 新应用 新版 Android Studio 默认创建新项目即为 Compose 项目。 注意:在 Language 下拉菜单中,Kotlin 是唯一可…

PAM4信号技术

概述 PAM4(4-Level Pulse Amplitude Modulation)是一种四电平脉冲幅度调制技术,广泛应用于高速数据传输,特别是在100Gbps及以上的通信系统中。与传统的NRZ(Non-Return-to-Zero)相比,PAM4通过在每个符号周期内传输2个比特的信息,显著提升了数据传输效率。随着5G网络的发…

Visual Studio 2022新建c语言项目的详细步骤

步骤1:点击创建新项目 步骤2:到了项目模板 --> 选择“控制台应用” (在window终端运行代码。默认打印"Hello World") --> 点击 “下一步” 步骤3:到了配置新项目模块 --> 输入“项目名称” --> 更改“位置”路径&…

【UCB CS 61B SP24】 Lecture 25 26 - Minimum Spanning Trees 学习笔记

本文介绍了图论中的另一个经典问题:最小生成树(MST),讲解并用 Java 实现了用于求解 MST 的两个经典算法 Prim 与 Kruskal。 1. 最小生成树介绍 最小生成树(Minimum Spanning Tree,MST)是图论中…