3.10状态机.ppt
《3.10状态机.ppt》由会员分享,可在线阅读,更多相关《3.10状态机.ppt(58页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。
1、3.10 状态机的状态机的VHDL设计设计3.10.1 状态机的基本结构和功能状态机的基本结构和功能 状态机是一类很重要的时序电路,是许多数字电路的核心部件。状态机的一般形式如图3.30所示。除了输入信号、输出信号外,状态机还包括一组寄存器记忆状态机的内部状态。状态机寄存器的下一个状态及输出,不仅同输入信号有关,而且还与寄存器的当前状态有关,状态机可认为是组合逻辑和寄存器逻辑的特殊组合。它包括两个主要部分:组合逻辑部分和寄存器部分。寄存器部分用于存储状态机的内部状态;组合逻辑部分又分为状态状态译码器和输出译码器译码器和输出译码器,状态译码器确定状态机的下一个状态,即确定状态机的激励方程激励方程
2、,输出译码器确定状态机的输出,即确定状态机的输出方程输出方程。图3.30 状态机的结构示意图 状态机的基本操作有两种:(1)状态机内部状态转换。状态机经历一系列状态,下一状态由状态译码器根据当前状态和输入条件决定。(2)产生输出信号序列。输出信号由输出译码器根据当前状态和输入条件决定。用输入信号决定下一状态也称为“转移”。除了转移之外,复杂的状态机还具有重复和历程功能。从一个状态转移到另一个状态称为控制定序,而决定下一状态所需的逻辑称为转移函数。在产生输出的过程中,由是否使用输入信号可以确定状态机的类型。两种典型的状态机是摩尔(MOORE)状态机和米立(MEALY)状态机。在摩尔状态机摩尔状态
3、机中,其输出只是当前状态值的函数,并且仅在时钟边沿到来时才发生变化。米立状态机米立状态机的输出则是当前状态值、当前输出值和当前输入值的函数。对于这两类状态机,控制定序都取决于当前状态和输入信号。大多数实用的状态机都是同步的时序电路,由时钟信号触发状态的转换。时钟信号同所有的的边沿触发的状态寄存器和输出寄存器相连,这使得状态的改变发生在时钟的上升沿。此外,还利用组合逻辑的传播延迟实现状态机存储功能的异步状态机,这样的状态机难于设计并且容易发生故障,所以下面仅讨论同步时序状态机。3.10.2 一般状态机的一般状态机的VHDL设计设计 为了能获得可综合的,高效的VHDL状态机描述,建议使用枚举类数据
4、类型来定义状态机的状态,并使用多进程方式来描述状态机的内部逻辑。例如可使用两个进程来描述,一个进程描述时序逻辑,包括状态寄存器的工作和寄存器状态的输出;另一个进程描述组合逻辑,包括进程间状态值的传递逻辑以及状态转换值的输出。必要时还可引入第三个进程完成其他的逻辑功能。【例例3.10.1】一般状态机的VHDL设计模型。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_OUTPUT
5、S:OUT STD_LOGIC_VECTOR(0 TO 1);END S_MACHINE;ARCHITECTURE ART OF S_MACHINE IS TYPE STATES IS(ST0,ST1,ST2,ST3);-定义STATES为枚举型数据类型 SIGNAL CURRENT_STATE,NEXT_STATE:STATES;BEGIN REG:PROCESS(RESET,CLK)-时序逻辑进程 BEGIN IF RESET=1THEN CURRENT_STATE=ST0;-异步复位 ELSIF(CLK=1 AND CLKEVENT)THEN CURRENT_STATECOMB_OUTP
6、UTS=“00”;-初始态译码输出“00”IF STARE_INPUTS=“00”THEN -根据外部的状态控制输入“00”NEXT_STATE=ST0;-在下一时钟后,进程REG的状态将维持为ST0 ELSE NEXT_STATECOMB_OUTPUTS=“01”;-对应ST1的译码输出“01”IF START_INPUTS=“00”THEN -根据外部的状态控制输入“00”NEXT_STATE=ST1;-在下一时钟后,进程REG的状态将维持为 ST1 ELSE NEXT_STATECOMB_OUTPUTS=“10”;-以下依次类推 IF STATE_INPUTS=“11”THEN NEXT
7、_STATE=ST2;ELSE NEXT_STATECOMB_OUTPUTS=“11”;IF STATE_INPUTS=“11”THEN NEXT_STATE=ST3;ELSE NEXT_STATE=ST0;-否则,在下一时钟后,进程REG的状态将为ST0 END IF;END CASE;END PROCESS;-由信号NEXT_STATE将下一状态值带出此进程,进入进程REGEND ART;进程间一般是并行运行的,但由于敏感信号的设置不同以及电路的延迟,在时序上进程间的动作是有先后的。本例中,进程“REG”在时钟上升沿到来时,将首先运行,完成状态转换的赋值操作。如果外部控制信号STATE_I
8、NPUTS不变,只有当来自进程REG的信号CURRENT_STATE改变时,进程COM才开始动作。在此进程中,将根据CURRENT_STATE的值和外部的控制码STATE_INPUTS来决定下一时钟边沿到来后,进程REG的状态转换方向。这个状态机的两位组合输出COMB_OUTPUTS是对当前状态的译码,读者可以通过这个输出值了解状态机内部的运行情况;同时可以利用外部控制信号STATE_INPUTS任意改变状态机的状态变化模式。在设计中,如果希望输出的信号具有寄存器锁存功能,则需要为此输出写第3个进程,并把CLK和RESET信号放到敏感信号表中。本例中,用于进程间信息传递的信号CURRENT_S
9、TATE和 NEXT_STATE,在状态机设计中称为反馈信号。状态机运行中,信号传递的反馈机制的作用是实现当前状态的存储和下一个状态的译码设定等功能。在VHDL中可以有两种方式来创建反馈机制。即使用信号的方式和使用变量的方式,通常倾向于使用信号的方式。一般地,先在进程中使用变量传递数据,然后使用信号将数据带出进程。3.10.3 摩尔状态机的摩尔状态机的VHDL设计设计【例例3.10.2】摩尔状态机的VHDL设计模型之一。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SYSTEM1 IS PORT(CLOCK:IN STD_LOGIC;A:IN
10、STD_LOGIC;D:OUT STD_LOGIC);END SYSTEM1;ARCHITECTURE MOORE1 OF SYSTEM1 IS SIGNAL B,C:STD_LOGIC;BEGINFUNC1:PROCESS(A,C)-第1组合逻辑进程,为时序逻辑进程提供的反馈信息BEGIN B=FUNC1(A,C);-C是反馈信号END PROCESS;FUNC2:PROCESS(C)-第2组合逻辑进程,为状态机输出提供数据BEGIN D=FUNC2(C);-输出信号D所对应的FUNC2,是仅为当前状态的函数END PROCESS;REG:PROCESS(CLOCK)-时序逻辑进程,负责状态
11、的转换BEGIN IF(CLOCK=1AND CLOCKEVENT)THEN C=B;-B 是反馈信号 END IF;END PROCESS;END MOORE1;图3.31 例3.10.2的摩尔状态机示意图【例例3.10.3】摩尔状态机的摩尔状态机的VHDL设计模型之二。设计模型之二。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY SYSTEM2 IS PORT(CLOCK:IN STD_LOGIC;A:IN STD_LOGIC;D:OUT STD_LOGIC);END SYSTEM2;ARCHITECTURE MOORE2 OF SYSTEM
12、2 IS BEGIN REG:PROCESS(CLOCK)BEGIN IF(CLOCK=1 AND CLOCKEVENT)THEN D=FUNC(A,D);END IF;END PROCESS;END MOORE2;图3.32 例3.10.3的直接反馈式摩尔状态机示意图 【例3.10.4】基于状态机的ADC0809与SRAM6264的通信控制器的设计。图3.33是该控制器ADTOSRAM与ADC0809及SRAM6264接口示意图。图图3.33 ADTOSRAM与与ADC0809及及SRAM6264接口示意图接口示意图-VHDL源程序ADTOSRAM.VHDLIBRARY IEEE;USE I
13、EEE.STD_LOGIC_1164.ALL;USE IEEE.STD_LOGIC_UNSIGNED.ALL;ENTITY ADTOSRAM IS PORT(-ADC0809接口信号 DIN:IN STD_LOGIC_VECTOR(7 DOWNTO 0);-0809转换数据输入口 CLK,EOC:IN STD_LOGIC;-CLK:状态机工作时钟;EOC:转换结束状态信号 RST:IN STD_LOGIC;-系统复位信号 ALE:OUT STD_LOGIC;-0809采样通道选择地址锁存信号 START:OUT STD_LOGIC;-0809采样启动信号,上升沿有效 OE:OUT STD_LO
14、GIC;-转换数据输出使能,接0809的ENABLE(PIN 9)ADDA:OUT STD_LOCIC;-0809采样通道地址最低位-SRAM 6264接口信号 CS:OUT STD_LOGIC;-6264片选控制信号,低电平有效 RD,WR:OUT STD_LOGIC;-6264读/写控制信号,低电平有效 RAM_DIN:OUT STD_LOGIC_VECTOR(7 DOWNTO 0);-6264数据写入端口 ADDRESS:OUT STD_LOGIC_VECTOR(12 DOWNTO 0);-地址输出端口END ADTOSRAM;ARCHITECTURE ART OF ADTOSRAM I
15、STYPE AD_STATES IS(ST0,ST1,ST2,ST3,ST4,ST5,ST6,ST7)-A/D转换状态定义TYPE WRIT_STATES IS(START_WRITE,WRITE1,WRITE2,WRITE3,WRITE_END);SRAM数据写入控制状态定义SIGNAL RAM_CURRENT_STATE,RAM_NEXT_STATE:WRIT_STATES;SIGNAL ADC_CURRENT_STATE,ADC_NEXT_STATE:AD_STATES;SIGNAL ADC_END:STD_LOGIC;-0809数据转换结束并锁存标志位,高电平有效SIGNAL LOCK
16、:STD_LOGIC;-转换后数据输出锁存信号SIGNAL ENABLE:STD_LOGIC;-A/D转换允许信号,高电平有效SIGNAL ADDRES_PLUS:STD_LOGIC;-SRAM地址加1时钟信号SIGNAL ADC_DATA:STD_LOGIC_VECTOR(7 DOWNTO 0);-转换数据读入锁存器 SIGNAL ADDRES_CNT:STD_LOGIC_VECTOR(12 DOWNTO 0);-SRAM地址锁存器BEGIN ADDA=1;-ADDA=1,ADDB=0,ADDC=0选A/D采样通道为IN-1 RD=1;-SRAM写禁止 -ADC0809采样控制状态机 ADC
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 3.10 状态机
限制150内