状态机所包含的N种状态通常需要用某种编码方式表示,即状态编码,或状态分配。

选择合适的编码方案,将有助于电路的面积和资源的利用。

状态编码最常见的三种类型是:顺序二进制编码格雷码独热码、约翰逊编码

顺序编码(Sequential State Machine Encoding)

二进制编码为最紧凑的编码,采用顺序的二进制数编码的每个状态。

eg. state0 state1 state2 state3 表示为 '00'  '01' '10' '11'

优点在于它使用状态向量的位数最小。但其从一个状态转换到另一个状态时,可能会有多位比特位发生变化,[有中间态产生] 瞬变次数多,易产生毛刺,引发逻辑错误

格雷码(Gray Code )

在相邻状态的转换中,每次只有一位比特位发生变化,可以减少产生毛刺和一些暂态的可能,但不适合于有很多状态跳转的情况。

递归生成码表

这种方法基于格雷码是反射码的事实,利用递归的如下规则来构造:

  1. 1位格雷码有两个码字

  2. (n+1)位格雷码中的前2n个码字等于n位格雷码的码字,按顺序书写,加前缀0

  3. (n+1)位格雷码中的后2n个码字等于n位格雷码的码字,按逆序书写,加前缀1 [4]

  4. n+1位格雷码的集合 = n位格雷码集合(顺序)加前缀0 + n位格雷码集合(逆序)加前缀1

2位格雷码

3位格雷码

4位格雷码

4位自然二进制码

00

000

0000

0000

01

001

0001

0001

11

011

0011

0010

10

010

0010

0011

110

0110

0100

111

0111

0101

101

0101

0110

100

0100

0111

1100

1000

1101

1001

1111

1010

1110

1011

1010

1100

1011

1101

1001

1110

1000

1111

独热编码

即 One-Hot 编码,又称一位有效编码,每个码元值只有一位是'1',其他位都是'0',

如S0=3'b001,S1=3'b010,S2=3'b100

即N个状态需要N个触发器。独热码状态机的速度仅与到某特定状态的转移数量有关而与状态数量无关,速度很快。且由于其状态译码简单,所以节省和简化了组合逻辑电路。FPGA器件由于寄存器数量多而逻辑门资源紧张,采用独热编码可以有效提高FPGA资源的利用率和电路的速度。独热码还具有设计简单、修改灵活和易于调试、易于综合、易于寻找关键路径、易于进行静态时序分析等优点。因此尽量采用独热编码。

NEXT PAGE:

在综合器中指定编码方式

Verilog --状态机编码方式相关推荐

  1. Verilog常见编码方式:二进制码、格雷码、独热码

    Verilog常见编码方式有:二进制码.格雷码.独热码:三种编码方式各有特点利弊,因此有必要理解比较,以求不同场合的合理选择: 目录 一.结论: 二.详细了解 二进制码 格雷码 独热码 比较 三.参考 ...

  2. Verilog中状态机编码方式的选择:二进制编码(Binary)、格雷码(Gray-code)编码、独热码(One-hot)编码

    一般的,在Verilog中最常用的编码方式有二进制编码(Binary).格雷码(Gray-code)编码.独热码(One-hot)编码. 二进制码和格雷码是压缩状态编码. 若使用格雷编码,则相邻状态转 ...

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

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

  4. verilog状态机以及编码详解

    在Verilog中最常用的编码方式有: 1.二进制编码(Binary) 2.格雷码(Gray-code)编码 3.独热码(One-hot)编码 二进制码和格雷码是压缩状态编码. 若使用格雷编码,则相邻 ...

  5. Verilog-状态机编码方式对比:独热码 vs 格雷码

    博主福利:100G+电子设计学习资源包! http://mp.weixin.qq.com/mp/homepage?__biz=MzU3OTczMzk5Mg==&hid=7&sn=ad5 ...

  6. FPGA之道(56)状态的编码方式

    文章目录 前言 状态的编码方式 binary one-hot gray johnson auto compact sequential user speed none safe mode 前言 据我说 ...

  7. 高速串行通信常用的编码方式-8b/10b编码/解码

    绪论 8b/10b编码/解码是高速串行通信,如PCle SATA(串行ATA),以及Fiber Channel中常用的编解码方式.在发送端,编码电路将串行输入的8比特一组的数据转变成10比特一组的数据 ...

  8. verilog状态机 三段式 状态机 (代码 可以运行)

    代码在git link "硬件设计很讲究并行设计思想,虽然用Verilog描述的电路大都是并行实现的,但是对于实际的工程应用,往往需要让硬件来实现一些具有一定顺序的工作,这就要用到状态机思想 ...

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

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

最新文章

  1. 分享两篇Google Map API的介绍
  2. [2018年工作重点规划]二.max脚本加强编写能力
  3. #每天问自己个问题#6. SIP标准协议 RFC3261
  4. 联邦学习的一些使用库
  5. 【CentOS Linux 7】【Linux网络配置基础】
  6. 【深入Java虚拟机】之一:Java内存区域与内存溢出
  7. 如何导出树结构清晰的代码机构目录
  8. pip安装neural_renderer报错的解决方法
  9. CNNIC报告:中国网民超8亿,人工智能取得突出成果
  10. springboot和springcloud及常用注解积累
  11. 样条曲面_用SolidWorks曲面将六个小圆管向大圆管过渡
  12. 四天玩转windows phone开发视频之第二天总结
  13. # SUMO 仿真建模
  14. 简述导线平差计算的五个步骤_闭合导线平差计算步骤
  15. 不规则动词过去式和过去分词归纳
  16. 微信公众号开发-自定义菜单
  17. Openssl 命令之cer证书转成pem. 利用ptf私钥文件生成公钥
  18. 1.8 微信小程序 使用canvas绘制奥运会五环
  19. Java面试题大全(part_4)
  20. golang_微信公众号网页授权

热门文章

  1. Fuchsia OS 将推送给所有第一代 Nest Hub 设备
  2. 1688获得店铺的所有商品
  3. 树莓派软路由Openwrt
  4. 使用Xilinx XSCT工具进行烧录
  5. MFC使用Windows API实现U盘插拔检测,获取U盘容量,U盘内容移动删除,开启和关闭U盘以及获取盘符
  6. Redis应用项目---抢红包功能(四)
  7. 洛谷 P1645 序列
  8. 理想点法matlab p趋向无穷大,Matlab讨论区 - 声振论坛 - 振动,动力学,声学,信号处理,故障诊断 - Powered by Discuz!...
  9. 红队渗透测试技术:如何通过鱼叉式网络钓鱼获得攻击机会?
  10. 英汉《营销学》常用词汇-1