EDA技术实用教程PPT教学课件第7章VHDL有限状态机设计_第1页
EDA技术实用教程PPT教学课件第7章VHDL有限状态机设计_第2页
EDA技术实用教程PPT教学课件第7章VHDL有限状态机设计_第3页
EDA技术实用教程PPT教学课件第7章VHDL有限状态机设计_第4页
EDA技术实用教程PPT教学课件第7章VHDL有限状态机设计_第5页
已阅读5页,还剩94页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、eda技术实用教程技术实用教程 第第7 7章章 vhdl有限状态机设计有限状态机设计 教学内容:教学内容: 7.1vhdl状态机的一般形式状态机的一般形式 7.2moore型有限状态机的设计型有限状态机的设计 7.3mealy型有限状态机的设计型有限状态机的设计 7.4状态机图形编辑设计方法状态机图形编辑设计方法 7.5状态编码状态编码 7.6安全状态机设计安全状态机设计 7.7硬件数字技术排除毛刺硬件数字技术排除毛刺 教学要求:教学要求: 学习和掌握用学习和掌握用vhdlvhdl设计不同类型的设计不同类型的 状态机(状态机(statemachine) 状态机是一类很重要的时序电路,是很多数字

2、状态机是一类很重要的时序电路,是很多数字 电路的核心部件,是大型电子设计的基础。电路的核心部件,是大型电子设计的基础。 状态机相当于一个控制器,它将一项功能的状态机相当于一个控制器,它将一项功能的 完成分解为若干步,每一步对应于二进制的一个完成分解为若干步,每一步对应于二进制的一个 状态,通过预先设计的顺序在各状态之间进行转状态,通过预先设计的顺序在各状态之间进行转 换,状态转换的过程就是实现逻辑功能的过程。换,状态转换的过程就是实现逻辑功能的过程。 状态机图状态机图是指用图形的是指用图形的 方式来表示一个设计实方式来表示一个设计实 体的体的各种工作状态各种工作状态、内、内 部各部各工作状态转

3、换的条工作状态转换的条 件件以及各以及各工作状态对应工作状态对应 的输出信号的输出信号序列。序列。 s2 s0 s1 r 1/0 0/0 1/0 0/11/1 0/0 fsm-finitestatemachine 有限状态机是由寄存器组和组合逻辑构成的硬件时序电有限状态机是由寄存器组和组合逻辑构成的硬件时序电 路,其状态(即由寄存器组的路,其状态(即由寄存器组的1 1和和0 0的组合状态所构成的有的组合状态所构成的有 限个状态)只可能在同一时钟跳变沿的情况下才能从一个限个状态)只可能在同一时钟跳变沿的情况下才能从一个 状态转向另一个状态,究竟转向哪一状态还是留在原状态状态转向另一个状态,究竟转

4、向哪一状态还是留在原状态 不但取决于各个输入值,还取决于当前所在状态。不但取决于各个输入值,还取决于当前所在状态。 这里指这里指 的是的是米里米里(mealy)(mealy)型有限状态机型有限状态机,而,而摩尔摩尔(moore)(moore)型有限状型有限状 态机态机究竟转向哪一状态只决于当前状态。究竟转向哪一状态只决于当前状态。 对应对应: : mealy(mealy(输出不但取决于各个输入值,还取决于当前所在状态输出不但取决于各个输入值,还取决于当前所在状态) ) -时序逻辑电路时序逻辑电路( (不仅与输入有关还和当前状态有关不仅与输入有关还和当前状态有关) ) moore(moore(输

5、出只取决于当前状态输出只取决于当前状态) ) - -组合逻辑电路组合逻辑电路( (只与输入有关只与输入有关) ) 比较:比较: 传统的设计方法是首先绘制出控制器的状态图,并由此列传统的设计方法是首先绘制出控制器的状态图,并由此列 出状态表,再合并消除状态表中的等价状态项。在完成状态出状态表,再合并消除状态表中的等价状态项。在完成状态 寄存器的分配之后,根据状态表求出次态及输出方程,最后寄存器的分配之后,根据状态表求出次态及输出方程,最后 画出设计原理图。采用这种方法设计复杂状态机将会十分繁画出设计原理图。采用这种方法设计复杂状态机将会十分繁 杂。杂。 利用利用vhdlvhdl设计状态机,不需要

6、进行繁琐的状态分配、绘设计状态机,不需要进行繁琐的状态分配、绘 制状态表和化简次态方程。设计者不必使用卡诺图进行逻辑制状态表和化简次态方程。设计者不必使用卡诺图进行逻辑 化简,不必画电路原理图,也不必搭试硬件电路进行逻辑功化简,不必画电路原理图,也不必搭试硬件电路进行逻辑功 能的测试,所有这些工作都可以通过能的测试,所有这些工作都可以通过edaeda工具自动完成。工具自动完成。 应用应用vhdlvhdl设计状态机的具体步骤如下:设计状态机的具体步骤如下: (1)根据系统要求确定状态数量、状态转移的条件和各)根据系统要求确定状态数量、状态转移的条件和各 状态输出信号的赋值,并画出状态转移图(状态

7、输出信号的赋值,并画出状态转移图(状态机图状态机图);); (2)按照状态转移图编写状态机的)按照状态转移图编写状态机的vhdl设计程序;所设计程序;所 有的状态均可表达为有的状态均可表达为case_when结构中的一条结构中的一条case语句语句, 而状态的转移则通过而状态的转移则通过if_then_else语句实现。语句实现。 (3)利用)利用eda工具对状态机的功能进行仿真验证。工具对状态机的功能进行仿真验证。 7.1vhdl状态机的一般形式状态机的一般形式 7.1.1为什么要使用状态机为什么要使用状态机 (1)高效的顺序控制模型。)高效的顺序控制模型。 (2)容易利用现成的)容易利用现

