状态机模型、并发进程模型

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。


完整性是指任意时间所有条 件中总有一个条件成立。
u,d,o,t = 0,1,0,0
• 模型/语言、文字/图形不能相混淆。
– 文字和图形仅仅是语言的两种形式
• 文本:如字母、数字。 • 图形:
X = 1; Y = X + 1;
X=1
Y=X+1
Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis
– 使用英语或其它自然语言来描述所需行为,这是合理描 述的第一步。
• 但是,这样做仍然不够,因为自然语言并不精确。 • 如: 发动机相关代码,达数千页之长。
Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis
DoorOpen u,d,o,t = 0,0,1,1
u,d,o,t = 0,1,0,0
!(req<floor) GoingDn U表示UP(上)、d表示down(下)、o 表示open(打开) T表示计时器的启动信号timer_start
req < floor
Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis
嵌入式系统设计: 硬件/软件的统一
状态机模型、并发进程模型
1
概要
• 模型与语言的比较 • 状态机模型
– FSM/FSMD – HCFSM 和状态图表语言 – 程序状态机模型 (PSM)
• 并发进程模型
– 通信 – 同步 – 实现
• 数据流模型 • 实时系统
Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis
– 面向对象模型(Object-oriented model)
• 该模型用于将复杂的软件分解为简单而确定的片断。
Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis
4
模型与语言
诗词 食谱 故事 状态机 时序程序 数据流
模型
语言
英语
西班牙语
日语
C
C++
Java
食谱与英文
时序程序与C语言

计算模型描述系统行为
– 如,菜谱,时序程序。

• • •
语言可以捕获模型
– 具体形式,如,C语言、英语等。
时序模型可以用不同的语言来表达
– 例如,C、C++、或JAVA
一种语言还可以描述很多不同的模型
– 例如,C++语言可以描述时序模型、面向对象模型、状态机模型
某些程序语言可能比其它语言更容易表达计算模型
5
Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis
文字语言与图形语言
– S0是初始状态
• • • •
I,O,V 可以描述复杂的数据类型 (如,整数、浮点数等)。 F,H 可以代表算术运算。 在此没有将H 称为输出函数,而是称做操作函数。
– 因为它不仅描述输出,而且也描述变量的更新。
对于该模型,完整的系统状态不仅包括当前状态,而且还包括所有变量的值。
Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis
12
将系统描述为状态机
1. 列举所有可能的状态 2. 声明所有的变量 (本例中没有声明) 3. 对每个状态,列出到其他状态的所有可能的转移和相关的条件。 4. 对于每个状态,列出相关操作 5. 对每个状态,确保现有的转移 条件下是互斥和完整的。
• 互斥是指两个条件不可能同 时成立。
– 否则的话,这个状态机是一 个非确定性状态机
系统介面
部分文字描述 将电梯向上或向下移动到被请求楼 层;到达被请求楼层后,打开电梯门 至少10秒,并一直保持打开状态, 直到被请求楼层改变。确保电梯在 移动中绝不会打开。不能改变电梯 移动方向,除非向上移动时没有更 高层请求或向下移动时没有更低层 请求。
单元 控制器 up down open floor req 请求 解决器
H 操作函数 (S → O + V)
req > floor !(timer < 10) u,d,o,t = 0,0,1,0 Idle req == floor req < floor u,d,o,t = 0,1,0,0 GoingDn req < floor
!(req<floor) u is up, d is down, o is open t is timer_start
req > floor u,d,o, t = 1,0,0,0 GoingUp !(req > floor) timer < 10 DoorOpen u,d,o,t = 0,0,1,1
S 是状态的集合 {s0, s1, …, sl} I 是输入的集合 {i0, i1, …, im} O 是输出的集合 {o0, o1, …, on} V 是变量的集合 {v0, v1, …, vn} F 是次态的集合 (S x I x V → S)
9
有限状态机模型
使用状态机描述的UnitControl进程
req > floor
u,d,o, t = 1,0,0,0
GoingUp req > floor
!(req > floor) timer < 10 !(timer < 10)
u,d,o,t = 0,0,1,0 Idle req == floor req < floor
– 通信进程模型( Communicating process model )
• 该模型支持对多进程的并发执行。
– 状态机模型( State machine model )
• 该模型用于以控制为主的系统,监视控制输入、设置控制输出。
– 数据流模型( Dataflow model )
• 该模型用于以数据为主的系统,把数据输入流转换成输出数据流。
u,d,o, t = 1,0,0,0 req > floor
GoingUp req > floor
!(req > floor)
timer < 10 !(timer < 10)
u,d,o,t = 0,0,1,0 Idle req == floor req < floor !(req<floor) GoingDn u is up, d is down, o is open req < floor t is timer_start DoorOpen u,d,o,t = 0,0,1,1
11
具有数据路径的有限状态机模型 (FSMD)
• • • FSMD是对 FSM的扩展,如增加了复杂数据类型和存储数据的变量。
– FSMs 仅使用布尔类型来进行运算,没有变量。
FSMD模型可以定义为一个7元组 F <S, I , O, V, F, H, s0>
– – – – –

