13版模型模程进发并、型模机态状.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
13版模型模程进发并、型模机态状.ppt

具有数据路径的有限状态机模型 (FSMD) FSMD是对 FSM的扩展,如增加了复杂数据类型和存储数据的变量。 FSMs 仅使用布尔类型来进行运算,没有变量。 FSMD模型可以定义为一个7元组 F S, I , O, V, F, H, s0 S 是状态的集合 {s0, s1, …, sl} I 是输入的集合 {i0, i1, …, im} O 是输出的集合 {o0, o1, …, on} V 是变量的集合 {v0, v1, …, vn} F 是次态的集合 (S x I x V → S) H 操作函数 (S → O + V) S0是初始状态 I,O,V 可以描述复杂的数据类型 (如,整数、浮点数等)。 F,H 可以代表算术运算。 在此没有将H 称为输出函数,而是称做操作函数。 因为它不仅描述输出,而且也描述变量的更新。 对于该模型,完整的系统状态不仅包括当前状态,而且还包括所有变量的值。 Idle GoingUp req floor req floor !(req floor) !(timer 10) req floor DoorOpen GoingDn req floor u,d,o, t = 1,0,0,0 u,d,o,t = 0,0,1,0 u,d,o,t = 0,1,0,0 u,d,o,t = 0,0,1,1 u is up, d is down, o is open req == floor !(reqfloor) timer 10 t is timer_start We described UnitControl as an FSMD * 将系统描述为状态机 1. 列举所有可能的状态 2. 声明所有的变量 (本例中没有声明) 3. 对每个状态,列出到其他状态的所有可能的转移和相关的条件。 4. 对于每个状态,列出相关操作 5. 对每个状态,确保现有的转移条件下是互斥和完整的。 互斥是指两个条件不可能同时成立。 否则的话,这个状态机是一个非确定性状态机 完整性是指任意时间所有条件中总有一个条件成立。 req floor !(req floor) u,d,o, t = 1,0,0,0 u,d,o,t = 0,0,1,0 u,d,o,t = 0,1,0,0 u,d,o,t = 0,0,1,1 u is up, d is down, o is open req floor req floor req == floor req floor !(reqfloor) !(timer 10) timer 10 t is timer_start Idle GoingUp DoorOpen GoingDn * 状态机与时序程序模型的比较 每种模型反映了对系统行为的不同考虑方式 状态机模型: 要求设计者要考虑所有可能的状态,以及所有可能输入条件下可能进行的所有状态转移。 时序程序模型: 它是通过一系列可重复执行或有条件执行的指令来变换数据的。 状态机模型在许多场合中用来描述效果更好。 因为用状态机来进行描述提供了更自然的计算方法。 并不是因为它提供了一种图形化的表达方式。 状态机描述可以用文字状态语言表达 (如,状态图)。 而时序程序模型可以用图形来表达 (如,流程图)。 * 用FSM表达其它的行为 如,当有消息时,电话应答机的灯光闪烁。 如,一个简单的电话应答机,可以接听四个电话。 如, 一个简单的十字路口控制灯。 …… * 用时序程序语言来表达状态机 尽管使用状态机来描述,有许多的优点。但是,最流行的开发工具却使用时序程序设计语言。 如C, C++, Java, Ada, VHDL, Verilog等。 这些开发工具通常复杂而昂贵。 所以必需保护这些开发工具的投资。 用时序程序设计语言来表达状态机,通常有两种方法: 前端工具法(Front-end tool) 安装支持状态机的附加工具。 这些工具常用来定义图形和文字状态机语言 也可能支持图形模拟 这些工具自动产生时序程序设计语言代码,这些代码用于输入到主开发工具中。 缺点: 必须支持另外的工具 (如,软件授权成本、版本升级等) 语言子集法(Language subset approach) 它是一种最常用的方法。 * 语言子集法 下面是用等价的时序程序语言来表达状态机模型 使用软件设计语言C 和硬件设计语言VHDL 用C来表达UnitControl状态机 枚举所有可能的状态 (#define) 声明一个状态变量,交将其设置为初始状态 (IDLE) 多个状态分支 每种状态的动作 up, down, open, timer_start 检查转移条件以确定下一状态 if(…) {state = …;} #define IDLE0 #define GOINGUP

文档评论(0)

liuxiaoyu98 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档