8、成的eda优化工具。优化工具。 (3)性能稳定。)性能稳定。 (4)设计实现效率高。)设计实现效率高。 (5)高速性能。)高速性能。 (6)高可靠性能。)高可靠性能。 7.1.2一般有限状态机的设计一般有限状态机的设计 有限状态机分类:有限状态机分类: 从信号的输入与输出方式分:从信号的输入与输出方式分:mealy型和型和moore型有限状态机型有限状态机 从结构分:从结构分:单进程状态机和多进程状态机单进程状态机和多进程状态机 从状态表达方式分:从状态表达方式分:有符号状态机和确定编码状态机有符号状态机和确定编码状态机 从编码方式分:从编码方式分:顺序编码状态机、一位热码编码状态机顺序编码状

9、态机、一位热码编码状态机 或其它编码状态机或其它编码状态机 有限状态机的结构:有限状态机的结构: 说明部分说明部分、主控时序进程主控时序进程、主控组合进程主控组合进程、辅助进程辅助进程 *说明部分在说明部分在architecture与与begin之间之间; *定义枚举型数据类型定义枚举型数据类型:用于描述状态用于描述状态 *状态变量定义为信号状态变量定义为信号:便于信息传输便于信息传输,状态变量数状态变量数 据类型定义为含有既定状态元素的新定义的数据类型定义为含有既定状态元素的新定义的数 据类型据类型 architecture.is typefsm_stis(s0,s1,s2,s3); sig

10、nalcurrent_state,next_state:fsm_st; . begin 1.说明部分说明部分 负责状态机运转和在时钟驱动下负责状态转换的进程负责状态机运转和在时钟驱动下负责状态转换的进程 作为状态机的作为状态机的“驱动泵驱动泵”。 功能功能1:状态机随外部时钟信号以同步方式工作,当时钟的有状态机随外部时钟信号以同步方式工作,当时钟的有 效跳变到来时,时序进程将代表次态的信号效跳变到来时,时序进程将代表次态的信号next_state中的内容中的内容 送入现态信号送入现态信号current_state中,而中,而next_state中的内容完全由其中的内容完全由其 他进程根据实际情

11、况而定。他进程根据实际情况而定。 功能功能2:此进程中包括一些清零或置位的控制信号。此进程中包括一些清零或置位的控制信号。 comb_outputs state_inputs reset clk fsm:s_machine com next_state current_state process reg process 图图7-1 一般状态机结构框图工作示意图一般状态机结构框图工作示意图 2.主控时序进程主控时序进程 主主控组合进程的任务控组合进程的任务是根据是根据外部输入的控制信号外部输入的控制信号(包(包 括来自状态机外部的信号和来自状态机内部其它非主控括来自状态机外部的信号和来自状态机内

12、部其它非主控 的组合或时序进程的信号),或(和)的组合或时序进程的信号),或(和)当前状态的状态当前状态的状态 值值确定下一状态(确定下一状态(next_statenext_state)的取向)的取向,即,即next_statenext_state 的取值内容,以及的取值内容,以及确定对外输出确定对外输出或对内部其它组合或时或对内部其它组合或时 序进程输出控制信号的内容。序进程输出控制信号的内容。- -译码过程译码过程 3.主控组合进程主控组合进程 图图7-1 一般状态机结构框图工作示意图一般状态机结构框图工作示意图 用于配合状态机工作的组合用于配合状态机工作的组合进程进程或时序或时序进程进程

