网站大量收购闲置独家精品文档,联系QQ:2885784924

[理学]第七章EDA本科课件_华南理工大学.ppt

  1. 1、本文档共69页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
[理学]第七章EDA本科课件_华南理工大学.ppt

第七章 有限状态机 7.1 引言 有限状态机及其设计技术是实用数字系统设计中的重要组成部分,也是实现高效率和高可靠逻辑控制的重要途径。尽管到目前为止,有限状态机的设计理论并没有增加多少新的内容,然而面对先进的EDA工具、日益发展的大规模集成电路设计技术和强大的Verilog HDL等硬件描述语言,有限状态机在其具体的设计技术和实现方法上又有了许多新的内容。 本章基于实用的目的,重点介绍用Verilog HDL设计不同类型有限状态机的方法。 7.1 基于状态机的设计 状态机可以认为是组合逻辑和寄存器逻辑的特殊组合,它一般包括两个部分:组合逻辑部分和寄存器部分。 寄存器用于存储状态。 组合电路用于状态译码和产生输出信号。 实用的状态机一般都设计为同步时序电路,它在时钟信号的触发下,完成各个状态之间的转移。 状态机的分类 根据输出信号产生方法的不同,状态机可以分为两类:米里型(Mealy)和摩尔型(Moore)。 摩尔型状态机的输出只是当前状态的函数 米里型状态机的输出则是当前状态和当前输入的函数。 状态机具体属于哪一类,其实并不重要,重要的是设计者如何把握输出的结构,使它能满足设计的整体目标,包括定时的准确性和灵活性。 说明 有限状态机较适合设计数字系统的控制模块,是许多数字电路的核心。 有限状态机的概念在软件工程中也很有用。例如: 一个电脑游戏可有许多种操作模式 — 例如:初始化模式、正常模式及终止模式 — 有限状态机除了可以跟踪游戏的全部状态外,还可以跟踪这些模式。同时还可以控制游戏中玩家的对手和游戏对象。 例如,我们可以做一部跟踪玩家角色状态的有限状态机。角色可能有如下状态: 状态0:活着 状态1:奄奄一息 状态2:死亡 续 基于这些状态,游戏中的控制逻辑可执行不同的事情。 如果玩家角色处于状态0,逻辑将允许角色移动、开火等等。 然而,如果角色处于状态1,游戏逻辑将显示死亡顺序,角色就不能再移动或开火了。 最后,当状态切换到状态2时,游戏逻辑将仔细检查它使用什么样的顺序才能使玩家角色活过来。 续 当然,还存在将玩家角色从一种状态向另一种状态转移的逻辑。 如果玩家角色处于状态0,进入状态1的唯一办法就是以某种方式被击中或其它。 一旦玩家角色处于状态1,一段时间后,角色会自动进入状态2。 因此,我们明白了状态变化就是游戏环境 — 输入和有限状态机自身的结果,意思是说下一状态在某种方式上基于当前的状态。 续 上面我们讲的例子是游戏对象所提供的一个有限状态机比较典型的例子。 总之,一个有限状态机可能有很多的状态,复杂的规则控制状态变化,这些状态变化我们称为状态转移。 另外,一个状态可以有输出。例如:在我们的状态模型的实例中,死亡状态可能有一个输出,用信号通知声音系统播放一次惨叫声。 状态机有3种表示方法:状态图、状态表和流程图。 这三种表示方法是等价的,相互之间可以转换。 其中,状态图是最常用的一种表示方式。 状态图的表示如下图所示,图中的每个圆圈表示状态机的一个状态,而每个箭头表示状态之间的一次转移,米里型引起转换的输入信号及产生的输出信号标注在箭头上。 有限状态机表示图 7.2 如何描述可综合的状态机 在Verilog中可以用许多种方法来描述有限状态机,但它们都有相对固定的语句和程序表达方式。 最常用的方法是用always语句和case语句。 下图所示的状态转移图表示了一个简单的4状态的有限状态机,它的同步时钟是(Clock),输入信号是Reset 和 A,输出信号是K2和K1。 状态的转移只能在同步时钟(Clock)的上升沿时发生,往哪个状态的转移则取决于目前所在状态和输入的信号(Reset 和 A)。 状态图 用二进制表示的状态机 BCD码:二-十进制码 用4位二进制数码表示1位十进制数。 其中8421码: 0 0000 1 0001 2 0010 3 0011 4 0100 代码1 module fsm (Clock,Reset,A,K2,K1); input Clock, Reset, A; output K2, K1; reg K2, K1; reg [3:0] state; //状态寄存器 parameter Idle = 4b0000, Start = 4b0001, Stop = 4‘b0010, Clear = 4’b0011

文档评论(0)

mwap + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档