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

Lecture5有限状态机.ppt

  1. 1、本文档共50页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Longman 有限状态机 Finite State Machine 例:计数器设计 设计一电路,包含基4计数器,和译码输出模块。计数器的输出(Present_value)从0到3循环;当计数值为2时,译码输出(DataOut)为“1”,否则输出“0”。 有限状态机概述 数字系统控制部分的每一个控制态可以看作一种状态,与每一个控制态相关的转换条件指定了当前状态的下一个状态和输出。 根据有限状态机的输出与当前状态与当前输入的关系,可以分成Moore型和Mealy型两种类型的有限状态机。 Moore状态机和Mealy状态机 Moore状态机的输出只与当前状态有关 Moore状态机和Mealy状态机 Mealy状态机的输出与当前状态机及当前输入信号有关 状态机的表示方法 状态转换表 算法流程图 状态转换图 状态转换图 状态转换图 用VHDL描述状态机的组成 一个用来描述有限状态机功能的VHDL语言程序中应该包含以下几个内容: (1)至少包括一个状态信号,它们用来指定有限状态机的状态; (2)状态转移指定和输出指定,它们对应于控制单元中与每个控制步有关的转移条件; (3)时钟信号,它一般是用来进行同步的; (4)同步或异步复位信号。 状态机的VHDL描述方式 (1)单进程描述方式:单进程描述方式就是指在VHDL语言程序的结构体中,使用一个进程语句来描述有限状态机中的次态逻辑、状态寄存器和输出逻辑。 (2)双进程描述方式:一个进程语句用来描述有限状态机中次态逻辑、状态寄存器和输出逻辑中的任何两个;另外一个进程则用来描述有限状态机剩余的功能。 (3)三进程描述方式:一个进程用来描述有限状态机中的次态逻辑;一个进程用来描述有限状态机中的状态寄存器;另外一个进程用来描述有限状态机中的输出逻辑。 状态机的VHDL描述方式 存储控制器 设计一个存储控制器,它的具体要求为:(1)存储控制器能够根据微处理器的读周期或者写周期,分别对存储器输出写使能信号we和读使能信号oe;(2)存储控制器的输入信号有3个:微处理器的准备就绪信号ready、微处理器的读写信号read_write和时钟信号clk。 存储控制器 列出当前状态和输出值的关系 建立状态转换表,列出次态和转换条件 利用VHDL语言进行状态机描述 所有状态均可以表达为CASE-WHEN结构中的一条语句。 状态的转移通过if-then-else语句实现。 CASE present_state IS WHEN idle = 输出量; IF ELSE END IF; 状态转换 有些状态的转换中,在条件满足时,转换到下一个状态,否则保持原来的状态不变。这种情况对应着IF-THEN-ELSE的两个分支。 在这种情况下,ELSE分支并不是必需的。但是缺少ELSE分支,会导致额外的存储器。 状态描述的步骤: 对每一个状态建立一项CASE语句的分支 WHEN 状态名 = 确定输出变量 通过IF-THEN-ELSE语句指定相应的次态。 例 case present_state is -- CASE分支 when idle = oe=0;we=0; --确定输出变量 if(ready = 1) then--确定次态 next_state = decision; else next_state = idle; end if; 例:三进程描述方式1 ARCHITECTURE fsm OF memory_enable IS TYPE state_type IS(idle,decision,read,write); SIGNAL present_state,next_state: state_type; BEGIN nextstate_logic:PROCESS(present_state,ready, read_write) BEGIN CASE present_state IS WHEN idle = IF(ready = ‘1’) THEN next_state = decision; ELSE next_state = idle; END IF; ………………… END CASE; END PROCESS nextstate_logic; 例:三进程描述方式2 state_register: PROCESS(clk) BEGIN IF(RISING_EDGE(clk)) THEN present_state = next_state; END IF; END PROCESS state_registe 例:三进程描述方式3 output_logic: P

文档评论(0)

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

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

1亿VIP精品文档

相关文档