状态机设计总结
状态机图(状态活动)汇总课件

已发货
收到货物[缺部分商品]
检查完[缺部分商品]
等待
收到货物[商品齐全]
取消
取消 取消
取消订单
状态图(订单处理3)
检查 do/检查商品
订单处理
收到货物[缺部分商品]
检查完[缺部分商品]
等待
检查完[商品齐全]
办理发货 do/启动发货
收到货物[商品齐全]
已发货
发货
取消 取消订单
状态图(航班预订1)
无预定
预定/已预订数+=预订数
部分预定
event 预 定 [ 预 订 数 < 空 位 数 ] event退 订 [ 退 定 数 < 已 预 订 数 ] /
取消航班
关闭
预定关闭
关闭 关闭
退订/已预订数-=退定数
预定完
预定[无空位]
状态图(航班预订3)
使用复合状态
预定中 退订[已预订人数==0]/已预订数=退定数
action)
Action 可执行的原子计算。 不可中断,其执行时间可忽略不计。
两种特殊动作:
进入动作 (entry action) 进入状态时执行的动作;Entry/ setMode(onTrack)
退出动作 (exit action)
退出状态时执行的动作;Exit /setMode(offTrack)
●例如:在烧水器的状态图中, turnOn 就是一种调用事 件,用来将开关置于“0n” 状态。
触发事件的四种类型
改变事件
● 某个指定属性值为真时,事件得到触发。 ●在对象生命周期内, 一直在计算改变事件中的属性值。
当属性值为真时,事件触发,计算停止 ●例如: when(temperature>100)/alerm()
第八次课-8章状态机精选全文

