电子设计自动化第五章 状态机_第1页
电子设计自动化第五章 状态机_第2页
电子设计自动化第五章 状态机_第3页
电子设计自动化第五章 状态机_第4页
电子设计自动化第五章 状态机_第5页
已阅读5页,还剩75页未读 继续免费阅读

下载本文档

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

文档简介

1、第五章 有限状态机设计第一节 一般状态机的设计一、一、1、数据类型定义语句数据类型定义语句 子类型子类型SUBTYPE的语句格式如下:的语句格式如下:SUBTYPE SUBTYPE 子类型名子类型名 IS IS 基本数据类型基本数据类型 RANGE RANGE 约约束范围束范围; ;SUBTYPE digits IS INTEGER RANGE 0 to 9 ;SUBTYPE digits IS INTEGER RANGE 0 to 9 ;2、枚举类型枚举类型 枚举类型是用文字符号来表示一组实际枚举类型是用文字符号来表示一组实际的二进制数。的二进制数。TYPE m_state IS (s0,s

2、1,s2,s3); SIGNAL current_state, next_state: m_state ; 二、二、有限状态机的优越性有限状态机的优越性 有限状态机克服了纯硬件数字系统顺序方式控制不有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。灵活的缺点。 状态机的结构模式相对简单。状态机的结构模式相对简单。 状态机容易构成性能良好的同步时序逻辑模块。状态机容易构成性能良好的同步时序逻辑模块。 状态机的状态机的VHDLVHDL表述丰富多样。表述丰富多样。 在高速运算和控制方面,状态机更有其巨大的优势。在高速运算和控制方面,状态机更有其巨大的优势。 就可靠性而言,状态机的优势也是十分明

3、显的。就可靠性而言,状态机的优势也是十分明显的。三、一般状态机的设计 最常用的状态机通常包含最常用的状态机通常包含说明部分说明部分、主主控时序进程控时序进程、主控组合进程主控组合进程、辅助进程辅助进程几部分。几部分。(1)说明部分说明部分完成对新数据类型(状态类型,即状态完成对新数据类型(状态类型,即状态名)和状态变量的定义名)和状态变量的定义TYPE STATE IS (IDLE,DECISION,READ,WRITE)-枚举状态类型枚举状态类型SIGNAL PRESENT_STATE,NEXT_STATE:STATE ;-定义信号定义信号(2)主控时序进程主控时序进程 完成当前状态向下一个

4、的跃迁,但不完成当前状态向下一个的跃迁,但不负责进入下一状态的具体状态取值,只负责进入下一状态的具体状态取值,只是在时钟沿到来时,当前状态进入下一是在时钟沿到来时,当前状态进入下一个状态。个状态。 在这一部分也可完成在这一部分也可完成同步同步或或异步清零异步清零或或置位置位方面的控制信号。方面的控制信号。(3)主控组合进程主控组合进程根据根据外部输入的控制信号外部输入的控制信号(包括来自(包括来自状态机的外部信号和来自状态机内部其状态机的外部信号和来自状态机内部其它非主控的组合或时序进程的信号)、它非主控的组合或时序进程的信号)、或(和)或(和)当前状态的状态值当前状态的状态值确定下一状确定下

5、一状态的取向,以及确定对外输出或对内部态的取向,以及确定对外输出或对内部其它组合或时序进程输出控制信号的内其它组合或时序进程输出控制信号的内容。容。comb_outputsstate_inputsresetclkFSM: s_machineCOMnext_statecurrent_statePROCESSREGPROCESS(4)辅助进程辅助进程:用于配合状态机工作的:用于配合状态机工作的其他组合进程和时序进程。其他组合进程和时序进程。状态机的建立过程一、一、利用可枚举的状态类型定义信号利用可枚举的状态类型定义信号TYPE STATE IS (IDLE,DECISION,READ,WRITE)

6、-枚举状态类型枚举状态类型SIGNAL PRESENT_STATE,NEXT_STATE:STATE TYPE-定义信号定义信号二、建立状态机的主控时序进程和主控组合进程 主控时序进程完成主控时序进程完成进程的跃迁进程的跃迁,主控组合,主控组合进程定义状态的进程定义状态的转移方向和输出转移方向和输出。由于次态是。由于次态是现态及输入信号的函数,所以现态及输入信号的函数,所以状态状态均为进程的均为进程的敏感信号。敏感信号。STATE_COMB: PROCESS (PRESENT_STATE,READ,WRITE,IDLE)BEGINEND PROCESS STATE_COMB;三、在主控组合进程

