47、有限状态机:分类、优化与实践考量

有限状态机:分类、优化与实践考量

1. 有限状态机的分类

有限状态机(FSM)的分类可以依据其下一状态和输出的决定因素来进行。下面的表格仿照卡诺图,对确定性自动机进行了分类:

输出函数 g 依赖于 输入 输入和状态 状态
转移函数 f 依赖于
输入 D Y
输入和状态 O
状态 A C

部分子类从技术角度来看没有意义,原因如下:
- 不可观测的自动机在工程应用中毫无用处。
- 控制对输出没有影响的状态毫无意义。
- 让输出依赖于固定且实际上不存在的状态没有意义。

其他子类因在数字功能块中有广泛应用而有了特定名称,具体如下:
| 子类 | 示例 |
| — | — |
| Y | 全米利自动机,如控制器 |
| O | 全摩尔自动机,如控制器、元胞自动机的单元 |
| A | 自主自动机,如时钟发生器、伪随机数发生器 |
| D | 延迟自动机,如流水线级(组合逻辑加寄存器) |
| C | 组合逻辑,如全加器、非流水线乘法器 |

2. 状态约简

当有限状态机的状态表中两个状态的当前输出字段和下一状态字段完全相同时,从图的角度看,它们的出边标记相同且指向相同的顶点。从观察机器的输入和输出的角度,这两个状态看起来是相同的。

定义 :如果有限状态机置于两个状态中的任意一个,对于任何输入符号串都能以相同的输出符号串响应,则这两个状态被认为是不可区分的,也称为等价状态或冗余状态。合并这些状态对机器的行为没有影响,得到的新自动机与原自动机等价,但实现起来更简单。

定理 :有限状态机的两个状态不可区分,当且仅当 (a) 它们的输出相同;(b) 对于任何可能的输入符号,它们的后继状态不可区分。

直接应用该定理进行状态约简存在递归性的困难,更实用的方法是Paull和Unger提出的蕴含表算法。不过,由于HDL综合中包含自动状态约简功能,设计者无需手动操作。

示例
原状态机有11个状态,状态表和状态图如下:
| i(k) | 00 | 01 | 10 | 11 | 00 | 01 | 10 | 11 |
| — | — | — | — | — | — | — | — | — |
| s(k) | o(k) | s(k + 1) | | | | | | |
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 2 | 2 | 0 | 0 | 0 | 0 | 2 | 8 |
| 3 | 3 | 0 | 0 | 0 | 0 | 3 | 5 |
| 4 | 4 | 0 | 0 | 0 | 0 | 4 | 5 |
| 5 | 2 | 0 | 0 | 0 | 0 | 6 | 5 |
| 6 | 9 | 0 | 0 | 0 | 0 | 7 | 11 |
| 7 | 1 | 0 | 0 | 1 | 1 | 1 | 1 |
| 8 | 0 | 0 | 0 | 0 | 9 | 8 | 8 |
| 9 | 6 | 0 | 0 | 0 | 0 | 10 | 11 |
| 10 | 4 | 1 | 0 | 0 | 1 | 1 | 1 |
| 11 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |

经过系统的状态约简,发现 (7,10) 是不可区分的状态,还揭示了 (2,3,4)、(5,8) 和 (6,9) 之间的等价关系。新状态机保留了输入 - 输出关系,但状态数从11个减少到了6个,状态表和状态图如下:
| i(k) | 00 | 01 | 10 | 11 | 00 | 01 | 10 | 11 |
| — | — | — | — | — | — | — | — | — |
| s(k) | o(k) | s(k + 1) | | | | | | |
| 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 |
| 2 | 2 | 0 | 0 | 0 | 0 | 2 | 5 |
| 5 | 2 | 0 | 0 | 0 | 0 | 6 | 5 |
| 6 | 6 | 0 | 0 | 0 | 0 | 7 | 11 |
| 7 | 1 | 0 | 0 | 1 | 1 | 1 | 1 |
| 11 | 0 | 0 | 0 | 0 | 1 | 1 | 1 |

3. 实际问题与实现考量
3.1 寄生状态和符号

输入符号、状态和输出符号最终都要编码为二进制向量。由于编码所需的位数可能导致存在未使用的编码值,这些值被称为寄生或剩余值。

在二值电子设备实现的有限状态机中,除非满足特定条件,否则会出现寄生输入符号、寄生状态和寄生输出符号。当有限状态机遇到寄生输入符号或陷入寄生状态时,从数学角度,转移函数 f 和输出函数 g 未定义,但实际电路逻辑会以确定但未指定的方式产生输出。

物理自动机对寄生输入符号的反应可能有多种情况,如无明显反应、产生一个错误输出符号、通过未计划的转移进入正常状态或陷入寄生状态。陷入寄生状态后,可能回到正常子图,也可能陷入死状态或循环路径,即锁定状态。