z<=0;
三、基于状态机的设计要点
1.起始状态的选择
起始状态是指电路复位后所处的状态,选择一 个合理的起始状态将使整个系统简洁高效。有的 EDA软件会自动为基于状态机的设计选择一个最佳 的起始状态。
2.状态转换的描述
一般使用case语句来描述状态之间的转换, 用case语句表述比用if-else语句更清晰明了。
有限状态机类型 有限状态机的Verilog描述 有限状态机的设计要点
一、两种有限状态机
二、有限状态机的Verilog描述
描述对象:
当前状态、下一状态、输出逻辑
描述方式: 单过程、双过程、三过程
单过程描述方式: 放在一个过程中描述,相当于采用时
钟信号同步,克服输出产生毛刺。但输出 逻辑相对于双过程,要延迟一个时钟周期。
end end
s3: begin if(x==0)
begin state<=s0; z<=0;
end else begin
state<=s4; z<=1; end end
s4: begin if(x==0)
begin state<=s0; end else begin state<=s4; z<=1; end end default:
双过程描述方式: 一个过程 由时钟信号触发的时序过程
(当时钟发生跳变时,状态机状态发生变 化。一般用case语句检查状态机的当前状态; 另一过程是组合过程,对于摩尔型,输出 只与当前状态有关,因此只需用case语句即 可,对米里型,因与当前状态和输入都有 关,因此可用case 语句和 if组合进行描述。
第10讲 有限状态机(moore型)的设计

2 为什么使用状态机
有限状态机克服了纯硬件数字系统顺序方式控制不灵 活的缺点。
状态机的结构模式相对简单。
状态机容易构成性能良好的同步时序逻辑模块。
状态机的VHDL表述丰富多样,结构清晰。 在高速运算和控制方面,状态机更有其巨大的优势。 就可靠性而言,状态机的优势也是十分明显的。
001 100 100
B方向 (红绿黄) 100
100 010 001
12.4 Moore型状态机设计方法
画出状态转移图:
S0
———— 010100
S1
———— 001100
S3 ————
100001
S2
———— 100010
12.4 Moore型状态机设计方法
实体设计
LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY jtd IS PORT( clk:IN STD_LOGIC; ZO:OUT STD_LOGIC_VECTOR(5 DOWNTO 0)); END jtd;
4 Moore型状态机设计方法
仿真波形
4 Moore型状态机设计方法
练习:位于十字路口的交通灯,在A方向和B方向 各有红、黄、绿三盏灯,每10秒变换一次。变换 顺序如下表: A方向 B方向
绿
黄 红
红
红 绿
红
黄
4 Moore型状态机设计方法
交通灯的全部状态及输出:
状态
S0 S1 S2 S3
A方向 (红绿黄) 010
VHDL描述 VHDL描述一般使用枚举类型定义状态机。
未收到一个有效位(0) 收到一个有效位(1) 连续收到两个有效位(11) 连续收到三个有效位(110) 连续收到四个有效位(1101) :S0 :S1 :S2 :S3 :S4
同步状态机的原理、结构和设计

输出集合
(执行动作) 执行动作)
nn
S 状态等待 状态位置
a1 , a2 , … , an x1 , x2 , … , xn
状态名称
转移方向
FSM应用 FSM应用
FSM通过状态图描述状态转换过程 FSM通过状态图描述状态转换过程 FSM:数字系统控制单元的建模 FSM:数字系统控制单元的建模 数字系统:
受控模块:功能模块,设计较易 控制模块实现
CPU FSM
执行耗费时间,执行时间的确定性方面,FSM优于CPU 执行耗费时间,执行时间的确定性方面,FSM优于CPU
FSM 构成
FSM用来解决一般时序逻辑电路问题,包括 FSM用来解决一般时序逻辑电路问题,包括 同步/ 同步/异步时序逻辑 状态寄存器
输入集合 A 状 态 迁 移
合 输 状 态 记 忆 成 输 集 合 形 出
状态迁移图
输入集合
(触发事件) 触发事件)
输出集合
(执行动作) 执行动作)
S
状态等待 状态位置
a1 , a2 , … , an x1 , x2 , … , xn
状态名称
转移方向
状态迁移图
状态编码 输入集合
(触发事件) 触发事件)来自什么是状态机有限状态机(简称状态机) 有限状态机(简称状态机)相当于一个控制器, 它将一项功能的完成分解为若干步,每一 步对应于二进制的一个状态,通过预先设 计的顺序在各状态之间进行转换,状态转 换的过程就是实现逻辑功能的过程。
为什么使用状态机
有限状态机克服了纯硬件数字系统顺序方式控制不灵活 的缺点。 的缺点。 设计方案相对固定,结构模式简单,可定义符号化枚 设计方案相对固定,结构模式简单, 举类型的状态。 举类型的状态。 状态机的HDL描述层次分明,结构清晰,易读易懂。 状态机的HDL描述层次分明,结构清晰,易读易懂。 描述层次分明 状态机容易构成性能良好的同步时序逻辑模块。 状态机容易构成性能良好的同步时序逻辑模块。 在高速运算和控制方面,状态机更有其巨大的优势。 在高速运算和控制方面,状态机更有其巨大的优势。 基于有限状态机技术设计的控制器其工作速度大大优于 CPU。 CPU。 就可靠性而言,状态机的优势也是十分明显的。基于 就可靠性而言,状态机的优势也是十分明显的。 有限状态机技术设计的控制器其可靠性也优于CPU。 有限状态机技术设计的控制器其可靠性也优于CPU。
状态机学习报告

状态机学习报告1.状态机概念状态机就是对具有逻辑顺序或时序规律的事件进行描述的一种方法,是由寄存器组和组合逻辑构成的硬件时序电路。
所有具有逻辑顺序和时序规律的事情都适合用状态机来描述。
状态机有三要素:状态(状态变量),在逻辑设计中,使用状态划分逻辑顺序时序规律。
输出,在某一个状态时特定发生的时间。
输入,状态机进入每个状态的条件。
2.状态机分类根据输出是否与输入条件有关,可以将状态机分为MOORE(摩尔)型和MEALY(米勒)两大类:A)摩尔型:状态机的输出仅依赖当前状态,与输入条件无关。
摩尔型状态机的描述方法:caseA: next_state <= BB: next_state <= C...endcaseB)米勒型:状态机的输出不仅依赖当前的状态,还与输入有关。
caseA: //不满足条件则停留在当前状态的跳转if(conditionA)next_state <= Belsenext_state <= AB: //两种不同次态的跳转if(conditionB)next_state <= Celsenext_state <= Dendcase另外,根据状态机数量是否有限,可将状态机分为FSM(有限状态机)和ISM(无限状态机)。
3.设计方法状态机的描述方式有:状态转移图、状态转移列表和HDL语言描述。
状态转移图经常在设计规划阶段定义逻辑功能时使用,也可以在分析已有源代码中的状态机时使用,这种图形化的描述方式有助于理解设计意图。
状态转移列表是用列表的方式描述状态机,是数字逻辑电路常用的设计方法之一,经常被用于状态化简,对于可编程逻辑设计而言,由于可用逻辑资源比较丰富,而且状态编码要考虑设计的稳定性、安全性等因素,所以并不经常使用状态转移列表优化状态。
使用HDL语言描述状态机应具有一定的灵活性,通过使用一些规范的描述方法,可以使HDL语言描述状态机更安全、更稳定、更高效、更易于维护。
CPLD实验报告

