FPGA中有限状态机的状态编码采用格雷码还是独热码?

news2024/11/10 18:40:04

        有限状态机是由寄存器组和组合逻辑构成的硬件时序电路,其状态(即由寄存器组的1和0的组合状态所构成的有限个状态)只可能在同一时钟跳变沿的情况下才能从一个状态转向另一个状态,究竟转向哪一状态还是留在原状态不但取决于各个输入值,还取决于当前所在状态。这里是指Mealy型有限状态机。Moore型有限状态机的状态转移只取决于当前状态,与输入值无关。

        在Verilog HDL中可以用许多种方法来描述有限状态机,最常用的方法是用always语句和case语句。下面的状态转移图表示了一个有限状态机:

上面的状态转移图表示了一个四状态的有限状态机,它的同步时钟是Clock,输入信号是 A 和 rst_n ,输出信号是 F 和 G。状态的转移只能在同步时钟(Clock)的上升沿时发生,往哪个状态的转移则取决于目前所在的状态和输入的信号(Reset 和 A)。

我们采用两种状态编码方式来实现这个有限状态机:

1)采用格雷码:

在ISE中,综合后,得到的RTL Schematic:

2)采用独热码:

程序和上面的几乎一样,只需要改下,各个状态对应的编码值即可,还有最后的default:state <= Idle;

还是给出程序吧:

上面两个程序的主要不同点是状态编码,2)采用了独热编码,而1)则采用Gray码,究竟采用哪一种编码好要看具体情况而定。对于用FPGA实现的有限状态机建议采用独热码,因为虽然采用独热编码多用了两个触发器,但所用组合电路可省下许多,因而使电路的速度和可靠性有显著提高,而总的单元数并无显著增加。采用了独热编码后有了多余的状态,就有一些不可到达的状态,为此在CASE语句的最后需要增加default分支项,以确保多余状态能回到Idle状态。

上面所说的多余状态是:4位编码有16种,独热码只列出了4种,剩下了12种,就是多余的状态。

另一位大牛只说了一句话,但很有启发:
因为,独热码实际上相当于已经译码过后的信号。
把数电书翻出来看看3-8译码器,看看译码以后的信号长什么样。

那我把3—8译码器的真值表给出来,确实如此。

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

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

相关文章

HAProxy负载均衡架构

目录 一、HAProxy简介1.Haproxy应用分析2.HAProxy的主要特性3.HAProxy常用的负载均衡策略4.LVS、Nginx、HAproxy的区别 二、Haproxy搭建 Web 群集1.haproxy 服务器部署2.编译安装 Haproxy3.Haproxy服务器配置4.添加haproxy 系统服务5.节点服务器部署6.启动haproxy服务7.日志定义…

LIST、SET、Queue

Java 集合概览Java 集合&#xff0c; 也叫作容器&#xff0c;主要是由两大接口派生而来&#xff1a;一个是 Collection接口&#xff0c;主要用于存放单一元素&#xff1b;另一个是 Map 接口&#xff0c;主要用于存放键值对。对于Collection 接口&#xff0c;下面又有三个主要的…

CloudCompare比较点云并统计特定距离误差范围内的点数

文章目录 1.导入点云2.旋转或平移某个点云3.配准点云3.点云差异比较4.统计特定误差范围内的点云数量 1.导入点云 点击文件夹图标&#xff0c;选择要导入到CC&#xff08;CloudCompare&#xff09;处理的两个点云&#xff0c;最终可看到点云目录树&#xff1a; 2.旋转或平移某个…

配置出接口方式的单服务器智能DNS

组网需求 如图1所示&#xff0c;企业部署了一台ISP1服务器对外提供Web服务&#xff0c;域名为www.example.com。ISP1服务器的私网IP地址为10.1.1.10&#xff0c;服务器映射后的公网IP地址为1.1.1.10。企业的DNS服务器上存在域名www.example.com与ISP1服务器地址1.1.1.10的对应关…

如何在微服务下保证事务的一致性 | 京东云技术团队

作者&#xff1a;京东科技 苗元 背景 随着业务的快速发展、业务复杂度越来越高&#xff0c;传统单体应用逐渐暴露出了一些问题&#xff0c;例如开发效率低、可维护性差、架构扩展性差、部署不灵活、健壮性差等等。而微服务架构是将单个服务拆分成一系列小服务&#xff0c;且这…

静态分析和动态分析

在开发早期&#xff0c;发现并修复bug在许多方面都有好处。它可以减少开发时间&#xff0c;降低成本&#xff0c;并且防止数据泄露或其他安全漏洞。特别是对于DevOps&#xff0c;尽早持续地将测试纳入SDLC软件开发生命周期是非常有帮助的。 这就是动态和静态分析测试的用武之地…

如何在 Ubuntu 20.04 系统上安装 Docker方法和使用

0. docker的例子&#xff0c;ubuntu中运行docker例子应用 1.首先对docker环境进行安装&#xff0c;我这里是ubuntu20.04的系统&#xff0c;进行演示&#xff0c;更新 apt 包索引 sudo apt update2.安装依赖包 sudo apt install apt-transport-https ca-certificates curl gn…

BatteryChargingSpecification1.2中文详解

