第5讲-有限状态机_第1页
第5讲-有限状态机_第2页
第5讲-有限状态机_第3页
第5讲-有限状态机_第4页
第5讲-有限状态机_第5页
已阅读5页,还剩42页未读 继续免费阅读

下载本文档

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

文档简介

1、有限状态机有限状态机Finite State MachineFinite State Machine例:计数器设计例:计数器设计 设计一电路,包含基设计一电路,包含基4计数器,和译码输出模块。计数器,和译码输出模块。计数器的输出计数器的输出(Present_value)从从0到到3循环;循环;当计数值为当计数值为2时,译码输出时,译码输出(DataOut)为为“1”,否则输出否则输出“0”。Regs1ClkPresent_valueQ(n)Next_valueQ(n+1) 译码译码DataOutZ(n)00/001/010/111/0Regs1ClkPresent_valueQ(n)Next_

2、valueQ(n+1) 译码译码DataOutZ(n)00/001/010/111/0扩展一个输入端扩展一个输入端din,当当din = 1时计数器递时计数器递增计数;当增计数;当din = 0时时计数器递减计数。计数器递减计数。dinDin=1Din = 1Din = 1Din = 1Din = 0Din = 0Din = 0Din = 0Regs/-1ClkPresent_valueQ(n)Next_valueQ(n+1) 译码译码DataOutZ(n)再将计数器修改成一再将计数器修改成一个状态转换器,状态个状态转换器,状态为为S0, S1, S2, S3。每个状态的取值根据每个状态的取值

3、根据具体情况而定。比如具体情况而定。比如S0 = 00, S1 = 11, S3 = 01, S4 = 10。din00/001/010/111/0Din=1Din = 1Din = 1Din = 1Din = 0Din = 0Din = 0Din = 0Regs/-1ClkPresent_valueQ(n)Next_valueQ(n+1) 译码译码DataOutZ(n)再将计数器修改成一再将计数器修改成一个状态转换器,状态个状态转换器,状态为为S0, S1, S2, S3。每个状态的取值根据每个状态的取值根据具体情况而定。比如具体情况而定。比如S0 = 00, S1 = 11, S3 = 0

4、1, S4 = 10。dinS0/0S1/0S2/1S3/0Din=1Din = 1Din = 1Din = 1Din = 0Din = 0Din = 0Din = 0Regs/-1ClkPresent_valueQ(n)Next_valueQ(n+1) 译码译码DataOutZ(n)现在我们得到了一个比较通用现在我们得到了一个比较通用的时序电路,这种电路统称为的时序电路,这种电路统称为状态机状态机(State Machine)。dinS0/0S1/0S2/1S3/0Din=1Din = 1Din = 1Din = 1Din = 0Din = 0Din = 0Din = 0Regs/-1Clk

5、Present_valueQ(n)Next_valueQ(n+1) 译码译码DataOutZ(n)有限状态机概述有限状态机概述数字系统控制部分的每一个控制态可以看数字系统控制部分的每一个控制态可以看作一种状态,与每一个控制态相关的转换作一种状态,与每一个控制态相关的转换条件指定了当前状态的下一个状态和输出。条件指定了当前状态的下一个状态和输出。根据有限状态机的输出与当前状态与当前根据有限状态机的输出与当前状态与当前输入的关系,可以分成输入的关系,可以分成Moore型和型和Mealy型两种类型的有限状态机。型两种类型的有限状态机。 Moore状态机和状态机和Mealy状态机状态机Moore状态机

6、的输出只与当前状态有关状态机的输出只与当前状态有关次态次态逻辑逻辑状状 态态寄存器寄存器输出输出逻辑逻辑输入输入次态次态现态现态输出输出时钟时钟复位复位Moore状态机和状态机和Mealy状态机状态机Mealy状态机的输出与当前状态机及状态机的输出与当前状态机及当前输入信号有关当前输入信号有关次态次态逻辑逻辑状状 态态寄存器寄存器输出输出逻辑逻辑输入输入次态次态现态现态输出输出时钟时钟复位复位状态机的表示方法状态机的表示方法状态转换表状态转换表算法流程图算法流程图状态转换图状态转换图这是最流行的这是最流行的表示方法表示方法状态转换图状态转换图状态状态1状态状态4状态状态2状态状态3入入/出出入