实验一 Xilinx软件及状态机设计一实验目的:学习FPGA设计软件, 掌握软件流程, 掌握状态机编程。
二实验内容:设计一个状态机三实验说明:状态机设计是数字电路中使用非常广泛和方便的时序设计工具。
由于硬件是并行的触发, 相对软件是串行执行, 那么让硬件电路按照节拍执行串行操作指令就成为一个问题, 这就是状态机的主要功能。
相应的, 软件指令中的几十条简单顺序执行代码可能需要硬件的几十上百个触发器去实现其功能。
所以, 软件与硬件的设计思路有相当大的区别。
当然, 随着FPGA规模的不断扩大, 这些问题也越来越容易解决了。
我们可以用软件的思路去描述自己的设计, 可能最终实现的电路是几十万门级的器件, 但是你只要花费几美元就能买到。
状态机是数字电路的基础, 因此, VHDL的学习也从这个实验开始。
四实验过程:1.在进行实验之前, 我先自学了VHDL语言。
2.熟悉Xilinx软件环境。
3.通过仿真, 读懂了states这段代码所实现的功能及其出现的问题。
五思考题:1.通过仿真, 这段代码实现相应功能时出了什么问题?请修正代码。
答:这段程序完成的是对红绿灯的控制功能。
通过仿真发现所有的灯都比预期的多亮了2秒, 比如东西方向绿灯亮62秒(应该是60秒), 黄灯是5秒(应该是3秒)。
出现此问题的原因是没有考虑到硬件的延时问题。
所以只要把程序中的59改为57, 39改为37, 3改为1, 再进行仿真, 结果就正确了。
2.状态机输出分成同步输出和异步输出, 状态机异步输出直接用状态机的某个状态进行组合逻辑运算来得到一个输出, 同步输出是在该状态的时钟上跳沿控制输出变化。
请问同步输出和异步输出利弊各在哪里?答: 同步输出的优点是: 时钟脉冲的间距解决了组合逻辑电路中的延时和竞争问题。
只要时钟脉冲的宽度合适, 输出就不会存在竞争与现象。
缺点是: 外部输入信号的变化应满足触发器正常工作所需的建立和保持时间。
因为上述特点使得同步时序输出的工作速度的提高受到限制, 且对时钟脉冲到达个触发器的时间及外部信号的变化有较严格的要求。
状态机设计与综合实用方法

S1 = 3'd1, S2 = 3'd2, S3 = 3'd3, ERROR = 3'd4; reg [2:0] state, next; always @(posedge clk or posedge rst)//异步复位,时序逻辑 if (rst) state <= IDLE; else state <= next; always @(state or i1 or i2 or i3 or i4) begin //组合逻辑,敏感列表包含当前状态以及所有的状态 机输入 next = 3'bx;//设置默认值,以便防止因为 if 或者 case 语句不完整综合生成锁存器 err = 0; n_o1 = 1; o2 = 0; o3 = 0; o4 = 0; case (state) IDLE: begin next = ERROR;//如果下面所有的 if 条件都不符合,则对 next 赋该默认值 if (!i1) next = IDLE; if (i1 & i2) next = S1; if (i1 & !i2 & i3) next = S2; end S1: begin next = ERROR; if (!i2) next = S1; if (i2 & i3) next = S2; if (i2 & !i3 & i4) next = S3; n_o1 = 0; o2 = 1; end S2: begin next = ERROR; if (i3) next = S2; if (!i3 & i4) next = S3;
图 1 为状态机结构图
显式的 FSM 描述方法可以描述任意的 FSM(参考 Verilog 第四版 P181 有限状态机的 说明)。两个 always 模块。其中一个是时序模块,一个为组合逻辑。时序模块设计与书上 完全一致,表示状态转移,可分为同步与异步复位。 同步: always @(posedge clk) if (!reset) ………… 异步: always @(posedge or negedge reset) if (!reset) …………
简述状态机组合逻辑设计原理 -回复

