热度 28
2016-4-28 17:23
3070 次阅读|
1 个评论
状态机和时序图 第一部分:状态机 关于状态机笔记,详情查看博主的 http://bbs.ednchina.com/BLOG_ARTICLE_3033677.HTM 我与FPGA的恋爱之状态机的设计 这里是原文表述 1、认识状态机 对象:静态属性( Property )和动态行为( Event )(怎么感觉有点像程序里面面向对象的概念)。 状态:是指在 对象 的生命周期中满足某些条件、执行某些活动或等待某些事件的条件( condition )或状况( situation )。 状态机 图 通过对类 对象的生存周期建立模型 来描述 对象随时间变化的动态行为 ,也可以用来描述用例、协作和方法的动态行为,它是展示 状态 与 状态转换 的图。 状态机 是一个对象所有可能生命历程的 模型。 描述对象的一种方式。 状态的一大特性就是 转换 ,状态不是孤立的,换句话说,状态是变化的,是会互相转化的。 状态转换 是指两个状态之间、两个活动之间或者一个活动和一个状态之间的关系。 两个状态转换的原则: (1)转换本身的 逻辑性 ---并非所有的状态之间都可以任意转换 (2)转换的外界因素---转换时需要一个外因 举例:小人跑动(move)、小人站立静止(stand)、小人在空中坠落(falling) 第二部分:时序图 时序图 反映了模块的 输入输出信号随 时间变化 的情况。可以帮助理解模块的功能,直接反映信号的变化 及相互关系。 时序图的“先天缺陷”: 1、要将模块的所有功能描述出来,时序图要把输入信号和输出信号的所有可能状态都反映出来,这样需要时序图的周期个数尽可能多些,输入信号的变化尽可能多些。 2、时序图一般 辅助 理解模块的功能,模块一般需要文字性或状态机的功能描述( 看来只是一张时序图还是不够的 )。 3、时序图不便于HDL的实现 so 状态机( Medium ) HDL 第三部分:关系(转换) 时序图 到状态机,一般要求时序图反映了所有输入和输出随时间变化的情况。 从上面两张时序图中可以分析出,静态RAM的读写时序都分成三个部分:Setup、Strobe、Hold。 读写接口信号:EM_CS、EM_A、EM_D、EM_OE、EM_WE、EM_RW,随时间也有不同的变化。 这样可以把读写时序分成 5 个状态:Setup、Read、Write、Hold 、Idle。 Idle状态:不读也不写,EM_CS为无效。 Setup状态:EM_CS有效,EM_RW分别为读、写,EM_WE和EM_OE无效。 Read状态:EM_OE有效,EM_WE无效。 Write状态:EM_WE有效,EM_OE无效。 Hold状态:EM_WE和EM_OE均为无效。 确定状态转移条件,这里用到 计数器 ,Setup和Hold均为2个clk,而Read和Write均为3个clk,从Idle到Setup,需要使EM_CS有效。 经以上分析,静态RAM的读写时序状态机如下: 关于转载状态机和时序图笔记,博主正在做IIC的时序,参考用状态机 读时序,,,,因为个人读时序能力太差,折腾了4天了,还是没能者却读取出来结果,目前正在折腾ing.......调试好了会及时更新笔记! Augus是一只有梦想的汪~Augus是一只努力奋斗的汪~ 转载来源http://www.cnblogs.com/spongebob123/p/3615656.html