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

这篇具有很好参考价值的文章主要介绍了FPGA中有限状态机的状态编码采用格雷码还是独热码?。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

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

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

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

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

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

1)采用格雷码:

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

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

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

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

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

2)采用独热码:

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

还是给出程序吧:

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

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

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

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

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

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

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

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

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

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

FPGA中有限状态机的状态编码采用格雷码还是独热码?文章来源地址https://www.toymoban.com/news/detail-449271.html

到了这里,关于FPGA中有限状态机的状态编码采用格雷码还是独热码?的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Verilog | 二进制与格雷码

    格雷码是一个叫弗兰克·格雷的人在 1953 年发明的,最初用于通信。格雷码是一种循环二进制码或者叫作反射二进制码。格雷码的特点是从一个数变为相邻的一个数时,只有一个数据位发生跳变,由于这种特点,就可以 避免二进制编码计数组合电路中出现的亚稳态 。格雷码常

    2023年04月14日
    浏览(27)
  • verilog手撕代码5——计数器(置位、加减、环形、扭环形、格雷码计数器实现)

    2023.5.12 编写一个十六进制计数器模块,计数器输出信号递增每次到达0,给出指示信号 zero ,当置位信号 set 有效时,将当前输出置为输入的数值 set_num 。 注意 :这里zero=1和num=0是同一拍输出的,按道理如果根据num=0,然后去输出zero=1应该延迟一拍。所以这里考虑将number延迟一

    2024年02月07日
    浏览(44)
  • 10.31一些代码分析,香浓展开,移位器(桶形多位),二进制转格雷码

     always的block之间,采用并行执行 always之内,采用非阻塞赋值,为顺序执行 这个把使能信号和W信号组合在一起,进行case语句,即只有合并信号最高位为1时,才进行操作 always后面要写@,assign不用 这没有期望的边沿,就是只要发生变化就会触发 加上posedge,negedge就可以标记期望

    2024年02月07日
    浏览(45)
  • 12-同步状态机的结构以及Mealy和Moore状态机的区别,Verilog实现有限状态机的4种方式,以及总结有限状态机设计的一般步骤

    由于寄存器传输级(RTL)描述的是以时序逻辑抽象所得到的有限状态机为依据,因此,把一个时序逻辑抽象成一个同步有限状态机是设计可综合风格的Verilog HDL模块的关键。 在本章节中,在了解状态机结构的基础上通过各种实例,由浅入深地介绍各种可综合风格的Verilog HDL模

    2024年01月17日
    浏览(36)
  • Unity通用有限状态机的从零搭建手册(一):阵前磨枪

    前言 本文的创作目的是总结工作中累积的经验和成果,并通过写教学文章的方式进行巩固和查漏补缺,在不足之处加以改进,工作时由于时间原因没有实现的一些设计也会借这次机会进行补完。我会在写文章的过程中和读者一起从新开始搭建和优化一个状态机系统以及一个应

    2024年02月02日
    浏览(34)
  • 【FPGA入门】第四篇、有限状态机

    目录 第一部分、一个关于有限状态机的例子 第二部分、学会有限状态机的准备知识 1、什么是有限状态机? 2、为什么需要状态机? 3、什么是竞争冒险? 3.1、什么情况下会发生竞争冒险? 3.2、为什么组合逻辑电路会产生竞争和冒险? 3.3、那什么是竞争?什么是冒险? 3.4、

    2024年02月09日
    浏览(29)
  • FPGA设计编程(四) 有限状态机设计

    目录 【实验要求】  【实验软件工具】 【实验一】设计一个交通红绿灯控制器模块,实现主干道和支路之间红绿黄灯的信号转换 1. 实验内容与原理说明   2. 实验模块程序代码和激励代码 (1)设计模块代码 (2)激励模块代码 3. 波形仿真图 4.门级电路图 【实验二】设计一个小轿

    2024年02月06日
    浏览(31)
  • FPGA状态机的理解与设计

    FPGA状态机的理解 功能框图: 功能框图 moore型状态机的输出G只与当前的状态有关,而mealy状态机的输出不但与当前的状态有关还与输入有关 注:在实际的生活中,mealy型状态机的出现场景较多。 无论是moore型状态机还是mealy型的状态机,一般都使用三段式状态机来设计。在设

    2024年02月04日
    浏览(27)
  • FPGA实验三:状态机的设计

    目录 一、实验目的 二、实验要求 三、实验代码 1.design source文件部分代码

    2024年02月12日
    浏览(26)
  • zynq学习之fpga篇(三)状态机的使用

    可乐机每次投1枚一块硬币,每瓶可乐3块钱,投3个硬币就可以出可乐。 状态转移图 分析 一个简单的状态转移图,由此编写代码。  这篇想找一个简单的状态机实例,没有找到,下一篇开始进一阶,数码管驱动。 不啻微芒,造炬成阳。

    2024年02月22日
    浏览(48)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包