有限状态机教学PPT.ppt
《有限状态机教学PPT.ppt》由会员分享,可在线阅读,更多相关《有限状态机教学PPT.ppt(51页珍藏版)》请在三一办公上搜索。
1、有限状态机,众所周知,数字系统的基本结构由控制单元和数据处理单元两大部分组成。控制单元在统一的同步时钟控制下,严格地按照一定的时间关系输出控制信号;处理单元一步一 步地完成整个数字系统的操作。其中,控制单元我们常采用有限状态机(FSM)来实现,一、问题引入:停车场计数器,有一停车场,只有一个进出口,如图所示,有两个传感器A和B,可以测出车辆的进出状况,要求设计一个停车场计数器,能够对停车场内的车辆进行计数,使用两个LED数码管显示停车场中的车辆数。,分析:当有车出来时,首先A被挡住,接着A,B都被挡住,接着只有B被挡住,最后A、B都没被挡住。当有车进去时,首先B被挡住,接着A,B都被挡住,接着
2、只有A被挡住,最后A、B都没被挡住。,停车场计数器模块图,A,B,RST,CLK,数码管,数码管,段码,段码,车进出判决模块,加减计数器,译码器,clk_en,Add/sub,车辆进入判决模块设计,A,B,1,1,STEP 1,车辆进入判决模块设计,A,B,1,0,STEP 2,车辆进入判决模块设计,A,B,0,0,STEP 3,车辆进入判决模块设计,A,B,0,1,STEP 4,车辆进入判决模块设计,A,B,1,1,STEP 5,车辆进出判决模块设计,设计这个模块的思想是:引入状态,代表上述的step1step5状态如何改变由输入决定模块的输出由状态来决定,step1,step4,step3
3、,step2,step5,A=1B=0,A=0B=0,A=0B=1,A=1B=1,输出CLK和A/S,1.莫尔状态机模型,状态译码,状态寄存器,输出译码,clk,输入,现态,次态,输出,二.状态机模型,library ieee;use ieee.std_logic_1164.all;entity system isport(clock:in std_logic;input:in std_logic;output:out std_logic);end system;architecture moore of system istype state is(st0,st1,st2,.);signal
4、 next_state,current_state:state;beginF1:process(input,current_state)状态译码 beginnext_state=F1(input,current_state);end process;,莫尔状态机VHDL实现,F2:process(clock)状态寄存器 beginif rising_edge(clock)thencurrent_state=next_state;end if;end process;F3:process(current_state)输出译码 beginoutput=F3(current_state);end p
5、rocess;end moore;,莫尔状态机VHDL实现,状态机说明部分,用户自定义数据类型定义语句,TYPE语句用法如下:TYPE 数据类型名 IS 数据类型定义 OF 基本数据类型;或TYPE 数据类型名 IS 数据类型定义;,以下列出了两种不同的定义方式:TYPE st1 IS ARRAY(0 TO 15)OF STD_LOGIC;TYPE week IS(sun,mon,tue,wed,thu,fri,sat);,状态机说明部分,用户自定义数据类型定义语句,TYPE m_state IS(st0,st1,st2,st3,st4,st5);SIGNAL present_state,ne
6、xt_state:m_state;,布尔数据类型的定义语句是:TYPE BOOLEAN IS(FALSE,TRUE);,TYPE my_logic IS(1,Z,U,0);SIGNAL s1:my_logic;s1=Z;,2米利状态机,状态译码,状态寄存器,输出译码,clk,输入,现态,次态,输出,library ieee;use ieee.std_logic_1164.all;entity system isport(clock:in std_logic;input:in std_logic;output:out std_logic);end system;architecture meal
7、y of system istype state is(st0,st1,st2,.);signal next_state,current_state:state;beginF1:process(input,current_state)状态译码 beginnext_state=F1(input,current_state);end process;,米利状态机VHDL实现,Register:process(clock)状态寄存器 beginif rising_edge(clock)thencurrent_state=next_state;end if;end process;F2:process
8、(input,current_state)输出译码 beginoutput=F2(input,current_state);end process;end mealy;,米利状态机VHDL实现,3onehot状态机,状态编码为独热码:只有一位是1,其他都是0。constant st0:std_logic_vector(2 downto 0):=”001”;constant st1:std_logic_vector(2 downto 0):=”010”;constant st2:std_logic_vector(2 downto 0):=”100”;.signal current_state:s
9、td_logic_vector(2 downto 0);signal next_state:std_logic_vector(2 downto 0);缺点:需要的硬件资源多于二进制编码状态机优点:1.输出译码简单;2.速度快;3.不必考虑最优问题;4.易于修改。,4.使用VHDL实现有限状态机的一般步骤,1)选择合适的状态机模型:对于Moore状态机来说,输出将在时钟触发信号到来后的 几个门后得到,同时在剩余的时钟周期内不变,即使输入 信号在这段时间内发生变化,输出信号也不会发生变化。因此,我们可以说将输入和输出部分隔开了,起到了隔离 的作用。而对于Mealy状态机来说,则不然,当输入变化时,
10、输出 在一个时钟周期内也会发生变化。因此,mealy状态机比 Moore状态机的“实时性”要好,但是,也会把输入的噪声 引入输出。有时候,Moore状态机比Mealy状态机需要更多的状态。2)根据要求画出状态关系转换图3)用VHDL语言来描述,有限状态机,假设要设计一个AD控制器,ADC0809控制器功能图,有限状态机,步骤0,步骤1,步骤4,步骤3,步骤2,地址锁存选择通道,启动转换,等待转换结束,转换结束数据输出,初态,步骤5,等待EOC变低电平,EOC,EOC,三.状态机的应用举例,1.ADC0809控制器,选择莫尔机来实现,状态转移图如下,st0,st1,st2,st3,st4,st5
11、,ALE=0START=0OE=0,ALE=1START=0OE=0,ALE=0START=1OE=0,ALE=0START=0OE=0,EOC0,EOC1,EOC1,ALE=0START=0OE=0,ALE=0START=0OE=1,EOC0,LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY ADCINT ISPORT(D:IN STD_LOGIC_VECTOR(7 DOWNTO 0);-0809的8位转换数据输出 CLK,EOC:IN STD_LOGIC;-CLK是转换工作时钟 ALE,START,OE:OUT STD_LOGIC;ADDA:O
12、UT STD_LOGIC_VECTOR(2 DOWNTO 0);Q:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);END ADCINT;ARCHITECTURE behav OF ADCINT ISTYPE states IS(st0,st1,st2,st3,st4,st5);-定义各状态子类型 SIGNAL current_state,next_state:states:=st0;BEGIN ADDA=“000”;PROCESS(CLK)-状态寄存器 BEGIN IF(CLKEVENT AND CLK=1)THEN current_state=next_state;-在时
13、钟上升沿,转换至下一状态 END IF;END PROCESS;-由信号current_state将当前状态值带出此进程,PRO:PROCESS(current_state,EOC)状态译码 BEGIN CASE current_state IS WHEN st0=next_state next_state next_state IF(EOC=1)THEN next_state IF(EOC=0)THEN next_state next_state next_state=st0;END CASE;END PROCESS PRO;,VHDL实现,PRO:PROCESS(current_state
14、)译码输出 BEGIN CASE current_state IS WHEN st0=ALE ALE ALE ALE ALE ALE ALE=0;START=0;OE=0;END CASE;END PROCESS PRO;,VHDL实现,PRO:PROCESS(current_state,EOC)状态译码译码输出 BEGIN CASE current_state IS WHEN st0=ALE ALE ALE ALE ALE ALE ALE=0;START=0;OE=0;next_state=st0;END CASE;END PROCESS PRO;,VHDL实现:把状态译码和译码输出写在一个
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 有限状态机 教学 PPT

链接地址:https://www.31ppt.com/p-2971796.html