7、入/出出入入/出出入入/出出/出出Mealy条件控条件控制定序制定序直接控直接控制定序制定序用用VHDL描述状态机的组成描述状态机的组成一个用来描述有限状态机功能的一个用来描述有限状态机功能的VHDL语言程序中应该包含以下几个内容:语言程序中应该包含以下几个内容:(1)至少包括一个至少包括一个状态信号状态信号,它们用来指定有,它们用来指定有限状态机的状态;限状态机的状态;(2)状态转移状态转移指定和指定和输出指定输出指定,它们对应于控,它们对应于控制单元中与每个控制步有关的转移条件;制单元中与每个控制步有关的转移条件;(3)时钟信号,它一般是用来进行同步的;时钟信号,它一般是用来进行同步的;(

8、4)同步或异步复位信号。同步或异步复位信号。 状态机的状态机的VHDL描述方式描述方式(1)单进程描述方式:单进程描述方式就是指在单进程描述方式:单进程描述方式就是指在VHDL语言程序的结构体中,使用一个进程语句语言程序的结构体中,使用一个进程语句来描述有限状态机中的次态逻辑、状态寄存器和来描述有限状态机中的次态逻辑、状态寄存器和输出逻辑。输出逻辑。(2)双进程描述方式:一个进程语句用来描述有限双进程描述方式:一个进程语句用来描述有限状态机中次态逻辑、状态寄存器和输出逻辑中的状态机中次态逻辑、状态寄存器和输出逻辑中的任何两个;另外一个进程则用来描述有限状态机任何两个;另外一个进程则用来描述有限

9、状态机剩余的功能。剩余的功能。(3)三进程描述方式:一个进程用来描述有限状态三进程描述方式:一个进程用来描述有限状态机中的次态逻辑;一个进程用来描述有限状态机机中的次态逻辑;一个进程用来描述有限状态机中的状态寄存器;另外一个进程用来描述有限状中的状态寄存器;另外一个进程用来描述有限状态机中的输出逻辑。态机中的输出逻辑。状态机的状态机的VHDL描述方式描述方式描述方式描述方式进程描述功能进程描述功能三进程描述方式三进程描述方式进程进程1:描述次态逻辑:描述次态逻辑进程进程2:描述状态寄存器:描述状态寄存器进程进程3:描述输出逻辑:描述输出逻辑双进程描双进程描述方式述方式 形式形式1 进程进程1:

10、描述次态逻辑、状态寄存器:描述次态逻辑、状态寄存器进程进程2:描述输出逻辑:描述输出逻辑形式形式2 进程进程1:描述状态寄存器、输出逻辑:描述状态寄存器、输出逻辑进程进程2:描述次态逻辑:描述次态逻辑形式形式3 进程进程1:描述次态逻辑、输出逻辑:描述次态逻辑、输出逻辑进程进程2:描述状态寄存器:描述状态寄存器单进程描述方式单进程描述方式进程进程1:描述次态逻辑、状态寄存器和:描述次态逻辑、状态寄存器和输出逻辑输出逻辑存储控制器存储控制器idledecisionreadwritereadyread_writereadyreadyreadyreadyreadyread_write 设计一个存储控

