第八讲状态机摘要.pptVIP

  • 10
  • 0
  • 约8.19千字
  • 约 21页
  • 2017-01-26 发布于湖北
  • 举报
第八讲状态机摘要

8.1 引言 8.2 设计风格#1 设计风格#1的状态机模板 例8.2 简单的FSM#1 8.3 设计风格#2 设计风格#2的状态机模板—使用辅助信号如temp 例8.3:用FSM#2实现例8.2: --同步输出 8.4 状态机的编码风格—二进制码和独热码 第9章 部分习题讲解(1) * * FSM是为时序电路设计而创建的特殊模型技术,在针对任务顺序非常明确的电路(如交通灯控制器)是非常实用。 理论上,任何时序电路都可以建立FSM模型,但并不总是一种高效的方法。如果一味地追求使用FSM来设计时序电路,可能会导致代码冗长和容易出错。例如,任务简单的寄存器就不必使用FSM方式实现。又例如,虽然任务与顺序很明确,但任务数目太多或者性能要求较高时,也不宜用FSM方式实现。 状态机的设计包含两个主要过程,一是状态机的建模,二是状态机的编码。 第8章 状态机(Finite State Machine,FSM) 组合逻辑电路 时序逻辑电路 clk rst output input pr_state nx_state 状态机的组成:如图。 状态机的种类: Mealy型:当前状态、当前输入相关 Moore型:仅当前状态相关 VHDL代码结构: 时序逻辑部分:process内部 组合逻辑部分: 在使用FSM方式设计VHDL代码时,通常会在结构体的开始部分插入一个用户自定义的枚举数据类型,其中包含所有可能出现的电路状态。 一种结构清晰、易于实现的FSM设计风格: FSM中的时序逻辑部分和组合逻辑部分分别独立设计; 定义一个枚举数据类型,内部包含所有FSM需要的状态; 组合逻辑电路 时序逻辑电路 clk rst output input pr_state nx_state FSM中时序逻辑部分的设计特点: 确定的输入/输出端口 典型的模板可供使用 ------------lower section--------------- process (clock, reset) begin if (reset = 1‘) then pr_state = state0; elsif (clock’event and clock=‘1’) then pr_state = nx_state; end if; end process; 标准的设计 寄存器数目少:默认的编码方式下,log2n 表现为位宽 组合逻辑电路 时序逻辑电路 clk rst output input pr_state nx_state FSM中组合逻辑部分的设计特点: 并发代码、顺序代码皆可; 顺序代码方式的设计模板 process的敏感信号列表 完整列出IN/OUT组合 无边沿赋值,无寄存器生成 ------------upper section--------------- process (input, pr_state) begin case pr_state is when state0= //多个条件转移分支 if (input=...) then output = value; nx_state=state1; else ....; end if; when state1= if (input=...) then output = value; nx_state=state2; else ....; end if; ...... end case; end process; library ieee; use ieee.std_logic_1164.all; entity entity_name is port (input: in data_type; reset, clock: in std_logic; output: out data_type); end entity_name; architecture arch_name of entity_name is type state is (state0, state1, state2, state3, ...); signal pr_state

文档评论(0)

1亿VIP精品文档

相关文档