三段式状态机_FPGA入门系列9状态机及do文件

文章简介本系列文章主要针对FPGA初学者编写,包括FPGA的模块书写、基础语法、状态机、RAM、UART、SPI、VGA、以及功能验证等。将每一个知识点作为一个章节进行讲解,旨在更快速的提升初学者在FPGA开发方面的能力,每一个章节中都有针对性的代码书写以及代码的讲解,可作为读者参考。拾第十章:状态机 Verilog HDL 的语句块都是并行执行的, 但是在很多情况下,我们...
摘要由CSDN通过智能技术生成

文章

简介

本系列文章主要针对FPGA初学者编写,包括FPGA的模块书写、基础语法、状态机、RAM、UART、SPI、VGA、以及功能验证等。将每一个知识点作为一个章节进行讲解,旨在更快速的提升初学者在FPGA开发方面的能力,每一个章节中都有针对性的代码书写以及代码的讲解,可作为读者参考。

ad34bf35aae38598c6080c0d742551ec.gif

第十章:状态机

ad34bf35aae38598c6080c0d742551ec.gif

        Verilog HDL 的语句块都是并行执行的, 但是在很多情况下,我们希望执行按照顺序的方式进行,而状态机就可以很好的实现顺序执行。
        有限状态机(Finite State Machine, FSM) 又简称为状态机, 是我们用Verilog HDL 描述数字电路的重要组成方式。状态机分为 mealy 型和 moore 型,其中 mealy 型指的是输出不仅与当前状态有关,还与输入有关, moore 型指的是输出只与当前状态有关。

        状态机的设计基本上采取 always 块加上 case 语句的结构,一般分为三种描述方式,即一段式、二段式、三段式。简单的说,一段式指的是在一个 always
块内使用时序逻辑既描述状态的转移,同时也描述数据的输出;二段式指一个always 块使用时序逻辑描述状态转移,另外一个 always 块使用组合逻辑描述数据输出;三段式指使用三个 always 块,一个 always 模块采用时序逻辑描述状态转移,一个 always 块采用组合逻辑判断状态转移条件,描述状态转移规律,另一个 always 块描述状态输出(可以用组合电路输出,也可以时序电路输出)。
        在使用 Verilog HDL 描述状态机时,习惯性的使用两个均采用时序逻辑的 always 块,第一个 always 块描述状态的转移, 第二个 always 块描述数据的输出, 这样既消除了组合逻辑可能产生的毛刺, 又减小了代码量。组合逻辑产生毛刺可由图 1 说明,输入两个变量 a 和 b 进行相与, 理论上认定 a 和 b 在①处同时变化,这样相与的结果一直为低,然而由于布线的差异, a 和 b 同时变化的可能性很低,这样就会出现图 1 所示的情况

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值