第8章状态机设计课件

上传人:文**** 文档编号:242737296 上传时间:2024-09-02 格式:PPT 页数:30 大小:431.24KB
返回 下载 相关 举报
第8章状态机设计课件_第1页
第1页 / 共30页
第8章状态机设计课件_第2页
第2页 / 共30页
第8章状态机设计课件_第3页
第3页 / 共30页
点击查看更多>>
资源描述
单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,单击此处编辑母版标题样式,单击此处编辑母版文本样式,第二级,第三级,第四级,第五级,*,*,*,第,8,章,状态机设计,第 8 章,8.1,一般有限状态机设计,8.1.1,数据类型定义语句,VHDL,除了一些,标准的预定义类型,外,如整数类型、,BOOLEAN,类型、,STD_LOGIC,等,还允许用户,自定义数据类型,,如枚举类型、整数类型、数组类型、记录类型、时间类型、实数类型等。,自定义数据类型,是用,类型定义语句,TYPE,和,子类型定义语句,SUBTYPE,实现的。,8.1 一般有限状态机设计 8.1.1 数据类型定义语句,TYPE,语句的用法如下:,TYPE,数据类型名,IS,数据类型定义,OF,基本数据类型,;,或,TYPE,数据类型名,IS,数据类型定义,;,其中:,数据类型名,:,由设计者自定;,数据类型定义:,描述所定义的数据类型的,表达方式,和,表达内容,;,基本数据类型:,指数据类型定义中,所定义的元素的基本数据类型,,一般都是取已有的预定义数据类型,如,BIT,、,STD_LOGIC,、,INTEGER,等。,TYPE语句的用法如下:,例:,TYPE st1 IS ARRAY(0 TO 15) OF STD_LOGIC,;,TYPE week IS (sun,,,mon,,,tue,,,wed,,,thu,,,fri,,,sat) ;,其中:,数据类型,st1,:,是一个具有,16,个元素的,数组型数据类型,,数组中的每一个元素的数据类型都是,STD_LOGIC,型;,数据类型,week,:,属于,枚举类型,,是由一组文字符号表示的,而其中的每一文字都代表一个具体的数值,如可令,sun=“1010”,。,状态机的每一状态在实际电路中是以,一组触发器的当前二进制数位的组合,来表示的,但设计者在状态机的设计中,为了更利于阅读、编译和优化,往往将表征每一状态的二进制数组用,文字符号,来代表,即所谓,状态符号化,。,例:其中:,8.1,一般有限状态机设计,TYPE m_state IS ( st0,,,st1,,,st2,,,st3,,,st4,,,st5 ) ;,SIGNAL present_state,,,next_state : m_state ;,TYPE BOOLEAN IS (FALSE,,,TRUE),;,TYPE my_logic IS ( 1,,,Z,,,U,,,0 ) ;,SIGNAL s1 : my_logic ;,s1 = Z ;,SUBTYPE,子类型名,IS,基本数据类型,RANGE,约束范围,;,SUBTYPE digits IS INTEGER RANGE 0 to 9 ;,8.1 一般有限状态机设计 TYPE m_state I,8.1,一般有限状态机设计,8.1.2,为什么要使用状态机,状态机克服了纯硬件数字系统顺序方式,控制不灵活,的缺点;,状态机可以定义,符号化枚举类型,的状态;,状态机容易构成性能良好的,同步时序逻辑模块;,状态机的,VHDL,表述,丰富多样,、程序层次分明,易读易懂;,在,高速运算和控制,方面,状态机更有其巨大的优势;,高可靠性。,8.1 一般有限状态机设计 8.1.2 为什么要使用状态,8.1,一般有限状态机设计,8.1.3,一般有限状态机的设计,状态机分类,从信号输出方式分,Mealy,型状态机,Moore,型状态机,从结构分,单进程状态机,多进程状态机,从状态表达方式分,有符号化状态机,确定状态编码的状态机,从编码方式分,顺序编码状态机,一位热码编码状态机,其他编码方式状态机,8.1 一般有限状态机设计 8.1.3 一般有限状态机的,8.1.3,一般有限状态机的设计,1.,说明部分,说明部分中使用,TYPE,语句,定义新的数据类型,此数据类型为,枚举型,,其元素通常都用状态机的,状态名,来定义。,状态变量,(如现态和次态)应定义为,信号,,便于信息传递;并将,状态变量,的数据类型定义为含有既定状态元素的新定义的数据类型。,说明部分,一般放在结构体的,ARCHITECTURE,和,BEGIN,之间。,ARCHITECTURE . IS,TYPE,FSM_ST,IS (s0,,,s1,,,s2,,,s3);,SIGNAL current_state, next_state: FSM_ST;,.,最一般和最常用的状态机通常都包含,说明部分,、,主控时序进程,、,主控组合进程,、,辅助进程,等几个部分。,8.1.3 一般有限状态机的设计 1. 说明部分ARCHI,8.1.3,一般有限状态机的设计,2.,主控时序进程,指负责状态机运转和在时钟驱动下负责状态转换的,进程,。状态机是随外部时钟信号、以同步时序方式工作的。因此,状态机中必须包含一个,对工作时钟信号敏感的进程,,作为状态机的“,驱动泵,”。,当时钟发生有效跳变时,状态机的状态才发生变化。状态机向下一状态(包括再次进入本状态)转换的实现仅仅取决于,时钟信号的到来,。,一般地,主控时序进程,不负责下一状态的具体状态取值,,如,s0,、,s1,、,s2,、,s3,中的某一状态值。,当时钟的有效跳变到来时,时序进程只是机械地将,代表次态信号,next_state,中的内容送入现态,current_state,中,,而信号,next_state,中的内容完全由其他的进程根据实际情况来决定。,8.1.3 一般有限状态机的设计 2. 主控时序进程,一般状态机结构,:,FSM:,s_machine,comb_outputs,state_inputs,reset,clk,COM,next_state,current_state,PROCESS,REG,PROCESS,主控时序进程,主控组合进程,3.,主控组合进程,COM,进程为一,主控组合进程,,它通过信号,current_state,中的状态值,进入相应的状态,并在此状态中,根据外部的信号,,如,state_inputs,等向内,/,外发出控制信号,如,comb_outputs,,同时确定下一状态的走向,即向次态信号,next_state,中赋入相应的状态值。,此状态值将通过,next_state,传给,REG,时序进程,直至下一个时钟脉冲的到来再进入另一轮的状态转换周期。,一般状态机结构:FSM:s_machinecomb_outp,8.1.3,一般有限状态机的设计,【,例,8-1】,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;,ARCHITECTURE behv OF s_machine IS,TYPE FSM_ST IS (s0, s1, s2, s3); -,数据类型定义,状态符号化,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_outputs= 5;,IF state_inputs = 00 THEN next_state=s0;,ELSE next_state comb_outputs= 8;,IF state_inputs = 00 THEN next_state=s1;,ELSE next_state comb_outputs= 12;,IF state_inputs = 11 THEN next_state = s0;,ELSE next_state comb_outputs = 14;,IF state_inputs = 11 THEN next_state = s3;,ELSE next_state = s0;,END IF;,END case; END PROCESS;,END behv;,COM:PROCESS(current_state, sta,8.1.3,一般有限状态机的设计,例,8-1,状态机的工作时序,例,8-1,的状态图,状态图观察器,Tools/Netlist Viewers/State Machine Viewer,reset,E,5,8,C,8.1.3 一般有限状态机的设计 例8-1状态机的工作时序,8.2.1,多进程有限状态机,从状态机的信号输出方式上分,有,Mealy,型和,Moore,型两类状态机。,Mealy,型状态机,Moore,型状态机,异步输出状态机,同步输出状态机,Mealy,型状态机的输出是,当前状态和所有输入信号的函数,,它的输出是在输入变化后立即发生的,,不依赖时钟的同步,。,Moore,型状态机的输出则,仅为当前状态的函数,,这类状态机在输入发生变化时还必须等待时钟的到来,,时钟使状态发生变化时才导致输出的变化,,所以比,Mealy,机要多等待一个时钟周期。,8.2 Moore,型有限状态机设计,8.2.1 多进程有限状态机 Mealy型状态机Moore,8.2.1,多进程有限状态机,图,8-3 ADC0809,工作时序,地址锁存信号(上升沿有效),转换启动控制信号(高电平有效),状态转换指示(转换状态为低电平),三态控制(高电平输出数据有效),输出数据总线,8.2.1 多进程有限状态机 图8-3 ADC0809工,8.2.1,多进程有限状态机,图,8-4,控制,ADC0809,采样状态图,8.2.1 多进程有限状态机 图8-4 控制ADC0809,8.2.1,多进程有限状态机,图,8-7,采样状态机结构框图,8.2.1 多进程有限状态机 图8-7 采样状态机结构框,【,例,8-2】,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY ADCINT IS,PORT(D : IN,STD_LOGIC_VECTOR(7 DOWNTO 0);,-,来自,0809,转换好的,8,位数据,CLK : IN STD_LOGIC; -,状态机工作时钟,EOC : IN STD_LOGIC; -,转换状态指示,低电平表示正在转换,ALE : OUT STD_LOGIC; -8,个模拟信号通道地址锁存信号,START : OUT STD_LOGIC; -,转换开始信号,OE : OUT STD_LOGIC; -,数据输出,3,态控制信号,ADDA : OUT STD_LOGIC; -,信号通道最低位控制信号,LOCK0 : OUT STD_LOGIC; -,观察数据锁存时钟,Q : OUT STD_LOGIC_VECTOR(7 DOWNTO 0); -8,位数据输出,END ADCINT;,ARCHITECTURE behav OF ADCINT 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,,模拟信号进入通道,IN0,;当,ADDA=1,,则进入通道,IN1,Q = REGL; LOCK0 ALE=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 ;,COM: PROCESS(current_state,EOC,REG,: PROCESS (CLK),BEGIN,IF (CLKEVENT AND CLK=1) THEN,current_state=next_state;,END IF;,END PROCESS REG ;-,由信号,current_state,将当前状态值带出此进程,:REG,LATCH1,: PROCESS (LOCK) -,此进程中,,在,LOCK,的上升沿,将转换好的数据锁入,BEGIN,IF LOCK=1 AND LOCKEVENT THEN REGL next_state next_state IF (EOC=1) THEN next_state = st3;,ELSE next_state next_state next_state next_state ALE=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;OE ALE=0;START=0;LOCK=0;,END CASE ;,END PROCESS COM2,;,【例8-3】:可以将例8-2中的组合进程COM分成两个组合进,8.3 Mealy,型有限状态机设计,【,例,8-5】,LIBRARY IEEE;,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY MEALY1 IS,PORT ( CLK ,DATAIN,RESET : IN STD_LOGIC;,Q : OUT STD_LOGIC_VECTOR(4 DOWNTO 0);,END MEALY1;,ARCHITECTURE behav OF MEALY1 IS,TYPE states IS (st0, st1, st2, st3,st4);,SIGNAL STX : states ;,BEGIN,COMREG,: PROCESS(CLK,RESET) -,决定转换状态,的进程,BEGIN,IF RESET =1 THEN STX IF DATAIN = 1 THEN STX IF DATAIN = 0 THEN STX IF DATAIN = 1 THEN STX IF DATAIN = 0 THEN STX IF DATAIN = 1 THEN STX STX IF DATAIN = 1 THEN Q = 10000 ;,ELSE Q IF DATAIN = 0 THEN Q = 10111 ;,ELSE Q IF DATAIN = 1,THEN Q = 10101 ;,ELSE Q IF DATAIN = 0 THEN Q = 11011 ;,ELSE Q IF DATAIN = 1 THEN Q = 11101 ;,ELSE Q Q=00000 ;,END CASE ;,END PROCESS COM1 ;,END behav;,COM1: PROCESS(STX,DATAIN),例,8-5,状态机工作,时序图,由于输出信号,Q,是由,组合电路,直接产生,所以该状态机输出信号有许多,毛刺,,为解决这个问题,可以考虑将输出信号,Q,值,由时钟信号锁存后再输出,。,例,8-6,是在例,8-5,的基础上,在,COM1,进程中增加了一个,IF,语句,,由此产生一个锁存器,将,Q,锁存后再输出。,例8-5状态机工作时序图由于输出信号Q是由组合电路直接产生,,8.3 Mealy,型有限状态机设计,【,例,8-6】,LIBRARY IEEE; -,MEALY FSM,USE IEEE.STD_LOGIC_1164.ALL;,ENTITY MEALY2 IS,PORT ( CLK ,DATAIN,RESET: IN STD_LOGIC;,Q:OUT STD_LOGIC_VECTOR(4 DOWNTO 0);,END MEALY2;,ARCHITECTURE behav OF MEALY2 IS,TYPE states IS (st0, st1, st2, st3,st4);,SIGNAL STX : states ;,SIGNAL Q1 : STD_LOGIC_VECTOR(4 DOWNTO 0);,BEGIN,COMREG,:PROCESS(CLK,RESET) -,决定转换状态的进程,BEGIN,IF RESET =1 THEN STX IF DATAIN = 1 THEN STX IF DATAIN = 0 THEN STX IF DATAIN = 1 THEN STX IF DATAIN = 0 THEN STX IF DATAIN = 1 THEN STX STX IF DATAIN=1 THEN Q2 :=10000;,ELSE Q2:=01010; END IF;,WHEN st1= IF DATAIN=0 THEN Q2 :=10111;,ELSE Q2:=10100; END IF;,WHEN st2= IF DATAIN=1 THEN Q2 :=10101;,ELSE Q2:=10011; END IF;,WHEN st3= IF DATAIN=0 THEN Q2 :=11011;,ELSE Q2:=01001; END IF;,WHEN st4= IF DATAIN=1 THEN Q2 :=11101;,ELSE Q2:=01101; END IF;,WHEN OTHERS = Q2:=00000 ;,END CASE ;,IF CLKEVENT AND CLK = 1 THEN Q1=Q2; END IF;,END PROCESS COM1 ;,Q = Q1 ;,END behav;,COM1: PROCESS(STX,DATAIN,CLK),8.3 Mealy,型有限状态机设计,图,8-13,例,8-6,状态机工作时序图,8.3 Mealy型有限状态机设计 图8-13 例8-6,
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档 > PPT模板库


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!