




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、黑龙江大学电子工程学院第六章 有限状态机设计有限状态机及其技术是实现数字系统中的重要组成部分,主要用于解决同步时序逻辑的问题,状态机的设计优点在于符合人的思维逻辑,对大型系统的设计和实现很有帮助。一、概述 二、一般有限状态机的设计三、Moore型有限状态机的设计四、Mealy型有限状态机的设计五、状态编码六、状态机剩余状态的处理黑龙江大学电子工程学院一、 概述 1、关于状态机状态机就是事物存在状态的一种综合描述。用VHDL设计的状态机有多种形式:(1)、从状态机的信号输出方式分有Mealy(米立)型和Moore(摩尔)型两种。 Moore型:输出只是当前状态值的函数,并仅在时钟边沿到来时才变化
2、。 Mealy型:输出是当前状态值、当前输出值和当前输入值的函数。(2)、从结构上分有单进程状态机和多进行状态机;(3)、从状态表达方式上分为符号化状态机和确定状态编码的状态机。(4)、从编码方式上分为顺序编码状态机和一位热码编码状态机和其他编码方式状态机等。黑龙江大学电子工程学院2、状态机的特点(1)、有限状态机克服了纯硬件数字系统顺序方式控制不灵活的特点。状态机属于纯硬件数字系统中的顺序控制电路,速度优于程序控制的MCU。(2)、由于状态机的结构模式相对简单,设计方案相对固定,一般设计为符号化枚举类型的状态。(3)、状态机容易构成性能优良的同步时序模块,可有效克服竞争冒险。和消除电路中的毛
3、刺。(4)、同VHDL的其他描述方式相比,状态机的表述丰富,程序层次分明,结构清晰易懂,便于排错,修改和移植。(5)、在高速运算和控制方面,状态机有着巨大的优势。(6)、从可靠性上来说,状态机属于纯电路,没有软件编程方面的一些缺陷。 如状态机设计中使用了完整容错技术,从非法状态的返回时间都是优于 MCU。黑龙江大学电子工程学院3、状态机的基本结构和功能状态机的基本操作有两种(1)、状态机内部状态转换。次态由当前状态和输入决定。(2)、产生输出序列。根据当前状态和输入状态决定输出。状态状态译码器译码器状态状态寄存器寄存器输输出出译译码码器器输入输入反馈反馈输出输出状态状态组合逻辑组合逻辑组合逻辑
4、组合逻辑寄存器部分寄存器部分状态机结构示意图黑龙江大学电子工程学院二、 一般有限状态机的设计 为了获得可综合的、高效的状态机描述:(1)、一般使用枚举类型来定义状态机的状态。(2)、使用多进程方式来描述状态机的内部逻辑。如组合逻辑进程、时序进 程和辅助进程。1、一般有限状态机的组成(1)、说明部分一般在结构体的说明部分,使用TYPE定义枚举类型的状态序列。如:TYPE state_type IS(start_state,run_state,error_state);-定义类型 SIGNAL state: state_type; -定义state_type类型的信号(2)、时序进程 负责在时钟驱
5、动下完成状态机转换的进程将次态转为当前状态(3)、组合进程根据外部输入的控制信号和当前状态决定下一个状态(次态)。(4)、辅助进程 用于配合状态机工作的组合或者时序进程黑龙江大学电子工程学院2、设计实例 例6-1一般状态机的描述LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY s_machine ISPORT(clk,reset: IN STD_LOGIC; -时钟,复位 state_input: IN STD_LOGIC_VECTOR(0 TO 1); -状态转换控制 comb_output:OUT STD_LOGIC_VECTOR(0 TO 1
6、);-状态输出END s_machine;状态机状态机Current_stateNext_stateComb_outputclkresetState_inputs时序进程组合进程黑龙江大学电子工程学院ARCHITECTURE behave OF s_machine ISTYPE state IS(st0,st1,st2,st3); -定义枚举类型的量SIGNAL current_state,next_state:state; -state类型信号,取值有限制BEGINREG:PROCESS(reset,clk) -时序逻辑进程BEGINIF reset=1 THENcurrent_state=
7、st0;-复位信号有效,返回最初态ELSIF (clkEVENT AND clk=1) THEN-每次时钟上升沿时候current_state comb_output=“00”; -根据当前状态,决定输出 IF state_input=“00” THEN 根据输出决定次态的变化next_state =st0;-输入值与状态值一致时,次态不变 ELSEnext_state comb_output=“01”; IF state_input=“01” THENnext_state =st1; ELSEnext_state comb_output=“10”; IF state_input=“10” T
8、HENnext_state =st2; ELSEnext_state comb_output=“11”; IF state_input=“11” THENnext_state =st3; ELSEnext_state =st0; END IF; END CASE;END PROCESS;END bahave;黑龙江大学电子工程学院三、Moore型状态机的设计Moore型:输出只是当前状态值的函数,并仅在时钟边沿到来时才变化。Mealy型:输出是当前状态值、当前输出值和当前输入值的函数,与时钟无关。Moore型状态机框图黑龙江大学电子工程学院1、多进程Moore型有限状态机的设计CE =1 电路
9、接1 ST0 CS=0 RC=1芯片复位ST1 CS=1 RC=0 启动装换ST2 CS=1 RC=0 等待status =0ST3 CS=1 RC=1 读出结果ST4 CS=1 RC=1 LOCK =1 结果锁存黑龙江大学电子工程学院AD574采样控制状态图AD574采样状态机结构框图黑龙江大学电子工程学院黑龙江大学电子工程学院 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;-时钟C
10、LK,转换结束信号STATUS lock0 : OUT STD_LOGIC; -内部锁存信号lock的外部输出信号 cs,a0,rc,k12X8 : OUT STD_LOGIC; -AD574控制信号 q : OUT STD_LOGIC_VECTOR(11 DOWNTO 0); -锁存数据输出END AD574;ARCHITECTURE behav OF AD574 IS TYPE states IS (st0, st1, st2, st3,st4); -枚举类型定义5个状态 SIGNAL current_state, next_state: states :=st0 ; -定义信号,赋初值
11、SIGNAL regl : STD_LOGIC_VECTOR(11 DOWNTO 0); -转换结果 SIGNAL lock: STD_LOGIC; -内部锁存信号 BEGIN k12X8 = 1; -设定12位转换和读取操作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
12、;rc=1;lock cs=0; a0=0;rc=1;lockcs=1; a0=1;rc=1;lock=0;-返回初态 黑龙江大学电子工程学院 END CASE ; END PROCESS COM2 ; REG: PROCESS (clk) - 时序进程,有当前状态向次态转换 BEGIN IF ( clkEVENT AND clk=1) THEN current_state = next_state; END IF; END PROCESS REG; LATCH1 : PROCESS (LOCK) - 数据锁存器进程 BEGIN IF lock=1 AND lockEVENT THEN reg
13、l = d ; END IF; END PROCESS ; Q = regl; END behav;黑龙江大学电子工程学院2、用时钟同步输出的Moore型有限状态机 组合逻辑组合逻辑寄寄存存器器寄寄存存器器组合逻辑组合逻辑inputsoutputsclkclkresetreset当前状态当前状态从框图可以看出,是在Moore型基础上增加了一个寄存器的同步输出级,可以有效避免竞争冒险。同时带来的缺点是输出较前一个程序晚一个周期。黑龙江大学电子工程学院例6-3 用时钟同步输出的状态机LIBRARY IEEE;USE IEEE.STD_LOGIC.1164.ALL;ENTITY moore1 ISP
14、ORT( datain: IN STD_LOGIC_VECTOR(1 DOWNTO 0); clk, rst : IN STD_LOGIC; q: OUT STD_LOGIC-VECTOR(3 DOWNTO 0) );END ENTITY moore1;AICHITECTURE behave OF moore1 ISTYPE st_type IS(st0,st1,st2,st3,st4);SIGNAL c_st : st_type;BEGINPROCESS(clk,rst)混合进程BEGIN IF rst=1 THEN c_st=st0,qIF datain =“01” THEN c_st=s
15、t1;-输入变化 ELSE c_st=st0;END IF; -确定次态输出 qIF datain=“10” THEN c_st=st2; ELSE c_st=st1;END IF; qIF datain=“11” THEN c_st=st3; ELSE c_st=st0;END IF; qIF datain=“00” THEN c_st=st4; ELSE c_st=st2;END IF; qIF datain=“00” THEN c_st=st0; ELSE c_st=st3;END IF; qc_st=st0;END CASE; END IF;END PROCESS;END behave
16、;黑龙江大学电子工程学院四、Mealy型有限状态机的设计Mealy型:输出是当前状态值、当前输出值和当前输入值的函数,与时钟无关。因此和等价功能的状态机相比,输出要领先一个时钟周期。Moore型状态机框图一、多进程Mealy型有限状态机例6-4是两进程的状态机将此Mealy框图同Moore型相比,可以看出电路的输出的位置不同,因此此输出是异步的输出,较moore要提前一个周期。两种类型的区别就在于输入和输出状态之间的连接关系。黑龙江大学电子工程学院LIBRARY IEEE; -例6-4两进程Mealy状态机USE IEEE.STD_LOGIC.1164.ALL;ENTITY mealy1 IS
17、PORT(clk, datain, reset: IN STD_LOGIC;q: OUT STD_LOGIC_VECTOR(4 DOWNTO 0) );END ENTITY mealy1;AICHITECTURE behave OF mealy1 ISTYPE states IS(st0,st1,st2,st3,st4);SIGNAL stx:states;BEGINCOMREGS:PROCESS(clk,reset) -混合进程,状态转换BEGIN IF reset=1 THEN stx IF datain=1 THEN stx IF datain=0 THEN stx IF datain=
18、1 THEN stx IF datain=0 THEN stx IF datain=1 THEN stx stxIF datain =1 THEN q=“10000”; ELSE qIF datain =0 THEN q=“10111”; ELSE qIF datain =1 THEN q=“10101”; ELSE qIF datain =0 THEN q=“11011”; ELSE qIF datain =1 THEN q=“11101”; ELSE q q=“00000”; END CASE;END PROCESS COM1;END behave;黑龙江大学电子工程学院P202例6-5为
19、增加锁存器的多进程状态机与前一个程序的主要区别在于在组合进程中增加了两部分: 根据电路的状态和输入状态,给待输出信号进行了赋值。 在时钟上升沿变化时,将待输出信号送到输出端口LIBRARYUSE IEEE.STD_LOGIC_1164.ALL; ENTITY mealy2 ISPORT(clk, datain, reset: IN STD_LOGIC;q: OUT STD_LOGIC_VECTOR(4 DOWNTO 0) ); END ENTITY mealy2; AICHITECTURE behave OF mealy2 ISTYPE states IS(st0,st1,st2,st3,st
20、4);SIGNAL stx:states;-定义当前状态SIGNAL q1:std_logic_vector(4 downto 0); BEGINCOMREGS: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 datain=1 THEN stx stxIF datain =1 THEN q2:=“10000”; ELSE q2:=“01010”; END I
21、F; WHEN st1=IF datain =0 THEN q2:=“10111”; ELSE q2:=“10100”; END IF; WHEN st2=IF datain =1 THEN q2:=“10101”; ELSE q2:=“10011”; 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 CA
22、SE; 黑龙江大学电子工程学院 IF clkEVENT AND clk=1 THEN q1=q2; -对输出增加了同步锁存 END IF;END PROCESS COM1;q= q1;END behave;2、用时钟同步输出信号的Mealy型状态机为了去除电路输出的毛刺P204 例6-6 将原来的输出增加了一个时钟边沿控制的同步输出。输出的是前一个状态和当前输出的组合逻辑,因此较普通的mealy型相比要晚一个时钟周期。LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL;ENTITY mealy3 IS PORT(clk, datain, reset: IN STD
23、_LOGIC;q: OUT1 STD_LOGIC_VECTOR(3 DOWNTO 0) );END ENTITY mealy3;黑龙江大学电子工程学院AICHITECTURE behave OF mealy3 ISTYPE state_type IS(st0,st1,st2,st3,st4);SIGNAL state:state_type; BEGINPROCESS(clk,reset) -混合进程,状态转换BEGIN IF reset=1 THEN state=st0;out1 0); ELSIF clkEVENT AND clk=1 THENCASE state IS 在时钟作用下,根据电
24、路状态和输入直接改变状态 WHEN st0= IF in=1 THEN state=st1; out1=“0000”; ELSE out1 IF in1=0 THEN state=st2; out1=“1100”; ELSE out1 IF in1=1 THEN state=st3;out1=“1111”; ELSE out1 IF in1=0 THEN state=st0;out1=“0000”; ELSE out1=“1111”; END IF;END CASE; END IF;END PROCESS 黑龙江大学电子工程学院五、状态编码-略讲1、状态编码有状态位直接输出型的编码: 如AD5
25、74控制程序,状态编码是顺序进行的,在输出控制时,根据状态进行输出控制。但是如果用控制位直接进行编码来使用,就可以省去了转换的操作。具体见P206表6-2 。此外计数器也属于此编码方式。CS=current_state(4); A0 =current_state(3); RC=current_state(2); LOCK=currrent_states(1);此时各个状态就有了相应的编码值,但是由于st1和st2此时状态相同,因此在上面四个控制信号基础上增加了一个B,见表6-22、顺序编码:利用若干个触发器的编码组合来实现n个状态的状态机。如6个状态的编码见P208表6-3 编码为000,00
26、1-101。3、一位热码编码:使用n个触发器来实现n个状态的状态机,每一个状态都是只有其中一个寄存器为1,其他的状态都为0。见表6-3六、状态机剩余状态的处理状态机的剩余状态一般处理方式是,当状态进入剩余状态时,跳转到电路的初态中去,以使状态能正常运行下去。黑龙江大学电子工程学院补充:状态转换图画法例1:四状态转换的状态机程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY two_process_state_machine ISPORT (clk, reset : IN STD_LOGIC;state_inputs : IN STD_LOGIC
27、;comb_outputs : OUT STD_LOGIC_VECTOR(0 TO 1);END ENTITY two_process_state_machine; ARCHITECTURE behv OF two_process_state_machine ISTYPE states IS (st0,st1,st2,st3); -定义states为枚举型数据类型,构造符号化状态机SIGNAL current_state, next_state: states;BEGINREG: PROCESS (reset, clk) -时序逻辑进程BEGINIF reset = 1 THEN -异步复位
28、current_state = st0;ELSIF clk = 1 AND clkEVENT THEN-出现时钟上升沿时进行状态转换 current_state comb_outputs = 00; -系统输出及其初始化IF state_inputs = 0 THEN -根据外部输入条件决定状态转换方向next_state = st0; ELSE next_state comb_outputs = 01; IF state_inputs = 0 THEN next_state = st1; ELSE next_state comb_outputs = 10; IF state_inputs =
29、 0 THEN next_state = st2;ELSE next_state comb_outputs = 11; IF state_inputs = 0 THEN next_state = st3;ELSE next_state = st0;END IF;END CASE;END PROCESS;END ARCHITECTURE behv;黑龙江大学电子工程学院例例2:应用实例:自动售饮料机,数字电路教材上题目:应用实例:自动售饮料机,数字电路教材上题目设计一个自动售饮料机,可投入设计一个自动售饮料机,可投入5角或角或1元的硬币,投入元的硬币,投入1.5元元则吐出一个饮料,投入则吐出一个
30、饮料,投入2元则吐出一个饮料和元则吐出一个饮料和5角钱。角钱。解:首先进行逻辑抽象,定义各信号及状态类型,定解:首先进行逻辑抽象,定义各信号及状态类型,定义如下:义如下: 设投入设投入1元硬币元硬币 A=1 否则否则 A=0, 投入投入5角硬币角硬币 B=1 否则否则 B=0, 吐出可乐则吐出可乐则 Y=1 不吐不吐 Y=0, 吐出吐出5角则角则 Z=1,不吐,不吐 Z=0 从题意可以设置从题意可以设置3个状态,一个初始状态个状态,一个初始状态S0,一个有,一个有5角的状态角的状态S1,一个有,一个有1元的状态元的状态S2黑龙江大学电子工程学院黑龙江大学电子工程学院-自动售饮料机程序自动售饮料机程序LIBRARY IEEE;USE IEEE.STD_LOGIC_1164.ALL; ENTITY AUTO_SALE ISPORT (clk, reset : IN STD_LOGIC;state_input
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 信号与信息处理专业实习报告
- 2025年天然气液化装置项目建议书
- 2025年辣条合作协议书
- 2025年公共环卫设施:环卫垃圾桶项目发展计划
- 2025-2030冷压疗法产品行业市场现状供需分析及重点企业投资评估规划分析研究报告
- 2025-2030农产品行业市场深度分析及供需形势与投资价值研究报告
- 2025-2030全球及中国送餐行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 2025-2030全球及中国车载娱乐系统行业市场现状供需分析及投资评估规划分析研究报告
- 2025-2030全球及中国课堂排程软件行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 2025-2030全球及中国笔记本电脑照相机行业市场现状供需分析及市场深度研究发展前景及规划可行性分析研究报告
- 暖通系统调试方案
- 危货车辆防汛救援应急预案
- 培训学校安全管理制度
- 应用化学专课试题及答案
- 2025年纺织行业:涤纶生产科学技术基础知识考试题(附答案)
- 国家铁路局规划与标准研究院招考聘用15人高频重点模拟试卷提升(共500题附带答案详解)
- 课件-DeepSeek从入门到精通
- 信息系统集成项目公开招标采购招标书范本
- fTU使用说明书
- 日本文学史-中世17页
- 幼儿园班本课程的在实践中的研究
评论
0/150
提交评论