13、 例如:例如: 完成某种算法的进程;完成某种算法的进程; 配合状态机工作的其他时序进程;配合状态机工作的其他时序进程; 稳定输出设置的数据锁存器等。稳定输出设置的数据锁存器等。 4.辅助进程辅助进程 library ieee; use ieee.std_logic_1164.all; entity s_machine is port ( clk, reset : in std_logic; state_inputs : in std_logic_vector (0 to 1); comb_outputs : out integer range 0 to 15 ); end s_machine;

14、 architecture behv of s_machine is type fsm_st is (s0, s1, s2, s3);-定义定义fsm_st为枚举型数据类型为枚举型数据类型(符号化状态机符号化状态机) signal current_state, next_state: fsm_st; begin reg: process (reset,clk)-主控时序进程主控时序进程 begin if reset = 1 then current_state = s0; -异步复位异步复位 elsif clk=1 and clkevent then current_state comb_ou

15、tputs=5;-译码输出译码输出 ifstate_inputs=“00”then-根据外部的状态控制,外部状态输入根据外部的状态控制,外部状态输入“00” next_state=s0;-在下一时钟后,进程在下一时钟后,进程reg的状态维持的状态维持为为s0 elsenext_statecomb_outputs=8; ifstate_inputs=00thennext_state=s1; elsenext_statecomb_outputs=12; ifstate_inputs=11thennext_state=s0; elsenext_statecomb_outputs=14; ifstat

16、e_inputs=11thennext_state=s3; elsenext_state=s0; endif; endcase; endprocess;-由信号由信号next_state将下一状态值带出此进程,进入进程将下一状态值带出此进程,进入进程reg endbehv; 接上页接上页 进程间一般是并行运行的,进程间一般是并行运行的, 但由于敏感信号的设置不同但由于敏感信号的设置不同 以及电路的延迟,在时序上以及电路的延迟,在时序上 进程间的动作是有先后的。进程间的动作是有先后的。 注意注意: :状态变量的状态变量的状态状态判断必须用判断必须用case语句语句, ,不能用不能用if语句语句

17、图图7-2例例7-1状态机的工作时序图状态机的工作时序图 1.0s 1.5s 2.0s 2.5s 3.0s 3.5s 4.0s clk=2 reset=1next_state=s0-reg current_state=s0comb_outputs=5-com state_inputs=“01”next_state=s1-com clk=3 next_state=s1current_state-reg current_state=s1comb_outputs=8-com state_inputs=“10”next_state=s2-com clk=4 next_state=s2current_s

18、tate-reg current_state=s2comb_outputs=12-com state_inputs=“10”next_state=s3-com 243 7.1.3状态机设计初始控制与表述状态机设计初始控制与表述 (1)打开)打开“状态机萃取状态机萃取”开关开关 (2)状态图观察)状态图观察 7.2moore型有限状态机的设计型有限状态机的设计 按状态机的信号输出方式分类:按状态机的信号输出方式分类: moore(摩尔摩尔)型和型和mealy(米里米里)型型 moore型:型:异步输出状态机异步输出状态机当时钟到来时,输出当时钟到来时,输出 仅为当前状态的函数。仅为当前状态的函数

19、。moore型最大的优点就是可型最大的优点就是可 以将输入部分与输出部分隔离开以将输入部分与输出部分隔离开。 mealy型型:同步输出状态机同步输出状态机输出当前状态和所有输出当前状态和所有 输入信号函数,输出是在输入变化后立即发生。输入信号函数,输出是在输入变化后立即发生。 不依赖时钟的同步。不依赖时钟的同步。 mooremoore型状态机框图型状态机框图 mealy状态机的框图状态机的框图 次态 译 码 器 输出 译 码 器 寄 存 器 输入 输 出 次态 译 码 器 输出 译 码 器 寄 存 器 输入 输 出 7.2.1adc采样控制设计及多进程结构状态机采样控制设计及多进程结构状态机

20、在一般状态机的设计过程中,为了能获得可综合的在一般状态机的设计过程中,为了能获得可综合的 ,高效的,高效的vhdl状态机描述,建议使用枚举类数据类型状态机描述,建议使用枚举类数据类型 来定义状态机的状态,并使用多进程方式来描述状态机来定义状态机的状态,并使用多进程方式来描述状态机 的内部逻辑。的内部逻辑。 例如可使用两个进程来描述例如可使用两个进程来描述,个进程描述时序逻个进程描述时序逻 辑,包括状态寄存器的工作和寄存器状态的输出,辑,包括状态寄存器的工作和寄存器状态的输出,另一另一 个进程描述组合逻辑,包括进程间状态值的传递逻辑以个进程描述组合逻辑,包括进程间状态值的传递逻辑以 及状态转换值

