




免费预览已结束,剩余93页可下载查看
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
eda技术实用教程,第7章 vhdl有限状态机设计,第7章 有限状态机设计 教学内容:,7.1 vhdl状态机的一般形式 7.2 moore型有限状态机的设计 7.3 mealy型有限状态机的设计 7.4 状态机图形编辑设计方法 7.5 状态编码 7.6 安全状态机设计 7.7 硬件数字技术排除毛刺,教学要求:,学习和掌握用vhdl设计不同类型的有限状态机的方法; 了解eda工具和设计中关注的问题:综合器优化、毛刺信号的克服、控制速度、状态编码方式等。,状态机(state machine),状态机是一类很重要的时序电路,是很多数字电路的核心部件,是大型电子设计的基础。 状态机相当于一个控制器,它将一项功能的完成分解为若干步,每一步对应于二进制的一个状态,通过预先设计的顺序在各状态之间进行转换,状态转换的过程就是实现逻辑功能的过程。,状态机图是指用图形的方式来表示一个设计实体的各种工作状态、内部各工作状态转换的条件以及各工作状态对应的输出信号序列。,有限状态机 fsm-finite state machine,有限状态机是由寄存器组和组合逻辑构成的硬件时序电路,其状态(即由寄存器组的1和0的组合状态所构成的有限个状态)只可能在同一时钟跳变沿的情况下才能从一个状态转向另一个状态,究竟转向哪一状态还是留在原状态不但取决于各个输入值,还取决于当前所在状态。这里指的是米里(mealy)型有限状态机,而摩尔(moore)型有限状态机究竟转向哪一状态只决于当前状态。 对应: mealy(输出不但取决于各个输入值,还取决于当前所在状态) -时序逻辑电路(不仅与输入有关还和当前状态有关) moore(输出只取决于当前状态) -组合逻辑电路(只与输入有关),比较:,传统的设计方法是首先绘制出控制器的状态图,并由此列出状态表,再合并消除状态表中的等价状态项。在完成状态寄存器的分配之后,根据状态表求出次态及输出方程,最后画出设计原理图。采用这种方法设计复杂状态机将会十分繁杂。 利用vhdl设计状态机,不需要进行繁琐的状态分配、绘制状态表和化简次态方程。设计者不必使用卡诺图进行逻辑化简,不必画电路原理图,也不必搭试硬件电路进行逻辑功能的测试,所有这些工作都可以通过eda工具自动完成。 应用vhdl设计状态机的具体步骤如下: (1)根据系统要求确定状态数量、状态转移的条件和各状态输出信号的赋值,并画出状态转移图(状态机图); (2)按照状态转移图编写状态机的vhdl设计程序;所有的状态均可表达为case_when结构中的一条case语句,而状态的转移则通过if_then_else语句实现。 (3)利用eda工具对状态机的功能进行仿真验证。,7.1 vhdl状态机的一般形式 7.1.1 为什么要使用状态机,(1)高效的顺序控制模型。 (2)容易利用现成的eda优化工具。 (3)性能稳定。 (4)设计实现效率高。 (5)高速性能。 (6)高可靠性能。,7.1.2 一般有限状态机的设计,有限状态机分类: 从信号的输入与输出方式分:mealy型和moore型有限状态机 从结构分:单进程状态机和多进程状态机 从状态表达方式分:有符号状态机和确定编码状态机 从编码方式分:顺序编码状态机、一位热码编码状态机 或其它编码状态机,有限状态机的结构: 说明部分、主控时序进程、主控组合进程、辅助进程,*说明部分在architecture与begin之间; * 定义枚举型数据类型: 用于描述状态 *状态变量定义为信号:便于信息传输,状态变量数据类型定义为含有既定状态元素的新定义的数据类型,architecture .is type fsm_st is (s0,s1,s2,s3); signal current_state, next_state: fsm_st; . begin,1.说明部分,负责状态机运转和在时钟驱动下负责状态转换的进程作为状态机的“驱动泵”。 功能1:状态机随外部时钟信号以同步方式工作,当时钟的有效跳变到来时,时序进程将代表次态的信号next_state中的内容送入现态信号current_state中,而next_state中的内容完全由其他进程根据实际情况而定。 功能2:此进程中包括一些清零或置位的控制信号。,图7-1 一般状态机结构框图工作示意图,2. 主控时序进程,主控组合进程的任务是根据外部输入的控制信号(包括来自状态机外部的信号和来自状态机内部其它非主控的组合或时序进程的信号),或(和)当前状态的状态值确定下一状态(next_state)的取向,即next_state的取值内容,以及确定对外输出或对内部其它组合或时序进程输出控制信号的内容。-译码过程,3. 主控组合进程,图7-1 一般状态机结构框图工作示意图,用于配合状态机工作的组合进程或时序进程 例如: 完成某种算法的进程; 配合状态机工作的其他时序进程; 稳定输出设置的数据锁存器等。,4. 辅助进程,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);-定义fsm_st为枚举型数据类型(符号化状态机) 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 = next_state; -当检测到时钟上升沿时转换至下一状态 end if; end process; -由current_state将当前状态值带出此进程,进入进程com,接下页,【例7-1】 2进程 moore型,com:process (current_state, state_inputs) -主控组合进程 begin case current_state is -确定当前状态的状态值 when s0 = comb_outputs comb_outputs comb_outputs comb_outputs = 14; if state_inputs = “11“ then next_state = s3; else next_state = s0; end if; end case; end process; -由信号next_state将下一状态值带出此进程,进入进程reg end behv;,接上页,进程间一般是并行运行的,但由于敏感信号的设置不同以及电路的延迟,在时序上进程间的动作是有先后的。,注意:状态变量的状态判断必须用case语句,不能用if语句,图7-2 例7-1状态机的工作时序图,clk=2 reset=1 next_state= s0 -reg current_state =s0comb_outputs= 5 -com state_inputs = “ 01” next_state= s1 -com clk=3 next_state= s1 current_state -reg current_state =s1comb_outputs= 8 -com state_inputs = “ 10” next_state= s2 -com clk=4 next_state= s2 current_state -reg current_state =s2comb_outputs=12 -com state_inputs = “10” next_state= s3 -com,2,4,3,7.1.3 状态机设计初始控制与表述,(1)打开“状态机萃取”开关,(2)状态图观察,7.2 moore型有限状态机的设计,按状态机的信号输出方式分类: moore(摩尔)型和mealy(米里)型 moore型:异步输出状态机当时钟到来时,输出仅为当前状态的函数。moore型最大的优点就是可以将输入部分与输出部分隔离开 。 mealy型: 同步输出状态机输出当前状态和所有输入信号函数,输出是在输入变化后立即发生。不依赖时钟的同步。,moore型状态机框图,mealy状态机的框图,7.2.1 adc采样控制设计及多进程结构状态机,在一般状态机的设计过程中,为了能获得可综合的,高效的vhdl状态机描述,建议使用枚举类数据类型来定义状态机的状态,并使用多进程方式来描述状态机的内部逻辑。 例如可使用两个进程来描述,个进程描述时序逻辑,包括状态寄存器的工作和寄存器状态的输出,另一个进程描述组合逻辑,包括进程间状态值的传递逻辑以及状态转换值的输出。必要时还可以引入第三个进程完成其它的逻辑功能。,进程描述方式:,两进程描述的第三种和单进程描述方式最为常用,因为将组合逻辑和时序逻辑清楚区分,故综合效果较好,ad采样控制器-ad574启动时序,d110,图7-3 adc0809工作时序,ad采样控制器-adc0809设计,输入选通端口地址锁存信号,转换启动控制信号,状态转换信号,输出控制信号,图7-5 采样状态机结构框图,进程 : 状态机由两个主控进程构成,其中进程reg为主控时序进程,com为主控组合进程。辅助进程latch,【例7-2】描述的状态机由辅助进程latch和两个主控进程构成,其中进程reg为主控时序进程,com为主控组合进程。 library ieee; library ieee; use ieee.std_logic_1164.all; entity adcint is port (d : in std_logic_vector(7 downto 0); clk ,eoc : in std_logic; ale, start, oe, adda,lock0 : out std_logic; q : out std_logic_vector(7 downto 0); 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,模拟信号进入0809通道0;当adda=1,则进入通道1 q = regl; lock0 = lock ; 接下页,com: process(current_state,eoc) begin -规定各状态转换方式 case current_state is when st0=aleale ale ale ale next_state = st0; end case ; end process com ; 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) -st4进入进程中,在lock的上升沿,将转换好的数据锁入 begin if lock=1 and lockevent then regl = d ; end if; end process latch1 ; end behav;,【例7-3】-将例7-2主控组合进程com 分为两个组合进程com1(状态转换)、com 2(状态译码) com1: process(current_state,eoc) -状态转换 begin case current_state is when st0= next_state next_state if (eoc=1) then next_state next_state next_state next_state alealealealeale ale=0;start=0;lock=0; end case ; end process com2 ;,7.2.2 序列检测器之状态机设计,接下页,序列检测器,7.2.2 序列检测器之状态机设计,接上页,例: 用摩尔型状态机的设计空调控制器,空调控制器有两个输入,分别与温度传感器相连,用于检测室内温度。如果温度适宜(如1825),则两个输入temp_high和temp_low均为低;如果室内温度超过上限(25),则输入temp_high为高;如果室内温度低于下限(18),则输入temp_low为高。设控制器的输出为“heat”和“cool”,当两者之一为高时,空调器就制热或制冷。,空调控制器状态转换图,控制器的vhdl描述,library ieee; use ieee.std_logic_1164.all; entity air_cont is port( clk: in std_logic; temp_high: in std_logic; temp_low: in std_logic; heat: out std_logic; cool: out std_logic); end air_cont; architecture arc1 of air_cont is type state_type is(just_right, too_cold, too_hot); -状态类型,枚举三种状态 signal stvar: state_type; -状态变量 begin,process begin wait on clk until rising_edge(clk); -等待clk上升沿 if temp_low=1 then stvarheatheatheat=0;cool=1; -太热,制冷 end case; end process; end arc1;,接上页,例: 用摩尔型状态机的设计序列检测器,序列检测器在数字通信、雷达和遥控遥测等领域中用于检测同步识别标志。它是一种用来检测一组或多组序列信号的电路,本例中要求检测器连续收到一组串行码(1110010)后,输出检测标志为1;否则,输出为0。 分析: 该例子中要求检测的序列码是7位,因此需要7个状态分别记忆连续收到了1,11,111,1110,11100,111001,1110010的7个状态,另外,还需要增加一个初始状态,即“未收到一个有效位”的状态,共8个状态。这8个状态用s0s7来表示,序号就表示已收到有效位的个数。显然,输出检测标志只有在进入s7状态时才输出为1,很显然这是一个摩尔(moore)型状态机。,序列检测器的状态图,library ieee; use ieee.std_logic_1164.all; entity jcq is port (clk, xi: in std_logic; z: out std_logic); end jcq; architecture archjcq of jcq is type state_type is (s0, s1, s2, s3, s4, s5, s6, s7); signal present_state, next_state: state_type ; begin state_comb: process (present_state, xi) begin case present_state is when s0= z=0; if xi=1 then next_state=s1; else next_state=s0; end if;,when s1= z z z z z z z=1; if xi=1 then next_state=s1; else next_state=s0; end if; end case;,end process state_comb; state_clk: process(clk) begin if clkevent and clk=1 then present_state=next_state; end if; end process state_clk; end archjcq;,序列检测器的vhdl源文件中,有两个进程:第一个进程说明次态的取值由现态及输入决定,但并没有指出它在什么时候成为现态;第二个进程,可以看到该赋值过程与时钟的上升沿同步。因为序列检测器使用了两个进程来定义有限状态机,故而称之为双进程的有限状态机描述方式。,7.3 mealy型有限状态机的设计,mealy型状态机的输出逻辑不仅与当前状态有关,还与当前的输入变量有关,因此,一个基本的mealy型状态机应具有以下端口信号: 时钟输入端: clk; 输入变量:input; 输出变量:output; 状态复位端: reset; mealy型状态机的 输出变化比moore型状态机要领先一个周期,即一旦输入状态发生变化,输出信号即刻发生变化,接下页,双进程状态机-mealy,接上页,毛刺,消除毛刺,改进方法 1)将输出通过寄存器锁存 2)改为单进程状态机mealy,接下页,单进程状态机mealy 消除毛刺,接上页,接下页,序列检测器-将例7-4双进程的moore改为单进程的mealy,接上页,不同:输出sout延时一个时钟,输出延时具有滤波作用。,7.4 状态机图形编辑设计方法,7.5 状态编码,状态机从状态表达方式可分为: 有符号状态机和确定编码状态机 有符号状态机:用文字符号表示状态变量的状态机,其状态编码由vhdl综合器根据具体情况确定。 确定编码状态机:其状态编码可人为控制或由综合器自动对编码方式进行选择。 状态机从编码方式可分为: 顺序编码状态机、一位热码编码状态机或其它编码状态机,7.5.1 直接输出型编码,将状态编码直接输出作为控制信号,即output=state;要求对状态机各状态的编码作特殊的选择,以适应控制时序的要求。这种状态机称为状态码直接输出型状态机。,直接输出型编码应用:计数器,表7-1 0809采样机控制信号状态编码表,将状态编码直接输出作为控制信号,每一位的编码值都赋予了实际的控制功能,即: start= current_state(4); ale = current_state(3) ; oe = current_state(2) ; lock = current_state(1) 。,ale:输入选通端口地址锁存信号,start:转换启动控制信号,eoc:状态转换信号,oe:输出控制信号,7.5 状 态 编 码,7.5.1 直接输出型编码,接下页,根据编码表7-1编写的代码,7.5 状 态 编 码,7.5.1 直接输出型编码,接上页,其他编码方式,用属性定义语句设置,用属性定义语句设置,7.5.2 顺序编码,顺序编码方式就是利用若干个触发器的编码组合来实现n个状态的状态机,这种编码方式最为简单,且使用的触发器数量最少,剩余的非法状态最少,容错技术最为简单。,【例】 . signal crurrent_state,next_state: std_logic_vector(2 downto 0 ); constant st0 : std_logic_vector(2 downto 0) := “000“ ; constant st1 : std_logic_vector(2 downto 0) := “001“ ; constant st2 : std_logic_vector(2 downto 0) := “010“ ; constant st3 : std_logic_vector(2 downto 0) := “011“ ; constant st4 : std_logic_vector(2 downto 0) := “100“ ; .,7.5.3 一位热码状态编码 (one-hot encoding),一位热码编码方式就是用n个触发器来实现具有n个状态的状态机,状态机中的每一个状态都由其中一个触发器的状态表示,即当处于某状态时,对应的触发器为1,其余的触发器都置0。 一位热码编码方式尽管用了较多的触发器,但其简单的编码方式大为简化了状态译码逻辑,提高了状态转换速度,这对于含有较多的时序逻辑资源,较少的组合逻辑资源的fpga器件是好的解决方案。,一位热码编码方式选择对话框,一位热码编码(one-hot encoding),一位热码编码方式是用n个触发器实现具有n个状态的状态机,状态机中的每一个状态都由其中一个触发器的状态表示,对应的触发器为1,其余的触发器都置0。,状态机编码方式设置,assignglobal project synthesis,7.5.4 状态编码设置,用户自定义方式 将需要的编码方式直接写入程序中,不需eda软件干预,2. 直接设置方法,一位热码形式,3. 用属性定义语句设置,7.6 安全状态机设计,状态机剩余状态: 未不需要被定义的 编码组合,这些状态在状态机的 正常运行中 不需要出现的,通常称为非法状态。,7.6.1 程序直接导引法,1)在语句对每一个非法状态作出明确状态转换指示,2)利用others语句中对未提到的状态作统一处理,7.6.2 状态编码监测法,一位热码编码方式可减少状态转换间的译码组合逻辑资源,但其剩余状态过多,处理方法:正常的状态时,只有1个触发器的状态为1,其余的触发器都置0。在状态机设计中加入对状态1个数是否大于一的判别逻辑,当大于1时,产生报警信号alarm ,系统可根据此信号是否有效决定是否调整状态或转向。,7.6.3 借助eda优化控制工具生成安全状态机,7.7 硬件数字技术排除毛刺 7.7.1 延时方式去毛刺,7.7.2 逻辑方式去毛刺,7.7.3 定时方式去毛刺,接下页,接上页,习 题,7-1 根据图7-30(a)所示的状态图,分别按照图7-30(b)和图7-30(c)写出对应结构的vhdl状态机。并根据表7-2,分别用3中不同编码方式实现二状态机,并讨论他们的容错措施。,习 题,7-2 举二例说明,有那些常用时序电路是状态机比较典型特殊形式,并说明它们属于什么类型的状态机(编码类型,时序类型和结构类型)。 7-3 用mealy机类型,写出控制adc0809采样的状态机。 7-4 请设计一种信号去抖动的电路模型,仿真后,讨论其优缺点和使用范围。 7-5 根据7.5节,用表格法和绘图法设计状态机,实现例7-2的功能,用时序仿真波形图验证之。最后将其转变成vhdl程序,将此程序与例7-2相比,讨论他们的表述风格。,实验与设计,7-1 序列检测器设计 (1)实验目的: (2)实验任务: (3)实验思考题:。 (4)实验报告: 基于5e+系统的演示示例:/kx_7c5ee+/experiments/exp34_schk/,实验与设计,7-2 并行adc采样控制电路实现与硬件验证 (1)实验目的: (2)实验原理: (3)实验任务1:,实验与设计,7-2 并行adc采样控制电路实现与硬件验证 (4)实验任务2: (5)实验任务3: (6)实验任务4: (7)实验报告:,实验与设计,7-3 数据采集模块和简易存储示波器设计 (1)实验目的: (2)实验原理:,实验与设计,7-3 数据采集模块和简易存储示波器设计 (3)实验内容1: (4)实验内容2: (5)实验内容3: (6)实验内容4: 向另一5e+系统下载:/kx_7c5ee/demos/exp10_dds_core_dac0832/mcu8951。 (7)实验内容5: (8)实验内容6: (9)实验内容7:,实验与设计,7-4 五功能智能逻辑笔设计 (1)实验目的: (2)实验原理:,实验与设计,7-4 五功能智能逻辑笔设计 (1)实验目的: (2)实验原理:,示例文件:/kx_7c5ee+/experiments/exp14_logic_pen/ (3)实验内容:,实验与设计,7-5 比较器加dac器件实现adc转换功能电路设计 (1)实验原理: (2)实验内容1: (3)实验内容2:,实验与设计,7-
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年驾照三力测试试题题库及答案
- 阿里地区2024-2025学年七年级上学期语文期中模拟试卷
- 安徽省2024年高二学业水平合格性考试物理考试题目及答案
- 2025 年小升初太原市初一新生分班考试英语试卷(带答案解析)-(人教版)
- 2025 年小升初承德市初一新生分班考试数学试卷(带答案解析)-(人教版)
- 天津2025年上半年造价工程师考试造价管理:工程项目目标控制的内容试题
- 社区老年食品安全知识培训课件
- 北师大版四年级上册数学第七-八单元 生活中的负数、数学好玩 可能性检测题 (无答案)
- 代销服装协议合同范本
- 法院卫生保洁合同范本
- 水利工程临时工程施工质量验收与评定规范
- 广州市国家级青少年足球训练基地项目可行性研究报告
- 机械租赁避税方案(3篇)
- 氧化蜡行业深度研究分析报告(2024-2030版)
- 2025-2030年中国动力耳鼻喉科手术器械行业市场现状供需分析及投资评估规划分析研究报告
- 2025至2030中国建筑防腐行业发展趋势与前景分析报告
- 2025年重庆市中考化学试卷真题(含标准答案)
- 社会化服务项目方案投标文件技术方案
- 电石中控岗位操作规程
- 造型基础-全套教案课件
- 幕墙密封胶相容性检测
评论
0/150
提交评论