7、中定义状态的转移 在进程中插入在进程中插入CASE WHEN 语句,语句,因为因为空闲语句空闲语句是状态的起点和终点,因是状态的起点和终点,因此,作为此,作为WHEN 之后的第一项,再列出之后的第一项,再列出状态转移到其他状态的条件,即可写出状态转移到其他状态的条件,即可写出状态转移的流程。状态转移的流程。第二节 Moore型有限状态机的设计型有限状态机的设计 从状态机的信号输出方式分:从状态机的信号输出方式分:Moore型型和和Mealy型型两类状态机。从输出时序上看,前者属于两类状态机。从输出时序上看,前者属于同步输出同步输出状态机,后者属于状态机,后者属于异步输出异步输出状态机。状态机。

8、 Mealy型状态机的输出是型状态机的输出是当前状态当前状态和和所有输入信号所有输入信号的的函数,它的输出是在输入变化后立即发生的,不依函数,它的输出是在输入变化后立即发生的,不依赖时钟的同步。赖时钟的同步。Moore型状态机的输出型状态机的输出仅为当前状态仅为当前状态的函数,这类的函数,这类状态机在输入发生变化后还必须等待时钟的到来,状态机在输入发生变化后还必须等待时钟的到来,时钟使状态发生变化时才导致输出的变化所以比时钟使状态发生变化时才导致输出的变化所以比Mealy型状态机要多等待一个时钟周期。型状态机要多等待一个时钟周期。一、一、三进程有限状态机三进程有限状态机以以A/DA/D采样控制

9、器的设计为例采样控制器的设计为例1、应用状态机设计控制器方法简述、应用状态机设计控制器方法简述(1)分析控制器设计指标,建立系统算法模型)分析控制器设计指标,建立系统算法模型图;图;(2)分析被控对象的时序状态,确定控制器有)分析被控对象的时序状态,确定控制器有限状态机的各个状态,及输入限状态机的各个状态,及输入/输出条件;输出条件;(3)应用)应用VHDL语言完成描述。语言完成描述。2、 AD0809采样控制器的设计采样控制器的设计 ADC0809为单极性输入,为单极性输入,8位转换逐次逼近位转换逐次逼近A/D转换器,可转换器,可对对05V的的INT0INT7的的8路模拟信号分时进行转换,完

10、成路模拟信号分时进行转换,完成一次转换的时间约为一次转换的时间约为100微秒。微秒。 其中其中D7D0为为A/D变换数据输出;变换数据输出;ADD-CBA为为8路通道选路通道选择地址;择地址;START信号是转换启动信号,上升沿有效;信号是转换启动信号,上升沿有效;EOC为为状态结束标志,低电平转为高电平时转换结束;状态结束标志,低电平转为高电平时转换结束;OE为数据输为数据输出允许信号,高电平有效;出允许信号,高电平有效; ALE为地址锁存允许信号;为地址锁存允许信号;LOCK为数据锁存信号。为数据锁存信号。 在转换开始前,在转换开始前,ADC0809需要在需要在ALE上升沿控制下,将上升沿

11、控制下,将3位位8路通道选择地址锁入锁存器,以确定转换信号通道;然后在路通道选择地址锁入锁存器,以确定转换信号通道;然后在时钟的下降沿产生时钟的下降沿产生START信号启动转换,这时信号启动转换,这时ADC0809的的EOC信号由高电平转为低电平,开始数据转换,直到信号由高电平转为低电平,开始数据转换,直到EOC信信号低电平转为高电平时转换结束;之后使能号低电平转为高电平时转换结束;之后使能OE信号,使转换信号,使转换数据输出。数据输出。 系统级的设计是控制器设计的步骤系统级的设计是控制器设计的步骤:第一步,第一步,是将控制器指标规范用自然语言描述,并将是将控制器指标规范用自然语言描述,并将其

12、语言描述转换为真值表、状态图或算法模型的过其语言描述转换为真值表、状态图或算法模型的过程。程。 对于对于VHDL语言来说,系统级的设计就是用一语言来说,系统级的设计就是用一系列相互关联的进程组成硬件算法模型,即将描述系列相互关联的进程组成硬件算法模型,即将描述系统功能的自然语言翻译为进程,每个进程完成不系统功能的自然语言翻译为进程,每个进程完成不同的功能,并通过进程模型图来表示。同的功能,并通过进程模型图来表示。 在在ADC0809控制器的设计中,可以将其划分为控制器的设计中,可以将其划分为三个进程,即三个进程,即状态生成进程状态生成进程、状态转换进程状态转换进程、状态状态机输出进程机输出进程

