状态机程序设计.pptVIP

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

第6章 状态机程序设计 6.1有限状态机引论 6.1.1有限状态机概念 在一个复杂的控制系统中,可以将控制过程分为几步或几个状态,在每个状态下,控制系统的动作简单明确。我们只要根据系统的要实现的功能,画出状态转换图及每个状态下的动作或输出函数,即可实现有效控制。这种控制方式在数字系统中称为状态机,实际上就是控制系统理论中比较重要的步进控制。 例:AD574转换控制器 控制逻辑: 要求控制器在现场信号作用下自动进行状态转换,并根据当前状态发出相应控制信号以控制现场。状态机就是完成这一目的。有限状态机及其设计技术是实用数字系统设计中的重要组成部分,是实现高效率高可靠逻辑控制的重要途径。 6.1.2 状态机的优点 无论与基于VHDL的其他设计方案相比,还是与可完成相似功能的CPU相比,状态机都有其难以超越的优越性,它主要表现在以下几方面: 1、控制灵活、方便:状态机的工作方式是根据控制信号按照预先设定的状态顺序运行的,因此状态机在其运行方式上类似于控制灵活和方便的CPU。 2、结构简单,便于设计:设计方案相对固定 3、易构成性能良好的同步时序逻辑模块,避免竞争冒险现象。 4、运行速度比CPU要高出三至四个数量级。 5、可靠性:状态机由纯硬件电路构成;由非法状态跳出,只要2、3个时钟周期,所耗时间短 6.1.3 状态机的分类 1)从状态机的信号输出方式上分有Mealy型和Moore型两种状态机。 Mealy属于异步输出状态机。其输出是当前状态和所有输入信号的函数,它的输出是在输入变化后立即发生的,不依赖时钟的同步。 Moore属于同步输出状态机,其输出则仅为当前状态的函数,这类状态机在输入发生变化还必须等待时钟的到来,时钟使状态发生变化时才导致输出的变化,所以比Mealy机要多等待一个时钟周期。 2)从程序结构上分,有单进程状态机和多进程状态机。 3)从编码方式上分有顺序编码状态机、一位热码编码状态机或其他编码方式状态机。 6.2 典型状态机设计 典型状态机设计由状态信号定义、准备下一状态进程、状态切换进程、输出进程等四部分构成。 【例6-1】用FPGA/CPLD控制AD574进行12位A/D转换,并将转换结果保存在Q0~Q11中 LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY AD574 IS PORT( D:IN STD_LOGIC_VECTOR(11 DOWNTO 0); Q:OUT STD_LOGIC_VECTOR(11 DOWNTO 0); CLK,STATUS:IN STD_LOGIC; CE,RC: OUT STD_LOGIC); END AD574; ARCHITECTURE behav OF AD574 IS TYPE states IS (s0,sl,s2,s3,s4,s5); SIGNAL c_st,n_st:states; SIGNAL LOCK:STD_LOGIC; BEGIN 1、状态信号定义:采用枚举数据类型定义系统中有哪些状态,并定义当前状态信号、下一状态信号。一般放在结构体的ARCHITECTURE和BEGIN之间。 在数字系统中,每一状态对应一个二进制数,称状态编码。如AD574控制有5个状态,可用3位二进制表示:(000、001、010、011、100)。 但设计者在状态机的设计中,为了更利于阅读、编译和VHDL综合器的优化,往往将表征每一状态的二进制数组用文字符号来代表,即所谓状态符号化。如(s0,sl,s2,s3,s4,s5),或者(READY,START,WAIT_H, WAIT_L ,READ, LOCK)等更直观的符号表示。 PROCESS(c_st,STATUS) --准备下一状态 BEGIN --实现状态图连接 CASE c_st IS WHEN s0=n_st=sl; WHEN Sl=n_st=s2; WHEN s2=IF(STATUS=1) THEN n_st=s3; ELSE n_st=s2; END 1F; WHEN s3= IF(STATUS=1) THEN n_st=s3; ELSE n_st=s4; END 1F; WHEN S4=n_st=s5; WHEN S5=n_st=s0; WHEN O

文档评论(0)

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

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

1亿VIP精品文档

相关文档