欢迎来到天天文库
浏览记录
ID:49308190
大小:2.50 MB
页数:62页
时间:2020-02-03
《有限状态机设计.ppt》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第6章有限状态机设计EDA的控制单元P189-208第6章有限状态机设计一般有限状态机设计概述Moore型有限状态机设计Mealy型有限状态机设计状态编码非法状态处理6.1概述一、为什么要使用有限状态机,什么是状态机二、有限状态机的分类及表示方法三、有限状态机的设计举例为什么要使用状态机状态机:广义时序逻辑电路,按照预先设计的状态顺序运行。状态数有限,又称有限状态机(FSM,FiniteStateMachine)。结构模式简单;容易构成性能良好的同步时序逻辑模块;VHDL表述直观,程序结构清晰;状态机设计的系统可靠
2、性高。有限状态机克服了纯硬件数字系统顺序方式控制不灵活的缺点。一、概述6.1.1.2状态机分类输出方式:Moore(摩尔)输出仅是当前状态的函数;Mealy(米立)输出是当前状态和输入信号的函数;结构分类:单进程;多进程;状态表达方式:顺序编码;一位热码;其它编码。状态机的表示方法1方法一:状态转换表输入当前状态下一状态输出0000001010000000…………状态机的表示方法2方法二:算法流程图方法与软件程序的流程图类似状态机的表示方法3方法三:状态转换图状态1状态4状态2状态3入/出入入入/出/出/出Moor
3、e条件控制定序直接控制定序状态机的表示方法3方法三:状态转换图状态1状态4状态2状态3入/出入入入/出/出/出/出Mealy条件控制定序直接控制定序一、概述6.1.3状态机基本结构状态译码器状态寄存器输出译码器输入反馈输出状态组合逻辑组合逻辑时序逻辑二、一般有限状态机的设计6.2.1一般有限状态机组成说明部分;时序进程;组合进程;辅助进程。1.说明部分2.时序进程ARCHITECTURE...ISTYPESTIS(s0,s1,s2,s3);SIGNALcurrent_state,next_state:ST;...3.
4、组合进程在时钟信号的作用下,负责状态的转换。4.辅助进程根据输入信号和当前状态的取值(current_state)确定下一状态(next_state)的取值,确定输出或产生内部其它组合进程或时序进程所需的控制信号。配合时序进程或组合进程工作的数据锁存器等进程。有限状态机的程序构成二、一般有限状态机的设计6.2.1一般有限状态机组成组合进程:注:状态译码器部分;判别控制过程中的当前状态;(case-when)决定进入下一个状态。(if-then-else)二、一般有限状态机的设计6.2.1一般有限状态机组成辅助进程:状
5、态机Current_stateNext_stateComb_outputclkresetState_inputs一般状态机工作示意图二、一般有限状态机的设计【例6-1】一般两进程有限状态机描述课堂练习:画出下面程序对应的状态转换图LIBRARYIEEE;USEIEEE.STD_LOGIC_1164.ALL;ENTITYs_machineISPORT(clk,reset:INSTD_LOGIC;state_inputs:INSTD_LOGIC_VECTOR(0TO1);comb_outputs:OUTSTD_LOGIC
6、_VECTOR(0TO1));ENDs_machine;ARCHITECTUREbehaveOFs_machineISTYPEstatesIS(st0,st1,st2,st3);SIGNALcurrent_state,next_state:states;BEGINREG:PROCESS(reset,clk)BEGINIFreset='1'THENcurrent_state<=st0;ELSIFclk='1'ANDclk'EVENTTHENcurrent_state<=next_state;ENDIF;ENDPROCE
7、SS;COM:PROCESS(current_state,state_Inputs)BEGINCASEcurrent_stateISWHENst0=>comb_outputs<=“00”;IFstate_inputs="00"THENnext_state<=st0;ELSEnext_state<=st1;ENDIF;WHENst1=>comb_outputs<=“01”;IFstate_inputs="00"THENnext_state<=st1;ELSEnext_state<=st2;ENDIF;WHENst2=>
8、comb_outputs<=“10”;IFstate_inputs="11"THENnext_state<=st2;ELSEnext_state<=st3;ENDIF;WHENst3=>comb_outputs<=“11”;IFstate_inputs="11"THENnext_state<=st3;ELSEnext_state<=st0;EN
此文档下载收益归作者所有