有限状态机编码时采用格雷码和采用独热码的选择

格雷码:相邻之间只变1bit,编码密度高。
独热码:任何状态只有1bit为1,其余皆为0,编码密度低。
比如说,表示4个状态,那么状态机寄存器采用格雷码编码只需要2bit:00(S0),01(S1),11(S2),10(S3);
采用独热码需要4bit:0001(S0),0010(S1),0100(S2),1000(S3)。所以很明显采用格雷码可以省2bit寄存器。
难理解的是,为什么独热码更节省组合逻辑:
其实很简单,
例一:
假如我们要在代码中判断状态机是否处于某状态S1,
对于格雷码的状态机来说,代码是这样的:assign S1 = (STATUS==2'b01);
对于独热码来说,代码是这样的就行:assign S1=STATUS[1];
所以独热码的译码非常简单。
例二:
考虑最简单的跳变,当A为1时,状态机会从S0跳到S1:。
采用格雷码写:
STATUS[1:0] <= (STATUS==2'h00) & A ? 2'h01 : 2'h00;
采用独热码写:
STATUS[1] <= STATUS[0] & A;

有人怀疑这里的逻辑,认为只check独热码的一个bit有问题。当然是没问题的,0110,0011等编码属于不care的编码,在卡诺图化简中,不care的编码可以与其余的有效编码合并化简。实际上综合器也会这么做,所以独热码非常容易化简。
假如说S0跳到S1条件为A;S1跳到S2条件为B;S2跳到S3条件为C;S3跳到S0条件为D;
那么整个状态机化简之后代码就是:
STATUS[0] <= STATUS[3] & D;
STATUS[1] <= STATUS[0] & A;
STATUS[2] <= STATUS[1] & B;
STATUS[3] <= STATUS[2] & C;

总结一下:
独热码适合写条件复杂但是状态少的状态机;
格雷码适合写条件不复杂但是状态多的状态机。

转载链接:https://www.zhihu.com/question/40994717/answer/89125204

有限状态机:独热码vs格雷码相关推荐

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

    今天看<从算法设计到硬件逻辑的实现>这本电子书时,遇到了一个问题,就是有限状态机的编写中,状态编码是采用格雷码还是独热码呢?究竟采用哪一种编码呢? 采用独热码为什么节省许多组合电路? 等等 ...

  2. 状态机与独热码、格雷码、二进制码

    状态机 简称FSM,也叫同步有限状态机 同步:同步的意思就是在系统时钟的作用下 有限:有限代表状态机中的状态是有限的 根据影响输出分为两大类,一为Moore.二为Mealy Moore:若最后的输出只 ...

  3. FPGA学习笔记---二进制码、独热码、格雷码分析对比

    在Verilog学习中常用的编码方式有二进制编码(Binary).格雷码(Gray-code)编码.独热码(One-hot)编码,对于新手来说,搞不清楚编码为什么要分这么多格式?统一用一种格式不好吗? ...

  4. 数制和码制(数制的转换的方法,BCD码<8421,2421,5421,余三码>,格雷码,原码,反码,补码,定点数和浮点数)

    目录 1.数制的转换 1)二,八,十六进制进制转十进制 加权系数求和法 2)十进制转二,八,十六进制 除基取余法(短除法) 减权定位法 3)二,八,十六进制的相互转换 2.BCD码 3.格雷码 4.原 ...

  5. BCD码、8421码、余三码、格雷码

    用四位二进制代码来表示一位十进制数,称为二--十进制编码,简称BCD(Binary Coded Decimal)码.根据代码的每一位是否有权值BCD码可分为有权码和无权码两类,应用最多的是8421BC ...

  6. php bcd编码,什么是BCD码、8421码、余三码、格雷码

    用四位二进制代码来表示一位十进制数,称为二--十进制编码,简称BCD(Binary Coded Decimal)码.根据代码的每一位是否有权值BCD码可分为有权码和无权码两类,应用最多的是8421BC ...

  7. 数电 8421码与格雷码的转换

    8421码向格雷码转化,照抄第一位即格雷码第一位,8421码第一位与第二位,相比按照同0异1,写格雷码第二位,8421码第二位与第三位相比,得格雷码第三位,类推格雷码第四位.因相比如图像Y,可记作二哥 ...

  8. FPGA/数字IC之有限状态机:简介及其编码方式:顺序码、独热码与格雷码比较

    目录 一.状态机的分类 二.状态机的优点与存在的问题 三.状态的编码方式 四.三种方式的比较 一.状态机的分类 标准状态机分为摩尔(Moore)状态机与米勒(Mealy)状态机. 摩尔状态机的输出只与 ...

  9. verilog中状态机的三种编码方式的比较(二进制码、独热码、格雷码)

    最近做了一个小项目,是关于状态机中三种编码方式的比较,总结了一下三种编码方式的不同,可以会在以后IC笔试面试过程中用到,简单记录一下三种编码方式的优缺点. 三种编码方式如下图所示:其中独热码只有一位为 ...

最新文章

  1. oracle 游标示例
  2. python:LEGB标识符解析顺序
  3. NHibernate之旅(14):探索NHibernate中使用视图
  4. 从MS .NET CF版访问电话API(完整版) (转载)
  5. C#学习笔记(十三):I/O操作
  6. 如何获得物体的主要方向?
  7. 计算机小键盘价格,带小键盘的笔记本电脑是多少寸
  8. WIN7 X64 如何删除计算机管理里面一些无效的服务
  9. 基于粒子滤波的定位算法 ——原理、理解与仿真
  10. 华为x6000刀箱和机架服务器RAID配置和超线程关闭
  11. 微信公众号网页开发和小程序开发之路
  12. vue keep-alive用法
  13. 从一个CFS调度案例谈Linux系统卡顿的根源
  14. 1:基本初等函数的性质
  15. 支付宝开通海外退税 阿里腾讯暗战跨境O2O_21世纪网
  16. C++解决:不存在从 “std::string” 到 “LPCWSTR” 的适当转换函数
  17. 如何合理管理您的时间呢?
  18. 解决Win10系统电脑使用耳机听歌、看视频、看网页只有伴奏背景音没有人声的方法
  19. Trinoo DDOS 攻击软件分析
  20. 《Linux与Python 编程 R》--实验指导书(2020)

热门文章

  1. 中国流动人口动态监测调查数据CMDS
  2. 基于PHP+MySQL的校园餐厅展示订餐系统
  3. ng之ChangeDetectorRef
  4. Word控件Spire.Doc 【超链接】教程(4):如何修改Word文档中的超文本
  5. @Repeatable注解信息获取
  6. 关于Linux服务器上部署tomcat项目,输入数据乱码解决
  7. 音乐与计算机摘要,音乐教育论文摘要_论文摘要_论文摘要范例
  8. gel和react哪个厉害_lunarlon和react哪个好?
  9. 复习 1.c语言输入输出宽度限定
  10. 【Linux】Linux中的网桥设置