21、的输出。及状态转换值的输出。必要时还可以引入第三个进程完必要时还可以引入第三个进程完 成其它的逻辑功能。成其它的逻辑功能。 进程描述方式:进程描述方式: 描述方式描述方式进程描述功能进程描述功能 三进程描述方式三进程描述方式进程进程1:描述次态逻辑:描述次态逻辑 进程进程2:描述状态寄存器:描述状态寄存器 进程进程3:描述输出逻辑:描述输出逻辑 两进程两进程 描述方式描述方式 形式形式1进程进程1:描述次态逻辑、状态寄存器:描述次态逻辑、状态寄存器 进程进程2:描述输出逻辑:描述输出逻辑 形式形式2进程进程1:描述状态寄存器、输出逻辑:描述状态寄存器、输出逻辑 进程进程2:描述次态逻辑:描述次

22、态逻辑 形式形式3进程进程1:描述次态逻辑、输出逻辑:描述次态逻辑、输出逻辑 进程进程2:描述状态寄存器:描述状态寄存器 单进程描述方式单进程描述方式进程进程1:描述次态逻辑、状态寄存器和描述输出逻辑:描述次态逻辑、状态寄存器和描述输出逻辑 两进程描述的第三种和单进程描述方式最为常用,因两进程描述的第三种和单进程描述方式最为常用,因 为将组合逻辑和时序逻辑清楚区分,故综合效果较好为将组合逻辑和时序逻辑清楚区分,故综合效果较好 adad采样控制器采样控制器-ad574-ad574启动时序启动时序 rcrc statusstatus d11.0d11.0 20us20us z z /cs/cs d

23、11.0 图图7-3adc0809工作时序工作时序 ad采样控制器采样控制器-adc0809设计设计 输入选通端口地址锁存信号输入选通端口地址锁存信号 转换启动控制信号转换启动控制信号 状态转换信号状态转换信号 输出控制信号输出控制信号 图图7-5采样状态机结构框图采样状态机结构框图 进程进程: 状态机由两个主控进程构成,其中进程状态机由两个主控进程构成,其中进程reg为主控时序进程为主控时序进程 ,com为主控组合进程。辅助进程为主控组合进程。辅助进程latch 【例【例7-2】描述的状态机由描述的状态机由辅助进程辅助进程latch和和两个主控进程构成,其中进程两个主控进程构成,其中进程 r

24、eg为主控时序进程,为主控时序进程,com为主控组合进程。为主控组合进程。 library ieee; library ieee; use ieee.std_logic_1164.all; entity adcint is port (d : in std_logic_vector(7 downto 0); clk ,eoc : in std_logic; ale, start, oe, adda,lock0 : out std_logic; q : out std_logic_vector(7 downto 0); end adcint; architecture behav of adci

25、nt is type states is (st0, st1, st2, st3,st4) ; -定义各状态子类型定义各状态子类型 signal current_state, next_state: states :=st0 ; signal regl : std_logic_vector(7 downto 0); signal lock : std_logic; - 转换后数据输出锁存时钟信号转换后数据输出锁存时钟信号 begin adda =1;-当当adda=0,模拟信号进入,模拟信号进入0809通道通道0;当;当adda=1,则进入通道,则进入通道1 q = regl; lock0 a

26、le=0;start=0;lock=0;oe=0; next_state ale=1;start=1;lock=0;oe=0; next_state ale=0;start=0;lock=0;oe=0; if (eoc=1) then next_state = st3; -eoc=1表明转换结束表明转换结束 else next_state ale=0;start=0;lock=0;oe=1; next_state ale=0;start=0;lock=1;oe=1; next_state next_state = st0; end case ; end process com ; reg: p

27、rocess (clk) begin if (clkevent and clk=1) then current_state=next_state; end if; end process reg ; - 由信号由信号current_state将当前状态值带出此进程将当前状态值带出此进程:reg latch1: process (lock) -st4进入进入进程中,在进程中,在lock的上升沿,将转换好的数据锁入的上升沿,将转换好的数据锁入 begin if lock=1 and lockevent then regl next_statenext_stateif(eoc=1)thennext_

28、state=st3; elsenext_statenext_statenext_statenext_stateale=0;start=0;lock=0;oeale=1;start=1;lock=0;oeale=0;start=0;lock=0;oeale=0;start=0;lock=0;oeale=0;start=0;lock=1;oeale=0;start=0;lock=0; endcase; endprocesscom2; 7.2.2序列检测器之状态机设计序列检测器之状态机设计 接下页接下页 序列检测器序列检测器 7.2.2序列检测器之状态机设计序列检测器之状态机设计 接上页接上页 例:

29、例: 用摩尔型状态机的设计用摩尔型状态机的设计空调控制器空调控制器 空调控制器有两个输入,分别与温度传感器空调控制器有两个输入,分别与温度传感器 相连,用于检测室内温度。如果温度适宜(如相连,用于检测室内温度。如果温度适宜(如 1825),则两个输入),则两个输入temp_high和和 temp_low均为低均为低;如果室内温度超过上限如果室内温度超过上限 (25),则输入),则输入temp_high为高为高;如果室内温度如果室内温度 低于下限(低于下限(18),则输入),则输入temp_low为高。设控为高。设控 制器的输出为制器的输出为“heat”和和“cool”,当两者之一,当两者之一

