20
蓝冠招商盾,
蓝冠招商略,
蓝冠招商呜,

蓝冠官网《Q374919》状态机是如此常见,以至于有一些工具专门通过绘制圆圈和图形来创建状态机。有一些模拟器可以识别您的状态机并对其进行动画处理,以帮助您调试它。甚至还有一些合成工具,可以将错误纠正逻辑添加到状态机中,蓝冠官网 以便它能够从可能发生在高空或电噪声环境中的单个事件混乱中恢复。

上个月,我们开始研究最常见的硬件设计结构之一——状态机。状态机是如此常见,以至于有一些工具专门通过绘制圆圈和图形来创建状态机。有一些模拟器可以识别您的状态机并对其进行动画处理,以帮助您调试它。甚至还有一些合成工具可以为状态机添加错误纠正逻辑,以便它能够从可能在高空或电噪声环境中发生的单个事件故障中恢复。

您可以通过使用一种普遍接受的编码风格编写状态机来利用这些工具。上个月,当我们看到如何创建命名的状态和指定的状态寄存器时,蓝冠 我们开始了对这种编码风格的讨论。这个月,我们将研究用于创建下一个状态和输出生成逻辑的各种编码风格。

我们正在冒险进入组合编码风格的世界,这是一个极具争议的话题,以至于成年工程师在设计评审会议上看到烈酒时,几乎都要打起来了。本文研究了可用于实现状态机的三种基本编码风格。我们将使用这个简单的状态机作为示例:一条狗的生命。

这只狗过着简朴的生活。默认情况下,它会睡觉,但如果你喂它,它会很高兴,然后开始吃东西。在它吃完之后,它会恢复到快乐的状态,除非它累了,你再喂它,或者另一只狗走在街上。如果有另一只狗,它会开始叫,如果你喂它吃东西,如果它累了,它就会回去睡觉。

dog状态机有三个输入:tired、food和other_dog。

狗状态机有两个输出:嘴和尾巴。

狗在吠叫或吃东西的时候嘴就会动,蓝冠注册 狗在高兴的时候尾巴就会动(产品营销可能会争辩说尾巴在吃东西的时候也会动,但我们没有实施那种方法)。我们将用几种方法给我们的狗编码。

我们将看到,HDL使您能够控制最终代码如何实现状态机。这个过程有两个步骤。首先,我们将选择一个状态机架构,然后对其进行编码。关键是要认识到有许多可能的状态机架构,它们都提供了不同的好处和挑战。

所有状态机架构都有三到四部分:

组合逻辑来确定下一个状态。

组合逻辑来确定基于状态的输出。

一个状态寄存器。

时钟输出信号(可选)。

实现状态机最简单的方法是为前三部分创建一个流程:

我们有一个基于输入和当前状态实现下一个状态的逻辑云、一个当前状态寄存器和一个实现输出的逻辑云。

下面是实现这个简单状态机的代码:

您可以用三个独立的进程编写这种状态机。这有清晰的优点。每个过程只做一件事。请注意,输出逻辑和下一个状态逻辑具有不同的敏感性列表。输出只对当前状态敏感,而下一个状态逻辑对状态和输入信号敏感。这就是摩尔状态机的定义。

相关文章
为您推荐
各种观点

报歉!评论已关闭.