本应用手册在深入探讨可以使用状态机的应用之前,简要介绍了状态机。重点介绍 TI 的全新可编程逻辑系列 TPLD,展示如何在 InterConnect Studio(用于配置 TPLD 的软件)中设置和创建包含状态机作为设计中心的完整设计。
Other TMs
为了理解状态机,我们必须首先定义什么是状态。状态是一种工作模式,带有从一种状态转换到另一种状态的预定义行为和触发条件。该行为可以是一组预期的输出,例如一种状态的逻辑输出可以是 0010,而另一种状态的输出可以是 1011。状态机 (SM) 是一种用于控制器件或编程以逐步控制这些状态的系统。在查看状态机图时,圆圈表示状态,该状态的行为定义在圆圈内或圆圈下。
最简单的状态机如图 1-1 所示。器件处于空闲状态,处于断电模式。通电后,器件上电,输出 0。将程序和器件视为状态机通常可以简化代码,并在用户以特定状态为目标以实现特定预定义行为时实现更简单的调试。
虽然许多状态机是隐式的,但有些状态机是显式的。隐式状态机是在设计过程中未明确定义的状态机,例如图 1-1 中的状态机。TPLD 系列器件(特别是 TPLD1202)中可以找到显式状态机的一个很好的示例。TPLD1202 中的状态机有八种状态,可用于控制每种状态八种不同的输出,并可从任意状态转换为另一种状态。此状态机可作为异步状态机或同步状态机运行,并允许全局复位使状态机在运行期间的任意时刻进入预定义状态。
与硬件相关的状态机通常可分为两个主要类别之一:异步状态机 (ASM) 或同步状态机 (SSM)。
ASM 这种状态机可以在没有时钟的情况下进行状态转换。这种状态机的优点是器件可以在任何给定的时间进行转换,在状态机运行时无需运行时钟,并且不会消耗功率,缺点是不能将两个连续状态与同一转换标志相关联。ASM 的一个示例是简单与门,如图 2-1 所示。在该 ASM 中,A、B 和 VCC 是器件的输入,而且有一个输出。器件会通电并保持空闲状态,直到器件看到其中一个主要输入变为高电平。此时,状态机转换为输出不变的半状态。一旦另一个输入变为高电平,状态机就会转换为与 状态。此时,逻辑门输出逻辑高电平。
SSM 这种状态机的转换带有时钟。这意味着状态机只在时钟周期的上升沿检查转换标志。这种方式的好处是允许使用同一转换标志运行连续的状态转换。该时钟允许在切换状态之间存在固有延迟,并有助于同步多个不同的 SMS。这种状态机的缺点是时钟必须始终在系统中运行,从而消耗功率行。
此类状态机的一个示例是图 2-2 中所示的交通信号灯。使用具有感应环路的新型交通信号来检测当前是否有汽车在等红绿灯。一旦检测到车辆,就会设置状态转换触发器,但如果十字路口的交通没有同时转换,交通信号灯就无法转换,因此其中的状态机会等待时钟发出允许发生变化的信号。状态机进入绿灯阶段并等待,直至检测到十字路口有车辆通过。一旦出现这种情况,状态机就会转为黄灯,然后在下一个时钟脉冲时转为红灯。此时状态机重新开始一次。
InterConnect Studio (ICS) 是用于配置 TPLD 的软件。启动 IC 并选择器件后,在设计中添加状态机将启用对专用状态机块的配置。图 3-1 展示了添加状态机时的默认配置。要添加其他状态,请点击图 3-1 中突出显示的加号图标。默认情况下,状态机的唯一输入是 NRST 输入。此输入为低电平有效,使状态机恢复到初始状态。默认情况下,该位为 ST0,此输入是异步的,即使选择了状态机的同步模式也是如此。
此状态机中的状态选项包括“name”、“output value”和“transitions from”,如图 3-2 中所示。可配置“name”只是调整状态机视图和配置空间中的状态引用,但不会影响实际设计。“output value”是状态机处于该状态时 OUT7 - OUT0 上存在的二进制值的十六进制表示形式。每个输出可连接至一个内部端口,或者路由至输出引脚供外部使用。“Transitions From”下拉菜单可实现从一种状态到另一种状态的转换。在此下拉菜单中,选择任意选项会将转换从该选项添加到当前所选状态。例如,如果所选的当前状态为 st0,则在该下拉菜单中选择 st1 会创建从 st1 到 st0 的转换事件,如图 3-3 所示。
创建转换事件不足以使状态机转换状态,还需要触发器来激发该转换。图 3-4 展示了工作中的状态机非常基本的实现。NRST 连接到 POR,因此状态机不会复位。一旦 pin0 变为高电平,此状态机就会从其默认状态 st1 转换到 st0。
状态机可用于通过单个按钮检测输入以执行不同的操作。此类设计可在许多简单系统中用作主要控制器,也可以在使用微控制器时用于将固件开发的一些复杂性转移到外部 TPLD 器件。
在图 4-1 中,您可以看到一个状态机,该状态机旨在将来自单个按钮的输入分类为 4 种不同的常用输入格式。这些选项包括单按、1 秒保持、2 秒保持和双按。此状态机可在 TPLD 中使用,如图 4-2 所示。状态机的输出驱动用于双按计时的计时器,而 EVM 板上的一些 LED 可显示器件转换到不同状态。
只要图 4-2 中设计的 RST 引脚为低电平,器件就会复位至空闲状态,这也是器件的默认启动状态。只要 RST 引脚为高电平(按 EVM 上的按钮),状态机就会处于激活状态,尽管仍处于空闲状态,但仍会监视输入。假定在剩余部分中,RST 被保持在高电平。单次点击该按钮会触发双计时器块,并将状态机转换为 Single 状态。该计时器的持续时间可通过增大或减小“双计时器”块的控制数据来配置。如果在计时器结束之前再次按下该按钮,状态机会从 Single 模式转换为 Double 模式。Single 状态和 Double 状态的输出仅会馈送到 DFF CLK 输入中,从而将相关的 LED 从导通转换为关断或从关断转换为导通。如果按下按钮并在 1s 计时器 块持续时间内保持按下状态,则状态机会从空闲状态转换为保持 1s。这进行了与 Single 状态和 Double 状态类似的切换,但也会触发第二个 1s 计时器 块。保持 1s 状态不会重新触发同一个块的原因是此状态机是异步的,我们希望通过将输入连接到同一个触发器来防止任何意外跳过。如果再按住该按钮一秒钟,则 oneshot0 将使 cnt0 刷新 DFF,从而使 LED 闪烁。可以在图 4-3 和图 4-4 中观察此设计的行为。
该电路的功能只是为了突出状态机,因此与最终设计相比,周围的功能虽然是完成这一任务所必需的,但在很大程度上被简化了。
状态机是许多设计的核心。通过在 InterConnect Studio 中选择 TPLD1202 器件并搜索智能按钮控制器,可以将单按按钮设计用作设计的起点。TI 的全新可编程逻辑系列提供了一种声明和设计状态机的好方法,无需使用编程语言、FPGA 或 MCU。
有关 TPLD 系列器件的更多信息,请参阅可编程逻辑器件 (PLD);有关部分可用器件和用于原型设计的评估模块,请参阅表 5-1。
器件 | EVM |
---|---|
所有 TPLD | TPLD-PROGRAM |
TPLD1202DYYR | TPLD1202-DYY-EVM |
TPLD1202RWBR | TPLD1202-RWB-EVM |
TI 均以“原样”提供技术性及可靠性数据(包括数据表)、设计资源(包括参考设计)、应用或其他设计建议、网络工具、安全信息和其他资源,不保证其中不含任何瑕疵,且不做任何明示或暗示的担保,包括但不限于对适销性、适合某特定用途或不侵犯任何第三方知识产权的暗示担保。
所述资源可供专业开发人员应用TI 产品进行设计使用。您将对以下行为独自承担全部责任:(1) 针对您的应用选择合适的TI 产品;(2) 设计、验证并测试您的应用;(3) 确保您的应用满足相应标准以及任何其他安全、安保或其他要求。所述资源如有变更,恕不另行通知。TI 对您使用所述资源的授权仅限于开发资源所涉及TI 产品的相关应用。除此之外不得复制或展示所述资源,也不提供其它TI或任何第三方的知识产权授权许可。如因使用所述资源而产生任何索赔、赔偿、成本、损失及债务等,TI对此概不负责,并且您须赔偿由此对TI 及其代表造成的损害。
TI 所提供产品均受TI 的销售条款 (http://www.ti.com.cn/zh-cn/legal/termsofsale.html) 以及ti.com.cn上或随附TI产品提供的其他可适用条款的约束。TI提供所述资源并不扩展或以其他方式更改TI 针对TI 产品所发布的可适用的担保范围或担保免责声明。IMPORTANT NOTICE
邮寄地址:上海市浦东新区世纪大道 1568 号中建大厦 32 楼,邮政编码:200122
Copyright © 2024 德州仪器半导体技术(上海)有限公司