为应对这些问题,可以采取以下措施:
1. 将所有寄生输入符号合并到精心选择的正常符号。
2. 确保所有寄生状态重新收敛到原始子图,通常在逻辑综合前为每个寄生状态明确指定一个正常后继状态。
3. 为所有寄生状态分配无害的输出符号。
4. 添加额外的复位机制,使自动机能够从任何其他状态强制进入起始状态 s0。
5. 当检测到寄生状态或输入符号时,通过错误信号或消息通知系统层次结构中的上一级,以便上级系统决定采取纠正措施。

3.2 米利型、摩尔型、梅德韦杰夫型和组合输出位

输出符号编码为二进制向量会带来一些微妙的问题。当自动机的一部分输出位仅依赖于当前状态,不受当前输入影响时,这些输出被称为摩尔型输出,也称为“解码摩尔型输出”或“无条件输出”。只要存在依赖于当前输入的其他输出位(米利型输出,即“条件输出”),整个状态机仍为米利自动机。

米利或摩尔机器可能包含梅德韦杰夫型输出,即从状态寄存器直接或取反后抽取的位,其切换基本与时钟对齐。此外,有限状态机可能具有组合输出,即仅依赖于当前输入的位。组合输出和米利型输出有时被归为直通路径,只有米利机器可以有直通路径。