30、为高时,空调器就制热或制冷。为高时,空调器就制热或制冷。 空调控制器状态转换图空调控制器状态转换图 temp-high=0 temp-low=0 heat=0 cool=0 cool=0 heat=1 cool=1 heat=0 temp-high=1 正好 太冷太热 temp-high=0 temp-low=0 temp-high=0 temp-low=0 temp-low=1 temp-high=1 temp-high=1 temp-low=1 temp-low=1 控制器的控制器的vhdl描述描述 library ieee; use ieee.std_logic_1164.all; en

31、tity air_cont is port( clk: in std_logic; temp_high: in std_logic; temp_low: in std_logic; heat: out std_logic; cool: out std_logic); end air_cont; architecture arc1 of air_cont is type state_type is(just_right, too_cold, too_hot); -状态类型,枚举三种状态 signal stvar: state_type; -状态变量 begin process begin wai

32、t on clk until rising_edge(clk); -等待clk上升沿 if temp_low=1 then stvar=too_cold; -次态逻辑 elsif temp_high=1 then stvar=too_hot; else stvarheat=0;coolheat=1;coolheat=0;cool z=0; if xi=1 then next_state=s1; else next_state z=0; if xi =1 then next_state=s2; else next_state z=0; if xi=1 then next_state=s3; el

33、se next_state z=0; if xi=1 then next_state=s3; else next_state z=0; if xi=1 then next_state=s1; else next_state z=0; if xi=1 then next_state=s6; else next_state z=0; if xi=1 then next_state=s2; else next_state z=1; if xi=1 then next_state=s1; else next_state=s0; end if; end case; end process state_c

34、omb; state_clk: process(clk) begin if clkevent and clk=1 then present_state=next_state; end if; end process state_clk; end archjcq; 序列检测器的序列检测器的vhdl源文件中,有两个进程源文件中,有两个进程:第一个进程第一个进程 说明次态的取值由现态及输入决定,但并没有指出它在什么时说明次态的取值由现态及输入决定,但并没有指出它在什么时 候成为现态候成为现态;第二个进程,可以看到该赋值过程与时钟的上升沿第二个进程,可以看到该赋值过程与时钟的上升沿 同步。因为序列检测

35、器使用了两个进程来定义有限状态机,故同步。因为序列检测器使用了两个进程来定义有限状态机,故 而称之为双进程的有限状态机描述方式。而称之为双进程的有限状态机描述方式。 7.3mealy型有限状态机的设计型有限状态机的设计 mealy型状态机的输出逻辑不仅与当前状态有关型状态机的输出逻辑不仅与当前状态有关,还与当还与当 前的输入变量有关,因此,一个基本的前的输入变量有关,因此,一个基本的mealy型状态机应型状态机应 具有以下端口信号具有以下端口信号: 时钟输入端时钟输入端: clk;输入变量输入变量:input;输出变量输出变量:output; 状态复位端状态复位端: reset; mealy型

36、状态机的型状态机的输出变化比输出变化比moore型状态机要领先一型状态机要领先一 个周期,即一旦输入状态发生变化,输出信号即刻发生变化个周期,即一旦输入状态发生变化,输出信号即刻发生变化 组合逻辑 寄存器 inputs clk reset 当前状态 outputs 接下页接下页 双进程状态机双进程状态机-mealy 接上页接上页 毛刺毛刺 消除毛刺,改进方法消除毛刺,改进方法 1)将输出通过寄存器锁存)将输出通过寄存器锁存 2)改为单进程状态机)改为单进程状态机mealy 接下页接下页 单进程状态机单进程状态机mealy消除毛刺消除毛刺 接上页接上页 接下页接下页 序列检测器序列检测器-将例将