11、制器,设计一个存储控制器,它的具体要求为它的具体要求为:(1)存存储控制器能够根据微处储控制器能够根据微处理器的读周期或者写周理器的读周期或者写周期,分别对存储器输出期,分别对存储器输出写使能信号写使能信号we和读使能和读使能信号信号oe;(2)存储控制存储控制器的输入信号有器的输入信号有3个个:微微处理器的准备就绪信号处理器的准备就绪信号ready、微处理器的读、微处理器的读写信号写信号read_write和和时钟信号时钟信号clk。 存储控制器存储控制器列出当前状态和输出值的关系列出当前状态和输出值的关系状态状态输出输出OEWEidle00decision00write01read10建立

12、状态转换表,列出次态和转换条件建立状态转换表,列出次态和转换条件当前状态当前状态次态次态转换条件转换条件idledecisionready=1decisionwritew_r=0readw_r=1writeidleready=1writeready=0readidleready=1readready=0利用利用VHDLVHDL语言进行状态机描述语言进行状态机描述所有状态均可以表达为所有状态均可以表达为CASE-WHENCASE-WHEN结构结构中的一条语句。中的一条语句。状态的转移通过状态的转移通过if-then-elseif-then-else语句实现。语句实现。CASE present_s

13、tate IS WHEN idle = 输出量;输出量; IF ELSE END IF;有些状态的转换中,在条件满足时,有些状态的转换中,在条件满足时,转换到下一个状态,否则保持原来的转换到下一个状态,否则保持原来的状态不变。状态不变。这种情况对应着这种情况对应着IF-THEN-ELSE的两个分支。的两个分支。在这种情况下,在这种情况下,ELSE分支并不是必需分支并不是必需的。但是缺少的。但是缺少ELSE分支,会导致额外分支,会导致额外的存储器。的存储器。状态转换状态转换状态描述的步骤:对每一个状态建立一项对每一个状态建立一项CASE语句的分支语句的分支 WHEN 状态名状态名 =确定输出变量

14、确定输出变量通过通过IF-THEN-ELSE语句指定相应的次语句指定相应的次态。态。例case present_state is - CASE分支分支when idle =oe=0;we=0; -确定输出变量确定输出变量if(ready = 1) then-确定次态确定次态next_state = decision;elsenext_state IF(ready = 1) THENnext_state = decision;ELSEnext_state = idle;END IF;END CASE;END PROCESS nextstate_logic; 例:三进程描述方式例:三进程描述方式2