We described UnitControl as an FSMD
...
b1 b2 bN up1 up2 dn2 up3 dn3
电梯 内的 ቤተ መጻሕፍቲ ባይዱ钮
各层 的上/下 按钮
...
dnN
Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis
8
有限状态机模型(FSM)
单 元 控 制 器 req 请 求 解 决 器
up down open floor
...
b1 b2 bN up1 up2 dn2 up3 dn3
电梯 内的 按钮
• 我们可以尝试用C 语言来描述
各层 的上/下 按钮
...
dnN
Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis
• 摩尔型(Moore)
– 输出仅与状态有关 。
• 米莱型(Mealy)
– 输出仅与状态转移有关。
• 使用速记符进行一些简化描述
– 可以认为在状态中未赋值的输出为0. – 每个转移条件隐含着与有效时钟沿相与。
Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis
• 如, 在GoingUp状态下, u,d,o,t = 1,0,0,0 (up = 1, down, open, and timer_start = 0)
Embedded Systems Design: A Unified Hardware/Software Introduction, (c) 2000 Vahid/Givargis
6
简单实例:一个电梯控制系统
部分文字描述
系统界面
• 简单控制器
– 请求解决器 :
协调不同的楼层请求,确 定一个被请求楼层。
– 单元控制器:
移动电梯到达请求楼层
将电梯向上或向下移动到被请求楼 层;到达被请求楼层后,打开电梯门 至少10秒,并一直保持打开状态, 直到被请求楼层改变。确保电梯在 移动中绝不会打开。不能改变电梯 移动方向,除非向上移动时没有更 高层请求或向下移动时没有更低层 请求。
2
引言
• 嵌入式系统处理行为的描述
– 描述起来或许非常困难
• 随着IC容量的增加,复杂度也随之增加。
– 嵌入式早期应用:洗衣机、小游戏等 • 仅有数百行的程序代码 – 如今的应用:电视机机顶盒和手机等。 • 可能需要几十万行的程序代码
• 在设计初期,所需的行为甚至不能完全让人理解,许多的系统 缺陷都是描述不清造成的。
10
正式的定义
• FSM一个6元组 F<S, I, O, F, H, s0>其中
– – – – – – S是状态的集合{s0, s1, …, sl} I 输入的集合 {i0, i1, …, im} O 是输出的集合 {o0, o1, …, on} F 是次态集合 (S x I → S) H 是输出函数,将状态映射到输出 (S → O) s0 是初始状态
• 如果我们用时序程序模型来描述该行为似乎是一件 令人头疼的事。 • 相反,我们可以考虑用FSM来描述系统行为。
– 可能的状态
• 如, Idle, GoingUp, GoingDn, DoorOpen 。
– 针对一个输入可能产生的从一种状态到另一种状态的转换
• 如, req > floor
– 每个状态下的行为操作。
3
模型与语言
• 我们如何用计算模型描述所需的系统行为呢?
– 我们可许想到用计算机语言 来描述,如,C、 C++等。计算模型可以 帮助设计者理解和描述行为。
• 常见的计算模型
– 时序程序模型( Sequential program model )
• 提供一组语句、语句规则以及说明语句如何执行的语义。
7
使用时序程序模型进行描述
时序程序模型
Inputs: int floor; bit b1..bN; up1..upN-1; dn2..dnN; Outputs: bit up, down, open; Global variables: int req; void UnitControl() { up = down = 0; open = 1; while (1) { while (req == floor); open = 0; if (req > floor) { up = 1;} else {down = 1;} while (req != floor); up = down = 0; open = 1; delay(10); } } void RequestResolver() { while (1) ... req = ... ... } void main() { Call concurrently: UnitControl() and RequestResolver() }
相关文档
最新文档