0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

如何在Verilog中创建有限状态机

科技观察员 来源:allaboutcircuits 作者: Eduardo Corpeño 2022-04-26 16:20 次阅读

本文描述了有限状态机的基础知识,并展示了在 Verilog 硬件描述语言中实现它们的实用方法。

有限状态机,简称 FSM,是硬件和软件系统中最普遍的操作模型之一。几乎每个有用的数字系统都可以定义为有限状态机,因此最好尽可能多地了解这种有用的系统模式。

数字电路中的有限状态机

有限状态机有多种描述方式,但最流行的两种是状态图和状态表。两种表示的示例如图 1 所示。

pYYBAGJnqzSAaRSjAAGLJD-cgDk049.png

图 1.显示为状态图和状态表的 FSM。左上角的图例显示了状态变量 A 和 B,以及输入 x 和输出 y。

请注意,这个 FSM 有一个输入信号 x 和一个输出信号 y,这使它成为一个Mealy 状态机。此 FSM 可以通过数字设计课程中教授的传统方法来实现,该方法围绕为实现状态变量的触发器生成激励逻辑。该逻辑是根据所选触发器类型的激励表设计的,即 SR、D、JK 或 T。

当我们将此技术应用于图 1 中的 FSM 时,我们会得到以下实现的某个版本。

pYYBAGJnqzWAeX3xAACPuzEgVOQ099.png

图 2.使用 JK 触发器的示例 FSM 的实现。

有关状态机的更多信息,您可能需要阅读 David Williams的文章在 VHDL 中实现有限状态机。

Verilog 如何提供帮助

那么,如果您想在 Verilog 中实现如图 1 所示的状态机,该怎么做呢?Verilog 应该在设计过程的哪个阶段接管?

虽然可以 手动设计整个系统,一直到图 2 中的示意图,然后用 Verilog 编写代码,但这并不是解决问题的最流行的方法。更糟糕的方法是描述原理图中的每个门,包括构成触发器的门!如果您在门级别描述所有内容,您的系统可能会 以某种方式工作,但这没有给编译器留下空间来优化您的设计以满足您的实际 需求,这可能更关注时序和功率,而不仅仅是正确性。

请记住:使用硬件描述语言的原因是为了利用您将使用的综合编译器,并且像任何编译器一样,您给予它的自由度越大,您就越有可能产生最佳实现。

所以一个聪明的起点是状态表。您只需指示 Verilog 机器在每个状态下应该做什么,而不是使用哪个门或触发器。

在 Verilog 中,状态机的一个出色构造是Case 语句。每个案例的主体都应该检查状态变量及其期望的行为。下面的一段代码展示了这个结构。

case (state)

STATE_0: // Code for State 0

STATE_1: // Code for State 1

// ...

STATE_N: // Code for State N

endcase

因此,通过我们的示例,这是图 1 所示状态机的实现。请注意,输出 y 是一个组合函数。

module MyFSM(

input clk,

input x,

output y);

reg [1:0] state;

assign y = state[1] & state[0] & x;

always @ (negedge clk)

case (state)

2'b00: state <= x?2'b01:2'b00;

2'b01: state <= x?2'b10:2'b00;

2'b10: state <= x?2'b11:2'b00;

2'b11: state <= 2'b00;

endcase

endmodule

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Verilog
    +关注

    关注

    28

    文章

    1345

    浏览量

    110009
  • 状态机
    +关注

    关注

    2

    文章

    492

    浏览量

    27493
收藏 人收藏

    评论

    相关推荐

    Verilog状态机+设计实例

    的是有限状态机(Finite-State Machine,FSM),简称为状态机,表示在有限状态以及这些状态之间的转移和动作等行为的数学模
    的头像 发表于 02-12 19:07 3887次阅读
    <b class='flag-5'>Verilog</b><b class='flag-5'>状态机</b>+设计实例

    有限状态机有什么类型?

    在实际的应用,根据有限状态机是否使用输入信号,设计人员经常将其分为Moore型有限状态机和Mealy型有限状态机两种类型。
    发表于 04-06 09:00

    基于有限状态机在LIN总线开发的应用

    基于有限状态机在LIN总线开发的应用      引言   随着汽车智能化程度的提高和迅速升级
    发表于 04-20 13:47 836次阅读
    基于<b class='flag-5'>有限状态机</b>在LIN总线开发<b class='flag-5'>中</b>的应用

    有限状态机_FSM_的实现

    本文主要介绍了IP模块的有限状态机的实现。
    发表于 03-22 15:42 0次下载

    有限状态机FSM在PLD的实现分析

    本文通过举例 利用VHDL 语言描述了不同模式的有限状态机 分析了有限状态机在 PLD 综合的特点 。
    发表于 03-22 15:41 3次下载

    有限状态机的建模与优化设计

    本文提出一种优秀 、高效的 Verilog HDL 描述方式来进行有限状态机设计 介绍了 有限状态机的建模原则 并通过一个可综合的实例 验证了 该方法设计的有限状态机在面积和功耗上的优
    发表于 03-22 15:19 1次下载

    VHDL有限状态机设计-ST

    EDA的有限状态机,广义而言是指只要涉及触发器的电路,无论电路大小都可以归结为状态机有限状态机设计在学习EDA时是很重要的一章。
    发表于 06-08 16:46 3次下载

    初学者对有限状态机(FSM)的设计的认识

    有限状态机(FSM)是一种常见的电路,由时序电路和组合电路组成。设计有限状态机的第一步是确定采用Moore状态机还是采用Mealy状态机
    发表于 02-11 13:51 4277次阅读
    初学者对<b class='flag-5'>有限状态机</b>(FSM)的设计的认识

    如何使用FPGA实现序列检测有限状态机

    输出部分外, 有限状态机还含有一组具有“记忆”功能的寄存器, 这些寄存器的功能是记忆有限状态机的内部状态, 它们常被称为状态寄存器。在有限状态机
    发表于 11-04 17:17 12次下载
    如何使用FPGA实现序列检测<b class='flag-5'>有限状态机</b>

    基于事件驱动的有限状态机介绍

      一、介绍 EFSM(event finite state machine,事件驱动型有限状态机),是一个基于事件驱动的有限状态机,主要应用于嵌入式设备的软件系统。 EFSM的设计原则是:简单
    的头像 发表于 11-16 15:29 2329次阅读

    如何以面向对象的思想设计有限状态机

    有限状态机又称有限状态自动机,简称状态机,是表示有限状态以及在这些
    发表于 02-07 11:23 4次下载
    如何以面向对象的思想设计<b class='flag-5'>有限状态机</b>

    基于事件驱动的有限状态机介绍

    EFSM(event finite state machine,事件驱动型有限状态机),是一个基于事件驱动的有限状态机,主要应用于嵌入式设备的软件系统
    的头像 发表于 02-11 10:17 1027次阅读

    FPGA有限状态机编写如何选择状态编码?

    Verilog HDL可以用许多种方法来描述有限状态机,最常用的方法是用always语句和case语句。
    发表于 03-23 14:06 603次阅读

    一个基于事件驱动的有限状态机

    EFSM(event finite state machine,事件驱动型有限状态机),是一个基于事件驱动的有限状态机,主要应用于嵌入式设备的软件系统。 EFSM的设计原则是:简单!EFSM的使用者只需要关心:
    的头像 发表于 08-30 09:28 832次阅读
    一个基于事件驱动的<b class='flag-5'>有限状态机</b>

    有限状态机分割设计

    有限状态机分割设计,其实质就是一个状态机分割成多个状态机
    的头像 发表于 10-09 10:47 623次阅读