13、。三部分关系见图。三部分关系见图1所示。所示。二、状态划分 在进行控制部分状态机的设计过程在进行控制部分状态机的设计过程中,主要是分析中,主要是分析ADC0809的时序来确定的时序来确定状态转换进程中的各个状态,几个状态状态转换进程中的各个状态,几个状态下的控制信号输出。下的控制信号输出。 根据以上设计思想和根据以上设计思想和VHDL语言的特点,语言的特点,控制器的状态生成进程以控制器的状态生成进程以时钟信号时钟信号为敏感量,为敏感量,当时钟发生有效跳变时,状态机的状态发生当时钟发生有效跳变时,状态机的状态发生变化,即产生下一状态。而状态转换进程采变化,即产生下一状态。而状态转换进程采用用组合

14、逻辑进程组合逻辑进程,使用,使用CASE语句语句检查状态机检查状态机的当前状态,然后使用的当前状态,然后使用IF-THEN-ELSE语句语句决定下一状态。这种描述风格产生结构化的决定下一状态。这种描述风格产生结构化的VHDL代码,并且可读性好。代码,并且可读性好。ADC08090809将将0-5V输入输入模拟电压通过模拟电压通过FPGA中的状态机中的状态机转换输出为转换输出为16进进制数:制数:“9D”旋转此电位器旋转此电位器可改变可改变0809的的输出输出注意转换输出注意转换输出已改变为:已改变为:7C3、单进程单进程Moore型有限状态机型有限状态机 由于输出信号由组合进程发出,在由于输出

15、信号由组合进程发出,在特定情况下,难免出现特定情况下,难免出现毛刺现象毛刺现象,所以,所以利用利用单进程单进程Moore状态机来避免产生毛状态机来避免产生毛刺。刺。第三节第三节 Mealy型有限状态机的设计型有限状态机的设计【例【例8-6】 MEALY2 LIBRARY IEEE; -MEALY FSMUSE 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 b

16、ehav 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 D

17、ATAIN = 1 THEN STX STX = st0; END CASE ; 接下页接下页IF CLKEVENT AND CLK = 1 THEN Q1=Q2; END IF; END PROCESS COM1 ; Q 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:=1001

18、1 ; 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 ; 接下页接下页由由CPLD/FPGA中中的状态机来控制的状态机来控制AD574的采样操作的采样操作RAM在此适配在此适配板下面板下面高速晶振高速晶振单片机单片机适配板下的AD574ARCSTATUSD11.0AD574启动时序

19、20usZ/CS图图7-3 AD574工作时序工作时序 图图7-4 AD574工作时序工作时序图图7-5 采样状态机结构框图采样状态机结构框图【例【例】LIBRARY IEEE; USE IEEE.STD_LOGIC_1164.ALL; ENTITY AD574 IS PORT (D :IN STD_LOGIC_VECTOR(11 DOWNTO 0); CLK ,STATUS : IN STD_LOGIC;-状态机时钟状态机时钟CLK,AD574状态信号状态信号STATUS LOCK0 : OUT STD_LOGIC; -内部锁存信号内部锁存信号LOCK的测试信号的测试信号 CS,A0,RC,

20、K12X8 : OUT STD_LOGIC; -AD574控制信号控制信号 Q : OUT STD_LOGIC_VECTOR(11 DOWNTO 0); -锁存数据输出锁存数据输出END AD574;ARCHITECTURE behav OF AD574 ISTYPE states IS (st0, st1, st2, st3,st4); SIGNAL current_state, next_state: states :=st0 ; SIGNAL REGL : STD_LOGIC_VECTOR(11 DOWNTO 0); SIGNAL LOCK : STD_LOGIC; BEGIN K12X

21、8 = 1; LOCK0 next_state next_state IF (STATUS=1) THEN next_state = st2; ELSE next_state next_state next_state next_state CS=1; A0=1;RC=1;LOCK CS=0; A0=0;RC=0;LOCK CS=0; A0=0;RC=0;LOCK CS=0; A0=0;RC=1;LOCK CS=0; A0=0;RC=1;LOCKCS=1; A0=1;RC=1;LOCK=0;-其它情况返回初始态其它情况返回初始态 接下页接下页接上页接上页END CASE ; END PROCES

温馨提示

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

评论

0/150

提交评论