- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
[工学]状态机讲义
大部分数字系统都可以划分为控制单元和数据单元(存储单元)两个组成部分,通常,控制单元的主体是一个状态机,它接收外部信号以及数据单元产生的状态信息,产生控制信号序列。
有限状态机特别适合描述那些发生有先后顺序或者有逻辑规律的事情(其实这就是状态机的本质)。状态机的本质就是对具有逻辑顺序或时序规律事件的一种描述方法,即“逻辑顺序”和“时序规律”就是状态机所要描述的核心和强项,换言之,所有具有逻辑顺序和时序规律的事情都适合用状态机来描述。
1、基本概念
有限状态机(Finite State Machine,FSM)是表示实现有限个离散状态及其状态之间的转移等行为动作的数学模型。(关注Matlab的Stateflow)
(1)状态:也叫状态变量。在逻辑设计中,使用状态划分逻辑顺序和时序规律。
状态名称、状态编码、进入/退出操作、内部转移、子状态、延迟事件
(2)转移:指两个状态之间的关系,表示当发生指定事件且满足指定条件时,第一个状态中的对象将执行某些操作并进入第二个状态,即“触发”了转移。将触发转移之前的状态定义为“源”状态(初始状态),而触发转移之后的状态定义为“目标”状态(次态)。
初始状态、转移条件、警戒条件、转移操作、目标状态
概括而言,状态机由状态组成,各状态由转移连接在一起。状态是执行某项活动或等待某个事件的条件。转移是两个状态之间的关系,它由某个事件触发,然后执行特定的操作或评估并导致特定的结束状态。
状态的图示如下
状态转换图如下图所示。
状态转换表如表5.1所示。
当前状态
转移条件 状态A 状态B 条件x … …. 条件y …. 状态A 条件z ….
(3)状态机的分类
①摩尔型状态机和米勒型状态机。
摩尔型状态机:利用组合逻辑链将当前状态译码转化为输出,其状态只在全局时钟信号改变时才改变。其最重要的特点就是将输入与输出信号隔离,所以输出稳定,能有效消除竞争冒险。如无特殊功能设计要求,摩尔状态机是设计首选。
米勒型状态机:其输出与当前状态和输入都有关,且对输入的响应发生在当前时钟周期,比摩尔型状态机对输入信号的响应要早一个周期。所以输入信号的噪声会直接影响输出信号,即具有竞争冒险且不能消除。
②同步状态机和异步状态机
异步状态机的状态转移不由唯一的时钟边沿触发,目前多数综合工具在对异步状态机进行逻辑优化时会胡乱地简化逻辑,使综合后的异步状态机不能正常工作。因此,应尽量不要使用综合工具来设计异步状态机。
为了能综合出有效的电路,用VerilogHDL描述的状态机应明确地由唯一时钟触发,称之为同步状态机,它是设计复杂时序逻辑电路最有效、最常用的方法之一。
异步状态机实现的功能通常都可以由同步状态机来实现。
③单进程、双进程和多进程状态机
一个有限状态机总是可以被分成状态译码、状态寄存器和输出译码三个模块,可以有五种不同的方式将这些模块分配到进程语句,以实现对状态机的描述。
三个模块用一个进程实现,也就是说三个模块均在一个always块内,这种状态机描述称为单进程有限状态机,它既描述状态转移,又描述状态的寄存和输出。
每一个模块分别用一个进程实现,也就是说三个模块对应着三个always块,这种状态机描述称为三进程有限状态机,其中一个always模块采用同步时序描述状态转移;另一个模块采用组合逻辑判断状态转移条件,描述状态转移规律;第三个always模块使用同步时序电路描述每个状态的输出。
次态译码、输出译码分配在一个进程中,状态寄存器用另一个进程描述。
次态译码、状态寄存器分配在一个进程中,输出译码用另一个进程描述。
次态译码用一个进程描述,状态寄存器、输出译码用另一个进程描述。
在后三种状态机描述中,三个模块对应着两个always块,这种状态机描述称为
2、状态机的设计流程
3、状态机的编码方式
状态机的N种状态通常需要用某种编码来表示,即状态编码,又称为状态分配。
(1)顺序二进制码:最紧密的编码,使用状态向量的位数最少,类似与前述的二进制编码器。但从一个状态转移到相邻状态时,可能会有多个比特位发生变化,易产生毛刺。
(2)格雷码:在相邻状态的转换中,每次只有一个比特位发生变化,消除了产生毛刺的问题,但不适用于有很多状态跳转的情况。
(3)独热码:指对任意给定的状态,状态向量中仅有一位“1”,而其余为“0”,所以N状态的状态机需要N个触发器。
(4) 直接输出型编码:将状态码中的某些位直接输出作为控制信号,要求状态机各状态的编码作特殊的选择,以适应控制信号的要求,该编码需要根据输出变量来定制编码。
独热码是指对任意给定的状态,状态向量中仅有一位为“1”而其余位都为“0”。
独热编码的状态机具有高速的特点。状态机的速度与其状态的数量无
文档评论(0)