37、例7-4双进程的双进程的moore改为单进程的改为单进程的mealy 接上页接上页 不同:输出不同:输出sout延时一个时钟,输出延时具有滤波作用。延时一个时钟,输出延时具有滤波作用。 7.4状态机图形编辑设计方法状态机图形编辑设计方法 7.5状态编码状态编码 状态机从状态表达方式可分为:状态机从状态表达方式可分为: 有符号状态机和确定编码状态机有符号状态机和确定编码状态机 有符号状态机:有符号状态机:用文字符号表示状态变量的状态机用文字符号表示状态变量的状态机 ,其状态编码由,其状态编码由vhdl综合器根据具体情况确定。综合器根据具体情况确定。 确定编码状态机:确定编码状态机:其状态编码可人

38、为控制或由综合其状态编码可人为控制或由综合 器自动对编码方式进行选择。器自动对编码方式进行选择。 状态机从编码方式可分为:状态机从编码方式可分为: 顺序编码状态机、一位热码编码状态机或其它顺序编码状态机、一位热码编码状态机或其它 编码状态机编码状态机 7.5.1直接输出型编码直接输出型编码 将状态编码直接输出作为控制信号将状态编码直接输出作为控制信号,即即output=stateoutput=state;要;要 求对状态机各状态的编码作特殊的选择,以适应控制时序的求对状态机各状态的编码作特殊的选择,以适应控制时序的 要求。这种状态机称为状态码直接输出型状态机。要求。这种状态机称为状态码直接输出

39、型状态机。 直接输出型编码应用:计数器直接输出型编码应用:计数器 表表7-10809采样机采样机控制信号状态编码表控制信号状态编码表 状态状态 状状态态编编码码 start aleoe lock b功功能能说说明明 st000000初始态初始态 st111000启动转换启动转换 st200001若测得若测得eoc=1时,转下一状态时,转下一状态st3 st300100输出转换好的数据输出转换好的数据 st400110 利用利用lock的上升沿将转换好的数据锁存的上升沿将转换好的数据锁存 将状态编码直接输出作为控制信号将状态编码直接输出作为控制信号,每一位的编码值都赋予了实际的控制功能,每一位的

40、编码值都赋予了实际的控制功能, 即:即: start= current_state(4);); ale = current_state(3) ; oe = current_state(2) ; lock = current_state(1) 。 ale:输入选通端口地址锁存信号输入选通端口地址锁存信号 start:转换启动控制信号转换启动控制信号 eoc:状态转换信号状态转换信号 oe:输出控制信输出控制信 号号 7.5状状态态编编码码 7.5.1直接输出型编码直接输出型编码 接下页接下页 根据编码表根据编码表7-1编写的代码编写的代码 7.5状状态态编编码码 7.5.1直接输出型编码直接输出

41、型编码 接上页接上页 其他编码方式其他编码方式用属性定义语句设用属性定义语句设 置置 用属性定义语句设置用属性定义语句设置 7.5.2顺序编码顺序编码 顺序编码方式就是利用若干个触发器的编码组合顺序编码方式就是利用若干个触发器的编码组合 来实现来实现n n个状态的状态机,这种编码方式最为简单,个状态的状态机,这种编码方式最为简单, 且使用的触发器数量最少,剩余的非法状态最少,且使用的触发器数量最少,剩余的非法状态最少, 容错技术最为简单。容错技术最为简单。 【例【例】 . signalcrurrent_state,next_state: std_logic_vector(2downto0);

42、constantst0:std_logic_vector(2downto0):=000; constantst1:std_logic_vector(2downto0):=001; constantst2:std_logic_vector(2downto0):=010; constantst3:std_logic_vector(2downto0):=011; constantst4:std_logic_vector(2downto0):=100; . 7.5.3一位热码状态编码一位热码状态编码 (one-hotencoding) 一位热码编码方式就是用一位热码编码方式就是用n个触发器来实现个触发