1. Introduction 1.1 Scope 规范定义了设备通过USB端口充电的检测、控制和报告机制&#xff0c;这些机制是USB2.0规范的扩展&#xff0c;用于专用 充电器&#xff08;DCP&#xff09;、主机(SDP)、hub(SDP)和CDP(大电流充电端口)对设备的充电和power up。这些机制适用 于兼…

从校园跑腿系统看当代青年的消费观念与行为习惯

当代大学生的消费观念和行为习惯正在发生着巨大的变化&#xff0c;他们越来越注重方便、快捷和贴近自己的消费体验。在这一背景下&#xff0c;校园跑腿系统应运而生&#xff0c;成为了解决学生日常生活中烦恼的新选择。 ​校园跑腿系统是一款基于互联网技术、致力于提供高效、…

做好韩语同声传译,译员需要具备这些能力!

我们知道&#xff0c;同声传译是口译的高级形式&#xff0c;难度比较大&#xff0c;对译员的综合能力要求非常高。那么&#xff0c;针对同声传译的韩语翻译&#xff0c;译员需要具备什么条件&#xff0c;如何翻译效果比较好&#xff1f; 据了解&#xff0c;韩语同声传译是一项高…

会声会影2023最新中文旗舰版新功能介绍

会声会影Corel VideoStudio2023一款功能丰富的视频编辑软件。具有拖放式标题、转场、覆叠和滤镜&#xff0c;色彩分级、动态分屏视频和新增强的遮罩创建器&#xff0c;超越基本编辑&#xff0c;实现影院级效果。优化分屏剪辑功能&#xff0c;简化多时间轴编辑的工作流程&#x…

数字硬件建模SystemVerilog-通信总线建模 --Interface和modport

来到了SV最后一部分&#xff0c;预计三篇文章&#xff0c;两周更完&#xff0c;所有的思维导图如下&#xff1a; 概述 SystemVerilog Interface是modport的一种&#xff0c;但比简单的输入、输出或输入输出端口的功能更多。在其最简单的形式中&#xff0c;Interface端口将相关的…

使用Tailwind CSS创建自定义动画,进阶您的前端开发技能

从零开始&#xff0c;探索如何使用 TailwindCSS 自定义动画 Tailwind CSS是一种颠覆性的CSS框架&#xff0c;改变了开发者处理前端开发的方式。它的低级性和移动优先的方法使得它成为设计独特、响应式和可扩展的网页设计的热门选择。此外&#xff0c;它还具有强大的动画支持&am…

13共模电感

目录 一、原理 二、差模噪声和共模噪声主要来源 三、共模电感如何抑制共模信号 四、共模电感的选取 一、原理 在介绍共模电感之前先介绍扼流圈&#xff0c;扼流圈是一种用来减弱电路里面高频电流的低阻抗线圈。为了提高其电感扼流圈通常有一软磁材料制的核心。共模扼流圈有…

Django企业it资产管理系统

背景 21世纪&#xff0c;我国早在上世纪就已普及互联网信息&#xff0c;互联网对人们生活中带来了无限的便利。像大部分的公司都有自己的系统&#xff0c;由从今传统的管理模式向互联网发展&#xff0c;如今开发自己的系统是理所当然的。那么开发企业it资产管理系统意义和用处…

JavaWeb开发学习笔记_Vue

JavaWeb开发学习笔记_Vue Vue快速入门常用指令v-bind和v-modelv-onvif和vshowvfor 案例生命周期参考 Vue快速入门 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta http-equiv"X-UA-Compatible"…

Windows上使用CLion配置OpenCV环境,亲测可用的方法(一)

一、Windows上使用CLion配置OpenCV环境&#xff0c;亲测可用的方法&#xff1a; Windows上使用CLion配置OpenCV环境 教程里的配置&#xff1a; widnows 10 clion 2022.1.1 mingw 8.1.0 opencv 4.5.5 Cmake3.21.1 我自己的配置&#xff1a; widnows 10 clion 2022.2.5 mingw 8.…

Flink 2.0 启航,开启全新篇章

我们已经在开发者邮件列表上发起了关于 Flink 2.0 版本计划的讨论。我们相信现在是时候启动这个计划了&#xff0c;以便在明年作为 Apache Flink 的十周年庆典推出这个版本。欢迎大家参加关于 Flink 2.0 的愿景、功能、时间表、流程、路线图等方面的讨论&#xff01; 开发者邮件…

04.DolphinScheduler使用详细介绍

文章目录 创建Worker分组-指定执行机器使用创建执行脚本用户 执行脚本执行Shell脚本执行Spark任务执行Spark任务可能的报错Storage service config does not exist! 执行Hive任务执行HTTP任务创建任务任务参数任务样例 参数使用内置参数基础内置参数衍生内置参数画布中引用方法…

拓展业务规模 | 2023 Google 游戏开发者峰会

将游戏拓展到 PC 端&#xff0c;在很大程度上能够帮助您向更多玩家展示游戏魅力&#xff0c;进一步提高用户覆盖率、互动度和 ROI&#xff0c;并在 Google Play 平台上构建高质量的游戏。Google Play 游戏电脑端的每次更新&#xff0c;都旨在让您的跨平台开发更加轻松&#xff…