简述状态机组合逻辑设计原理-回复状态机组合逻辑设计原理是一种常用的数字电路设计方法,通过将多个状态机模块进行组合和联结,实现复杂数字系统的设计。
该方法在计算机硬件、通信系统、嵌入式系统等领域得到广泛应用。
本文将详细介绍状态机组合逻辑设计原理的基本概念和步骤,以帮助读者深入了解和掌握该设计方法。
首先,让我们从状态机的基本概念开始。
状态机是一种数学模型,用于描述和控制系统在不同状态下的行为。
在数字电路设计中,状态机通常包括输入、输出和状态寄存器三个主要部分。
输入是外界输入信号,输出是系统生成的输出信号,状态寄存器用于存储当前状态。
状态机通过接收输入信号、执行状态转移和输出控制等操作,完成对系统行为的控制。
在状态机组合逻辑设计中,我们会将多个状态机模块进行组合和联结,以实现复杂系统的设计。
这种组合和联结的方式可以通过层次化、串行和并行等方式进行,具体方式取决于设计需求和电路复杂度。
下面,让我们一步一步地回答中括号内的内容,详细介绍状态机组合逻辑设计原理。
首先,我们需要确定复杂系统的功能需求和设计规格。
这一步骤非常重要,它决定了我们后续的设计方案。
在这一步骤中,我们需要明确系统的输入输出信号,各个子系统的功能和相互之间的关系等。
通过对需求和规格的分析,我们可以确定系统的功能分块,以及各个分块之间的关系。
接下来,我们需要将功能需求和规格转化为状态机模型。
这一步骤主要包括状态的确定和状态转移的定义。
首先,我们需要根据每个子系统的功能,确定状态机的各个状态。
状态的确定应尽量满足功能需求和规格,同时尽可能简化和精简状态机模型。
其次,我们需要定义状态转移条件和状态转移动作。
状态转移条件是指状态之间的转移触发条件,状态转移动作是指在状态转移过程中需要执行的操作。
状态转移条件和状态转移动作的定义应与功能需求和规格一致,并尽可能明确和简洁。
然后,我们需要设计状态机的控制逻辑。
状态机的控制逻辑用于根据输入信号、当前状态和状态转移条件,决定下一个状态和输出信号。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
状态机设计简介状态机的设计被广泛地用于时序控制逻辑中,它是许多数字系统的核心。
状态机可以应付众多应用场合的需求,覆盖宽范围的性能和复杂度;例如微处理器与VLSI外围接口的低级别控制,常规微处理器中的总线裁决和时序产生,定制的位片微处理器,数据加密和解密,传输协议等。
通常在设计周期中,控制逻辑的细节安排在最后处理,因为系统需求的改变和特征的增强会对其造成影响。
对于控制逻辑设计,可编程逻辑是一个很宽松的解决方案,因为它允许简单的修改而不必扰乱PCB板布局。
其灵活性提供了在不影响市场化时间的前提下,允许设计改动的机会。
大多数带寄存器的PAL器件应用都是需要使用状态机设计技术的时序控制逻辑。
随着技术的发展,新的高速、高性能的器件不断出现,它们简化了状态机设计的任务。
对于状态机设计,宽范围的不同功能与性能的解决方案是可行的。
在本次讨论中,我们将检验状态机执行的功能,它们在多种器件中的实现,以及它们的选择。
什么是状态机?状态机是一个以有序的方式,遍历预定的状态序列的数字设备。
状态是在电路的不同部分,测量到的一组数值。
一个简单状态机可以由以下几部分构成:基于PAL器件的组合逻辑,输出寄存器和状态寄存器。
这样一个序列发生器中的状态由状态寄存器和/或输出寄存器中所存储的值来决定。
状态机的通用形式可以用图1所示的设备来描述。
除了这一设备的输入和输出,状态机还有两个必需的组成元件:组合逻辑和存储器(寄存器)。
这类似于前面所讨论的带寄存器的记数器设计,它们本质上就是简单的状态机。
存储器用来存储状态机的状态,组合逻辑可以看成两个截然不同的功能模块:下一状态解码器和输出解码器(图2)。
当输出解码器产生实际的输出时,下一状态解码器决定状态机的下一状态。
尽管它们执行截然不同的两个功能,但是它们通常被组合成如图1所示的组合逻辑阵列。
状态机的基本操作有两部分:<!--[if !supportLists]-->1、状态机遍历状态序列,下一状态解码器基于当前状态和输入条件来决定下一状态。
<!--[endif]--><!--[if !supportLists]-->2、状态机提供基于状态转换的输出信号序列,输出解码器基于当前状态和当前输入条件来决定输出。
<!--[endif]-->用输入信号决定下一状态也被称为分支。
除了分支,复杂序列发生器提供循环的能力和子程序。
从一个状态到另一个状态的转换被称为控制定序,决定下一状态所需的逻辑被称为转换函数(图2)。
在决定输出的进程中,输入信号的使用决定了状态机的类型。
有两种被广泛知道的状态机,Mealy和Moore(图3)。
Moore型状态机的输出只是当前状态的函数。
而对于更为普遍的Mealy型状态机,输出是状态和输入信号的函数。
所需的逻辑被称为输出函数。
无论哪种类型,控制定序都取决于状态和输入信号。
多数实际的状态机是依赖于时钟信号来触发状态转换的同步时序电路。
单个时钟被连接到所有状态和输出边沿触发器,允许在时钟上升沿处发生状态转换。
异步状态机也是可能的,它利用组合逻辑的传输延迟来完成状态机的存储功能。
这样的状态机容易出故障,难以设计,很少被使用,在我们的讨论中,只着重于时序状态机。
<!--[if !supportEmptyParas]-->图1 简单状态机的功能块框图图2 状态机,带独立的输出和下一状态解码器图3 两种标准状态机的模型状态机应用状态机适用于很多系统控制应用领域。
下面举个应用的例子,讨论一下状态机是怎样被应用的。
在数字信号处理(DSP)的应用中,状态机不需要复杂微处理器的处理就可以提供高速高效的函数。
对于简单的算法,例如快速傅立叶变换的算法,状态机可以控制相乘和相加的向量组。
对于复杂的DSP操作,可编程DSP芯片更佳。
另外,可编程DSP方案不太可能得到和专用硬件方案一样快的速度。
再考虑视频控制器的例子。
它使用各种次序和长度的记数器来产生用于扫描的地址。
不是用实际的计数器来实现它们,而是用状态机的转换来实现该序列。
除了节约成本外,这种方法还有一个优点,就是释放了微处理器的资源,计数配置被设置或初始化后就不需要微处理器的管理了。
在外围控制中,简单的状态机会非常有效。
例如RLL(run-length-limited)代码。
编码和解码都可以被翻译成状态机,状态机可以在连续的数据流被读出时对其进行检查,并产生输出数据。
工业控制和机器人提供了更广泛的领域来使用简单的控制函数。
如定位机器人的手臂,简单的决策,三角函数计算这样的任务,通常不需要微处理器用堆栈和指针进行的高功耗操作,只需要一个可以存储有限多个状态并允许在各种条件下的简单分支的器件。
数据的解码和编码遇到了对大量媒体进行编码解码时相类似的问题,因为只有这儿不要求所制的图表很明显。
对于这样的问题,带安全位的可编程状态机是最理想的解决方案,因为存储器是内部编程的,不会被使用这个系统的人所访问。
所执行的功能控制器执行的所有系统设计功能都可分为归类到以下的状态机功能:<!--[if !supportLists]-->▪仲裁<!--[endif]--><!--[if !supportLists]-->▪事件监视<!--[endif]--><!--[if !supportLists]-->▪多条件的测试<!--[endif]--><!--[if !supportLists]-->▪时序延时<!--[endif]--><!--[if !supportLists]-->▪控制信号的产生<!--[endif]-->稍后我们会以一个设计实例来显示在设计状态机时,这些功能是如何被使用的。
状态机理论我们来简要分析一下所有时序逻辑系统的原理,有限状态机或简单状态机。
数字系统中,输出取决于过去的输入和当前状态的那部分可被定义为状态机。
其历史可用其内部状态值来概括。
当有新的输入时,FSM依据该输入和当前状态,会产生一个输出,FSM因此而转入下一状态。
这个新的状态同样依据该输入和当前状态。
图2显示了FSM的结构。
内部状态存储在一个标为“Memory”的模块中。
如前所述,需要两个组合函数:转换函数,产生下一状态的值;输出函数,产生状态机输出。
状态图表示如图4所示,FSM的行为可以以图形的方式来说明。
这被称为状态图,或状态转换图,每个椭圆代表一个状态,每个箭头代表状态间的一次转换。
引起转换的输入被显示在各自转换箭头的附近。
图4 状态机图示图5显示了控制定序的状态转换图。
直接控制定序需要一个以状态A到状态B的无条件转移,相似的,条件控制定序显示了根据输入信号I1来决定状态C 到状态D还是状态E的条件转换。
图5 控制定序对于Moore型状态机,输出的产生是用带状态的输出(圆圈)的方法表示,如图6。
类似的,对于Mealy型状态机,输出的产生是用输出赋值到转换(箭头)的方法表示,如图4。
有关Mealy或Moore输出产生的更多细节将在后面给出。
图6 输出的产生对于这种表示法,当有效的输入或输出信号同时出现在同一箭头附近时,输入输出区分不清。
解决的方法通常是在输入个输出之间加一条斜线(图4和图6)。
有时,采用一个附加的引脚列表来说明逻辑极性和输入输出。
如图4所示的状态转换图写出了引起转换的输入值,如果取而代之以转换,用布尔表达式定义输入组合或引起该转换的组合,该状态转换图会更加紧凑。
举个例子,如图7所示,一些转换用带输入START、X1和X2的机制来显示。
在状态1和2的转换中,输入X1和X2被忽略,因而不出现在转换图中。
这样节约了空间,使得其功能更显而易见。
图7 带记忆功能的状态转换图该方法不小心就会出这样的问题。
如图8所示的状态转换,这里有三组输入组合,(I0, I1, I2, I3) ={1011}, {1101} 和 {1111},使得(/I0 * /I2 +I3)和(I0 * I1 + I0 * I2)都为真。
因为转换到两种下一状态是不可能的,所以这里就出现了错误。
因此必须保证这些输入组合不出现,或修改转换条件。
在本例中,修改(I0 * I1+ I0 * I2)为(I0 * I1 + I0 * I2) * / I3就可以解决这个问题。
图8 带冲突分支条件的状态转换图状态转换表格表示第二种状态机表示法是如表1所示的状态转换表格形式。
顶部列出所有可能的输入组合和内部状态。
每行给出下一状态和下一输出,因而,该表格指定了转换函数和输出函数。
然而这种类型的表格不适用于定义实际的状态机,因为实际的状态机有大量的输入,而每个输入组合就占用表格的一行。
举个例子,10个输入的状态机需要1024行。
表1 状态转换表流程图另一种流行的表示法是流程图,状态用矩形框来表示,可选的状态转换用菱形框中的字符串来决定。
该单元可能有多个入口,但通常只有一个出口。
写在矩形状态框内的状态名作为第一个入口。
任何Moore输出表示都写在下面的状态框中,没有寄存的状态前面加一个插入符号(^)。
而状态代码赋值,如果已知的,就写在状态框的右上方。
决策框是菱形或六边形框,其中包含输入信号和逻辑表达式。
分别标识了0和1的两个出口,通向另一个决策框、状态框或Mealy 输出。
卵圆形被用作Mealy型状态机的输出。
插入符号(^)后面跟的状态表示没有寄存。
所有这些框都被用来适应大量的输出信号。
这些符号的使用如图9所示。
每个路径通过决策框后,从一种状态转换到另一种状态,定义输入变量的组合或组合集。
一条路径不必包括所有的输入变量,因此它适应"忽略"。
这些决策树会比表达法更占空间,但是在许多实际情况中,状态机控制器只测试每个状态的输入变量的很小的子集。
并且,决策链通常会反映出设计者所考虑的控制器的行为。
特别需要注意的是,这些测试在FSM 中并不顺序运行,而是被FSM状态转换逻辑并发进行。
转换说明的这种方法,其好处在于可以避免图8中所示的问题。
因为一个路径不可能被分支来定义两个状态路径,所以不会出现这种冲突。
由于可以定义多重的下一状态,因此不存在冲突危险,可以使用更多的复杂决策,使得流程图表示法更加紧凑。
表达式可以被测试,如图10a所示,或多个分支可以从一个译码框引出,如图10b所示。
在第二种情形中,把二进制输入组排列成矢量,对该矢量的不同值进行分支都很方便。
对于状态机的三种表示方法:状态图,状态表和流程图,因为它们都描述相同的硬件结构,所以它们是等价的,可以互换。
每种表示方法都有它特别的优势。
虽然状态转换图最流行,但是因为转换条件被直接记录在转换箭头上,在状态转换要依靠很多输入的情况时,它就会遇到复杂性的问题。