15、 2state_register: PROCESS(clk)BEGIN IF(RISING_EDGE(clk) THEN present_state we = 0;oe we=0;oewe=0;oewe=1;oe=0; END CASE;END PROCESS output_logic; 任务任务1 1:空调控制器:空调控制器S1S2S3thigh=0tlow=0thigh=0tlow=1thigh=1tlow=0thigh=0tlow=1thigh=0tlow=0thigh=1tlow=0hot=0cool=0hot=0cool=1hot=1cool=0空调控制器状态转换图空调控制器状态转换

16、图任务任务1 1:空调控制器:空调控制器S1S1:表示温度适中,不高也不低,对应着输入信号thigh和tlow均为低电平(无效),空调器既不制冷也不制热,因此输出控制信号hot和cool都是低电平。S2S2:表示温度太低,对应着输入信号tlow为高电平,thigh为低电平,此时空调器应该工作在制热状态,相应的输出控制信号hot为高电平,cool无效。S3S3:表示温度太高,对应着输入信号thigh为高电平,tlow为低电平,此时空调器应该工作在制冷状态,相应的输出控制信号cool为高电平,hot无效。任务任务1 1:空调控制器:空调控制器状态转换表状态转换表当前当前状态状态转换条件转换条件下一

17、下一状态状态执行操作执行操作输出值输出值S1thigh=0&tlow=1thigh=1&tlow=0S2S3制热制热制冷制冷hot=1/cool=0hot=0/cool=1S2thigh=0&tlow=0thigh=1&tlow=0S1S3既不制冷也不制热既不制冷也不制热制冷制冷hot=0/cool=0hot=0/cool=1S3thigh=0&tlow=0thigh=0&tlow=1S1S2既不制冷也不制热既不制冷也不制热制热制热hot=0/cool=0hot=1/cool=0选做:状态机的应用设计选做:状态机的应用设计例子:设计一个二进制序列检测器,当检测到例子:设计一个二进制序列检测器,

18、当检测到10110序列时,就输出序列时,就输出1(一个时钟周期的脉冲一个时钟周期的脉冲)。其他情况下输出其他情况下输出0。 规定检测到一次之后,检测器复位到最初始的状规定检测到一次之后,检测器复位到最初始的状态,重新从头检测。如下所示:态,重新从头检测。如下所示:输入:输入:01101101101100输出:输出:00000001000001状态转换图设计(状态转换图设计(MooreMoore)10110S0/0S1/0S2/0S3/0S4/0S5/1Reset1100110100101011 0s1 s2s3s4 s5s0问题问题1:如何保证:如何保证状态机在初始时状状态机在初始时状态为态为

19、s0?问题问题2:在状态机:在状态机跑飞,即脱离有效跑飞,即脱离有效状态状态(s0s5)时,时,如何使状态机能恢如何使状态机能恢复工作复工作Sx/0波形波形波形如下图波形如下图所示所示问题:如果需要问题:如果需要将输出脉冲往前将输出脉冲往前推一个时钟周期,推一个时钟周期,该如何修改设计?该如何修改设计?101101011 0s1 s2s3s4 s5s0输入输入时钟时钟输出输出当前状态当前状态 发现当前状态发现当前状态为为s4,并且输入并且输入为为0时时,输出为,输出为1。状态转换图设计状态转换图设计(Mealy)(Mealy)S0S1S2S3S4S5Reset100110100101sX/0/

20、0/0/0/0/0/0/0/0/1/0/0101101011 0s1 s2s3s4 s5s0/00/1s0状态机的代码实现状态机的代码实现 状态定义状态定义Architecture rtl of Syn isArchitecture rtl of Syn is - - 其他信号定义。其他信号定义。Type SynFsmState is ( s0, s1, s2, s3, s4, s5);Type SynFsmState is ( s0, s1, s2, s3, s4, s5);Signal SynCst, SynNst : SynFsmState;Signal SynCst, SynNst :

21、 SynFsmState;Begin Begin - - 结构体。结构体。End rtl;End rtl;状态机的代码实现状态机的代码实现状态寄存器进程描述状态寄存器进程描述状态寄存器输出译码下一状态译码当前状当前状态态输出输出下一状态下一状态输入输入时钟时钟clkclk状态寄存器进程描述状态寄存器进程描述Process( clk, Reset )Begin if( Reset = 1 ) then SynCst = S0; - 初始状态。初始状态。 elsif( clkevent and clk = 1 ) then SynCst when s1 = when s5 = End case;E

22、nd process; if( din = 1 ) then SynNst = s1; else SynNst SynNst when s1 = when s5 = when others = End case;End process;MooreMealyDout = 0;Dout = 0;Dout = 0if( din = 1 ) then else end if;, din )任务任务2 2:交通灯控制器:交通灯控制器模拟显示十字路口两个方向的交通通模拟显示十字路口两个方向的交通通行情况。两个方向均用红、黄、绿灯行情况。两个方向均用红、黄、绿灯指示实际状态。指示实际状态。 用用LEDLED同时显示两个方向状态的时间。同时显示两个方向状态的时间。时间计数方式为倒计数方式。技术参时间计数方式为倒计数方式。技术参数为绿数为绿( (红红)50)50秒、黄秒、黄( (红红)5)5秒、红秒、红( (绿绿)30)30秒和红秒和红( (黄黄)5)5秒。秒。方法:有限状态机方法:有限状态机当前状态当前状态下一状态下一状态东西灯东西灯南北灯南北灯S1S1S2S2G GR RS2S2S3S3Y YR RS3S3S4S4R RG

温馨提示

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

评论

0/150

提交评论