了解输出类型在电路设计、逻辑仿真、时序分析和原型测试中都很有用。

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;

    A(i(k)):::process -->|输入| F(f):::process
    B(s(k)):::process -->|当前状态| F
    F -->|下一状态| C(s(k+1)):::process
    F -->|输出部分依赖| G(g):::process
    A -->|输出部分依赖| G
    B -->|输出部分依赖| G
    G -->|米利型输出| D(o'(k)):::process
    G -->|摩尔型输出| E(o"(k)):::process
    G -->|梅德韦杰夫型输出| H(o"'(k)):::process
    G -->|组合输出| I(o""(k)):::process
4. 直通路径和逻辑不稳定性

状态机中存在直通路径会带来严重危险。任何使用有限状态机当前输出确定其当前输入的外部电路可能会导致逻辑矛盾,进而引发不受控制的振荡。因为米利和组合输出会立即响应新输入,问题的棘手之处在于,矛盾和振荡可能仅在有限的状态和输入值子集中出现,而在其他情况下设计表现正常。

示例
考虑以下控制循环:

...
act := ini
repeat
...
act := act - dcr
until act < 0
...

其可能的硬件结构中,有限状态机解释ALU的进位/借位位并控制ALU操作和数据传输路径。当 act ≥ dcr 时,一切正常;但当该关系不成立时,电路会进入振荡状态,这是由于在一个时钟周期内进行减法和决策的尝试导致的,与微处理器评估代码的方式不同。

为避免不稳定性,有以下四种选择:
- 选择具有非零延迟的自动机。
- 使反馈路径仅从摩尔或梅德韦杰夫位开始以引入延迟。
- 在周围电路中添加延迟寄存器。
- 正式证明尽管存在零延迟环路,但不存在逻辑不稳定性。

5. 硬件成本

有限状态机的成本包括维持其状态的双稳态元件、计算转移函数 f 和输出函数 g 的逻辑门以及必要的布线。在典型的硬件实现中,f 和 g 会共享部分逻辑门。

经典状态图在描述中等复杂度系统时规模会急剧增大,原因如下:
- 状态图是扁平的,没有抽象层次,缺乏层次概念。
- 状态图缺乏模块化,不区分机制。
- 状态图除了用单一全局状态外,无法对并发活动进行建模。

当电路组织为一个有限状态机时,组合爆炸也是电子硬件的一个问题。超过一定复杂度后,将所需功能划分为多个较小的协作自动机(有时称为链接状态机,LSM)会更高效。这样不仅可以从多个简单模型组合状态和复杂行为,还可以使用专门且高效的子电路来实现子功能,如计数器、查找表(LUT)、编码器/解码器等。

示例
一个同步电路要以其时钟的1/4速率生成长度为15的二进制伪随机序列。概念上需要一个有60个状态的自主自动机,有两种基本选择:
- 将整个功能封装在一个单一的有限状态机中。
- 将其分解为一个四分频计数器和一个在该计数器控制下工作的4位线性反馈移位寄存器(LFSR)。

不同组织方式的硬件成本如下表所示:
| 结构 | 状态分配 | 触发器 | 标准单元 | [GE] | [Mλ²] |
| — | — | — | — | — | — |
| 计数器 & LFSR | 原生 | 6 | 9 | 13 | 0.15 |
| 扁平摩尔FSM | 相邻 | 6 | 26 | 33 | 0.23 |
| 扁平摩尔FSM | 随机(典型) | 6 | 102 | 107 | 0.76 |
| 扁平摩尔FSM | 独热 | 60 | 69 | 130 | 488 | 1.16 |

状态约简通常有助于消除状态表和状态图中的不必要杂项。在大多数情况下,状态约简还能降低电路复杂度和提高性能,因为它引入了新的无关条件,为找到更好的状态编码提供了更多空间,从而实现更经济的解决方案。但使用更少的位来存储机器状态有时会增加转移和/或输出函数中的项和文字数量,使组合电路膨胀,抵消使用更少双稳态元件所节省的成本。

以下是状态约简对硬件成本影响的示例:
| 状态数 | 状态分配 | 触发器 | 标准单元 | [GE] | [Mλ²] |
| — | — | — | — | — | — |
| 11 | 相邻 | 4 | 35 | 38 | 0.26 |
| 6 | 相邻 | 3 | 14 | 20 | 0.12 |

综上所述,在设计有限状态机时,需要综合考虑分类、状态约简、实际问题和硬件成本等多个方面,以实现高效、稳定的电路设计。

6. 切换冒险

在数字电路的瞬态效应讨论中可知,几乎任何组合网络都有可能产生称为冒险的短暂无用脉冲。有限状态机的输出函数 g 也不例外,除非有证据表明,否则米利和摩尔自动机都可能产生冒险。而梅德韦杰夫机器由于在状态寄存器和输出之间没有组合网络,不会产生冒险。

为了使自动机的信号无冒险,可以在输出端添加额外的触发器,使信号的切换与时钟对齐。经过这种重新同步寄存器的位通常被称为寄存器输出,以区别于直接从输出逻辑获取的普通位。

当需要将无冒险输出与最小延迟相结合时,有两种选择:
- 给米利自动机添加重新同步寄存器。
- 通过对状态进行编码,构建一个梅德韦杰夫机器,使输出位能够直接从状态寄存器中获取。

这两种选择还能消除不稳定性风险,相关情况总结如下表:
| 自动机类型 | 冒险情况 | 不稳定性情况 | 无冒险与最小延迟实现方式 |
| — | — | — | — |
| 米利自动机 | 可能产生冒险 | 可能存在不稳定性 | 添加重新同步寄存器 |
| 摩尔自动机 | 可能产生冒险 | 可能存在不稳定性 | |
| 梅德韦杰夫机器 | 无冒险 | 无不稳定性 | 编码状态使输出位从状态寄存器获取 |
| 组合逻辑 | 可能产生冒险 | | |

graph LR
    classDef process fill:#E5F6FF,stroke:#73A6FF,stroke-width:2px;

    A(自动机):::process -->|可能产生冒险| B(冒险):::process
    A -->|可能存在不稳定性| C(不稳定性):::process
    D(米利自动机):::process -->|添加重新同步寄存器| E(无冒险与最小延迟):::process
    F(梅德韦杰夫机器):::process -->|编码状态使输出位从状态寄存器获取| E
7. 总结与设计建议

有限状态机在数字电路设计中有着广泛的应用,但也面临着诸多实际问题和挑战。为了设计出高效、稳定的有限状态机,以下是一些总结和建议:

7.1 分类与选择

根据具体的应用需求,合理选择有限状态机的类型,如米利型、摩尔型、梅德韦杰夫型或组合逻辑。了解不同类型的特点和适用场景,有助于优化设计。

7.2 状态约简

在设计过程中,尽量进行状态约简。虽然状态约简并非总是能降低成本,但在大多数情况下,它可以简化状态表和状态图,减少电路复杂度,提高性能。

7.3 寄生状态和符号处理

充分考虑寄生状态和符号的影响,采取有效的措施来处理它们,如合并寄生输入符号、确保寄生状态收敛、分配无害输出符号、添加复位机制和通知上级系统等,以避免电路出现不稳定或锁定状态。

7.4 输出类型管理

清楚不同输出类型(米利型、摩尔型、梅德韦杰夫型和组合输出)的特点和作用,在电路设计、仿真、分析和测试过程中合理利用这些信息。

7.5 避免不稳定性

对于可能存在的逻辑不稳定性问题,选择合适的方法来避免,如选择具有非零延迟的自动机、引入延迟、添加延迟寄存器或进行形式化证明。

7.6 硬件成本优化

在设计时,考虑采用模块化和层次化的设计方法,将复杂的功能分解为多个较小的协作自动机,以提高设计效率和降低硬件成本。

通过综合考虑以上各个方面,可以更好地设计和实现有限状态机,满足实际应用的需求。

8. 未来展望

随着数字电路技术的不断发展,有限状态机的设计和应用也将面临新的挑战和机遇。未来可能会在以下几个方面有所发展:

8.1 自动化设计工具的改进

现有的HDL综合中已经包含了自动状态约简等功能,但未来的自动化设计工具可能会更加智能和强大,能够自动处理更多的实际问题,如寄生状态和符号的处理、不稳定性的检测和避免等,进一步提高设计效率和质量。

8.2 与新兴技术的结合

有限状态机可能会与人工智能、机器学习等新兴技术相结合,以实现更复杂的功能和更高的性能。例如,利用机器学习算法来优化状态约简过程,或者使用人工智能技术来预测和处理寄生状态和符号。

8.3 新的应用领域拓展

随着物联网、智能家居、自动驾驶等领域的发展,有限状态机的应用范围可能会进一步扩大。在这些新的应用领域中,有限状态机需要更好地适应不同的环境和需求,如低功耗、高可靠性等。

总之,有限状态机作为数字电路设计中的重要工具,将在未来继续发挥重要作用,同时也需要不断地进行创新和改进,以适应不断变化的技术和应用需求。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值