状态机几乎可以实现一切时序电路。

有限状态机(FiniteStateMachine, FSM),根据状态机的输出是否与输入有关,可分为Moore型状态机和Mealy型状态机。Moore型状态机输出仅仅与现态有关和Mealy型状态机不仅与现态有关,也与输入有关,所以会受到输入的干扰,可能会产生毛刺(Glith)的现象,所以我们通常使用的是Moore型状态机。

状态机的编码,二进制编码(Binary),格雷码编码(Gray-code),独热码(One-hot)。不同的编码方式是防止在状态转移中发生突变,使得状态转移更为稳定,系统更加可靠,但是通常情况下我们直接采用的是二进制进行编码,除非系统对稳定性和状态编码有特殊要求。

状态机的描述,一段式、二段式、三段式。

一段式状态机,将组合逻辑和时序逻辑混合在一起,这样的写法对于逻辑简单的状态机来说还是可以使用的,但是对于复杂的逻辑就不推荐了,如果状态复杂也会容易出错,而且一个always块中信号太多也不利于维护和修改。

两段式状态机也是一种常用的写法,它把组合逻辑和时序逻辑区分出来,第一段负责状态的转移,第二段是组合逻辑赋值,但是这种写法的缺点是,组合逻辑较容易产生毛刺等常见问题。

三段式状态机就可以较好的解决一段二段的不足,我也是比较推荐的写法,第一段采用时序逻辑负责状态转移,第二段组合逻辑负责数据赋值,第三段时序逻辑负责输出,代码层次清晰,容易维护,时序逻辑的输出解决了两段式写法中组合逻辑的毛刺问题。但是资源消耗会多一些,此外,三段式从输入到输出会比一段式和二段式延迟一个时钟周期。在书写状态机的时候,一定要事先设计好状态转移图,将所有的状态都考虑到,避免状态进入死循环,或者跳到偏离态。


版权所有权归卿萃科技 杭州FPGA事业部,转载请注明出处

作者:杭州卿萃科技ALIFPGA

原文地址:杭州卿萃科技FPGA极客空间 微信公众号


扫描二维码关注杭州卿萃科技FPGA极客空间


浅谈FPGA有限状态机相关推荐

  1. 浅谈FPGA网络PHY芯片RTL8211FD的配置和简单使用

    最近迷上了FPGA的网络通信和GTP光通信,个人感觉光通信简单一些,那就从难得网络通信开始吧,先搞个最简单的,使用MDIO配置和读取网络PHY的信息. 板子:米联客的MA703FA(A7-35T板子) ...

  2. 浅谈FPGA与音频处理器的结合

    FPGA通常是面向通信行业,尽管其主要开发者仍然专注于通信应用, 但他们越来越关注存储和服务器市场. 但是, 广阔的工业市场又如何呢? 通常, 工业市场的要求并不像存储.服务器或通信应用程序所要求的那 ...

  3. 浅谈XILINX FPGA CLB单元 汇总 (CLB、LUT、存储单元、Distributed RAM、移位寄存器、多路复用器、进位逻辑(Carry Logic))

    浅谈XILINX FPGA CLB单元 汇总 (CLB.LUT.存储单元.Distributed RAM.移位寄存器.多路复用器.进位逻辑(Carry Logic)) 一.概述 CLB可配置逻辑块是指 ...

  4. 浅谈用ModelSim+Synplify+Quartus来实现Altera FPGA的仿真

    浅谈用ModelSim+Synplify+Quartus来实现Altera FPGA的仿真 工作内容: Mentor公司的ModelSim是业界最优秀的HDL语言仿真软件,它能提供友好的仿真环境,是业 ...

  5. 浅谈同步复位与异步复位

    浅谈同步复位与异步复位 1.FPGA设计中的复位方式是同步复位与异步复位.接下来将看看两者的概念和在实际设计中的区别以及各自的优缺点. 1.1 异步复位: 它指无论时钟沿是否到来,只要复位信号有效,就 ...

  6. 浅谈AM5728裸板调试

    一.浅谈ARM裸板调试 1. 连接仿真器,读写寄存器 将硬件仿真器插到ARM板的JTAG口上,然后连接PC,现在的ARM仿真器好像都是通过USB和PC相连了.连接好后,就给板子上电,然后打开PC端的调 ...

  7. 目前超级计算机国内外发展状况,浅谈超级计算机发展的过程及研究现状

    浅谈超级计算机发展的过程及研究现状 来源:用户上传 作者: 中图分类号:TP393.01 文献标识码:A 当前,多核技术的不断发展和日渐成熟,使得处理器的性能得到巨大提升.但是对于存储设备来说,无论是 ...

  8. 浅谈 主存储器 与 辅助存储器

    浅谈 主存储器 与 辅助存储器 概述 存储器(Memory)是现代信息技术中用于保存信息的记忆设备.计算机中的存储器按用途存储器可分为主存储器(内存)和辅助存储器(外存).小编会从名词解释 内部结构 ...

  9. 浅谈棋牌游戏开发框架之架构

    浅谈棋牌游戏开发框架之架构 关键字: 棋牌游戏 架构 框架 开发 发表文章 摘要:现在来和大家分享下怎么架构和实现框架来满足棋牌游戏需求的.一.原型符合棋牌项目框架,快速换皮,快速融合.多渠道多包体. ...

最新文章

  1. SilverFoxServer出炉!!
  2. 多租户saas 架构_[译/注] Force.com 多租户互联网应用开发平台的设计
  3. php 两变量值互换 方法
  4. SpringBoot配置图片虚拟映射
  5. 习题:Dual Matrices(思路题/分治)
  6. php第三节(运算符)
  7. 洛谷 P1852 [国家集训队] 跳跳棋
  8. C/C++面试宝典2020版(最新版)
  9. pycharm 输入法光标跟随
  10. WEP/WPA/WPA2/WPA3初识
  11. 0 win10重装partition_gpt分区无法安装win10的根本原因
  12. Storyboard 之segue用法总结
  13. 叽歪网创始人李卓桓:叽歪的微信息模式
  14. 概率论与数理统计(3.4) 相互独立的随机变量
  15. 指纹识别-(2)指纹图像的获取
  16. 计算机管理记事本,电脑记事本软件
  17. Artetxe2018CoNLL_Uncovering divergent linguistic information in word embeddings...
  18. Matlab plot子图的间距和边缘距离如何调整(已解决)
  19. 如何有效提高技能?推荐《刻意练习》
  20. 网页去色变黑白+网页黑白恢复为彩色

热门文章

  1. 自行车速度计量和里程记录小仪表
  2. [游戏资讯]国产游戏的前景有多广阔?
  3. linux 退出终端仍运行进程 日志输出,后台执行任务,不在终端打印信息
  4. 海淘 Google Nexus4 历程
  5. 14.信号完整性 关键字:信号反射 振铃 串扰 开关噪声 地弹 特性阻抗
  6. 深圳大学C语言 超级战士实验
  7. CSS控制文字的一些基本属性的使用
  8. 【FPGA开发笔记】—— 数码管动态显示项目详细剖析+个人心得体会
  9. bison使用error死循环的记录
  10. git撤销文件的修改