43、器来实现 具有具有n个状态的状态机,状态机中的每一个状态个状态的状态机,状态机中的每一个状态 都由其中一个触发器的状态表示,即当处于某状都由其中一个触发器的状态表示,即当处于某状 态时,对应的触发器为态时,对应的触发器为1,其余的触发器都置其余的触发器都置 0。 一位热码编码方式尽管用了较多的触发器,一位热码编码方式尽管用了较多的触发器, 但其简单的编码方式大为简化了状态译码逻辑,但其简单的编码方式大为简化了状态译码逻辑, 提高了状态转换速度,这对于含有较多的时序逻提高了状态转换速度,这对于含有较多的时序逻 辑资源,较少的组合逻辑资源的辑资源,较少的组合逻辑资源的fpga器件是好器件是好 的解

44、决方案。的解决方案。 一位热码编码方式选择对话框一位热码编码方式选择对话框 一位热码编码一位热码编码(one-hotencoding) 一位热码编码方式是用一位热码编码方式是用n个触发器实现具有个触发器实现具有n个状态的状个状态的状 态机,状态机中的每一个状态都由其中一个触发器的状态表态机,状态机中的每一个状态都由其中一个触发器的状态表 示,示,对应的触发器为对应的触发器为1,其余的触发器都置其余的触发器都置0。 状态机编码方式设置状态机编码方式设置 状状态态顺序编码顺序编码一位热码一位热码 编码编码 state0000100000 state1001010000 state201000100

45、0 state3011000100 state4100000010 state5101000001 assignglobalprojectsynthesis 7.5.4状态编码设置状态编码设置 1.用户自定义方式用户自定义方式 将需要的编码方式直接写入程序中,不需将需要的编码方式直接写入程序中,不需eda软件干预软件干预 2.直接设置方法直接设置方法 一位热码形式一位热码形式 3.用属性定义语句设置用属性定义语句设置 7.6安全状态机设计安全状态机设计 状态机剩余状态:状态机剩余状态: 未不需要被定义的未不需要被定义的 编码编码 组合,这些状态在状态机的组合,这些状态在状态机的 正常运行中正常

46、运行中 不需要出现的,不需要出现的, 通常称为非法状态。通常称为非法状态。 7.6.1程序直接导引法程序直接导引法 1)在语句对每一个非法状态作出明确状态转换指示)在语句对每一个非法状态作出明确状态转换指示 2)利用)利用others语句中对未提到的状态作统一处理语句中对未提到的状态作统一处理 7.6.2状态编码监测法状态编码监测法 一位热码编码方式可减少状态转换间的译码一位热码编码方式可减少状态转换间的译码 组合逻辑资源,但其剩余状态过多,处理方法:组合逻辑资源,但其剩余状态过多,处理方法: 正常的状态时,只有正常的状态时,只有1个触发器的状态为个触发器的状态为1,其其 余的触发器都置余的触

47、发器都置0。在状态机设计中加入对状。在状态机设计中加入对状 态态1个数是否大于一的判别逻辑,当大于个数是否大于一的判别逻辑,当大于1时时 ,产生报警信号,产生报警信号alarm,系统可根据此信号,系统可根据此信号 是否有效决定是否调整状态或转向。是否有效决定是否调整状态或转向。 7.6.3借助借助eda优化控制工具生成安全状态机优化控制工具生成安全状态机 7.7硬件数字技术排除毛刺硬件数字技术排除毛刺 7.7.1延时方式去毛刺延时方式去毛刺 7.7.2逻辑方式去毛刺逻辑方式去毛刺 7.7.3定时方式去毛刺定时方式去毛刺 接下页接下页 接上页接上页 习习题题 7-1根据图根据图7-30(a)所示

48、的状态图,分别按照图)所示的状态图,分别按照图7-30(b)和图)和图7-30 (c)写出对应结构的)写出对应结构的vhdl状态机。并根据表状态机。并根据表7-2,分别用,分别用3中不同编中不同编 码方式实现二状态机,并讨论他们的容错措施。码方式实现二状态机,并讨论他们的容错措施。 习习题题 7-2举二例说明,有那些常用时序电路是状态机比较典型举二例说明,有那些常用时序电路是状态机比较典型 特殊形式,并说明它们属于什么类型的状态机(编码类型,特殊形式,并说明它们属于什么类型的状态机(编码类型, 时序类型和结构类型)。时序类型和结构类型)。 7-3用用mealy机类型,写出控制机类型,写出控制a

49、dc0809采样的状态机。采样的状态机。 7-4请设计一种信号去抖动的电路模型,仿真后,讨论其请设计一种信号去抖动的电路模型,仿真后,讨论其 优缺点和使用范围。优缺点和使用范围。 7-5根据根据7.5节,用表格法和绘图法设计状态机,实现例节,用表格法和绘图法设计状态机,实现例7-2 的功能,用时序仿真波形图验证之。最后将其转变成的功能,用时序仿真波形图验证之。最后将其转变成vhdl 程序,将此程序与例程序,将此程序与例7-2相比,讨论他们的表述风格。相比,讨论他们的表述风格。 实验与设计实验与设计 7-1序列检测器设计序列检测器设计 (1)实验目的:)实验目的: (2)实验任务:)实验任务:

50、(3)实验思考题:。)实验思考题:。 (4)实验报告:)实验报告: 基于基于5e+系统的演示示例:系统的演示示例: /kx_7c5ee+/experiments/exp34_schk/ 实验与设计实验与设计 7-2并行并行adc采样控制电路实现与硬件验证采样控制电路实现与硬件验证 (1)实验目的:)实验目的: (2)实验原理:)实验原理: (3)实验任务)实验任务1: 实验与设计实验与设计 7-2并行并行adc采样控制电路实现与硬件验证采样控制电路实现与硬件验证 (4)实验任务)实验任务2: (5)实验任务)实验任务3: (6)实验任务)实验任务4: (7)实验报告:)实验报告: 实验与设计实

51、验与设计 7-3数据采集模块和简易存储示波器设计数据采集模块和简易存储示波器设计 (1)实验目的:)实验目的: (2)实验原理:)实验原理: 实验与设计实验与设计 7-3数据采集模块和简易存储示波器设计数据采集模块和简易存储示波器设计 (3)实验内容)实验内容1: (4)实验内容)实验内容2: (5)实验内容)实验内容3: (6)实验内容)实验内容4: 向另一向另一5e+系统下载:系统下载: /kx_7c5ee/demos/exp10_dds_core_dac0832/mcu 8951。 (7)实验内容)实验内容5: (8)实验内容)实验内容6: (9)实验内容)实验内容7: 实验与设计实验与

52、设计 7-4五功能智能逻辑笔设计五功能智能逻辑笔设计 (1)实验目的:)实验目的: (2)实验原理:)实验原理: 实验与设计实验与设计 7-4五功能智能逻辑笔设计五功能智能逻辑笔设计 (1)实验目的:)实验目的: (2)实验原理:)实验原理: 示例文件:示例文件: /kx_7c5ee+/experiments/exp14_logic_pen/ (3)实验内容:)实验内容: 实验与设计实验与设计 7-5比较器加比较器加dac器件实现器件实现adc转换功能电路设计转换功能电路设计 (1)实验原理:)实验原理: (2)实验内容)实验内容1: (3)实验内容)实验内容2: 实验与设计实验与设计 7-6

53、通用异步收发器通用异步收发器uart设计设计 (1)实验目的:实验目的: (2)实验内容实验内容1: 实验与设计实验与设计 (3)实验内容实验内容2: (4)实验内容实验内容3: 另一另一uart演示示例:演示示例: /kx_7c5ee+/demos/expl14_rs232_piano。 实验与设计实验与设计 7-7点阵型与字符型液晶显示器驱动控制电路设计点阵型与字符型液晶显示器驱动控制电路设计 (1)实验目的:)实验目的: (2)实验原理:)实验原理: (3)实验任务)实验任务1: (4)实验任务)实验任务2: 以上以上2类基于类基于5e+系统的系统的lcd的演示示例是:的演示示例是: /

54、kx_7c5ee/demos/expl18_ps2_64x128lcd/;或;或 /experiments/exp20_8051_lcd128x64/; 或或/experiments/exp17_kx8051_gps_ftest/。 实验与设计实验与设计 7-8串行串行adc/dac采样或信号输出控制电路设计采样或信号输出控制电路设计 通过网络查阅一些常用串行通过网络查阅一些常用串行adc器件,包括它们的工作性器件,包括它们的工作性 能、使用方法、时序特点。设计出对应的电路,然后用状能、使用方法、时序特点。设计出对应的电路,然后用状 态机对其控制,最后比较用状态机和态机对其控制,最后比较用状态机和cpu的优缺点。的优缺点。 串行串行adc/dac资料查阅文件夹:资料查阅文件夹:“pdf实验设计文件实验设计文件”。 基于基于5e+的示例:的示例: /kx_7c5ee+/experiments/exp40_sadc_sdac/。 tlv5637和和tlv5618a都是双通道都是双通道dac,比较适合于实现之,比较适合于实现之 前的提出的几个需要双通道前的提出的几个需要双通道dac输出的实验,如基于输出的实验,如基于dds 的移相信号发生器,里萨如图信号发生器,存储示波器等。的移相信号发生器,里萨如图信号发生器,存储示波器等

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论