状态机编程改_第1页
状态机编程改_第2页
状态机编程改_第3页
状态机编程改_第4页
状态机编程改_第5页
已阅读5页,还剩14页未读 继续免费阅读

下载本文档

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

文档简介

1、状态机编程,FSM设计方法,分析控制器设计指标,建立系统算法模型,即状态转换图;分析被控对象的时序,确定控制器的有限状态机的各个状态及输入、输出条件;应用VHDL语言完成状态机的描述。,FSM分类,Moore型:输出信号仅与现态相关Mealy型:输出信号与现态和输入相关,DFFs,OutputComb.Logic,FeedbackComb.Logic,DFFs,OutputComb.Logic,FeedbackComb.Logic,Moore,Mealy,现态,次态,输入,输出,现态,次态,输出,输入,FSM构成,FSM用来解决一般时序逻辑电路问题,包括同步/异步时序逻辑状态寄存器当前状态(现

2、态)寄存器组合逻辑电路下一状态(次态)组合逻辑输出组合逻辑,Moore和Mealy状态机描述的区别就在于输出逻辑进程,例子:0101序列检测码,例子:0101序列检测码,例子:0101序列检测码,vhdl语言描述FSM的建立过程,定义状态机的状态定义状态变量描述状态机的进程,定义状态机的状态,在使用状态机之前应该定义状态变量的枚举类型,可以定义在状态机描述的源文件中,或者是专门的程序包中。例子:TYPEstateIS(state1,state2);,定义状态变量,定义两个状态机变量:当前状态和次态,其中当前状态描述的是一组寄存器,而下一状态描述的是组合逻辑。例:signalcurrent_st

3、ate:state;signalnext_state:state;,描述状态机的进程,状态机的描述方式:三进程、二进程、单进程一般采用三个进程来描述状态机描述状态机寄存器的时序进程描述次态产生逻辑的组合逻辑进程描述输出组合逻辑进程,易出错,可读性差,不利于优化,状态机寄存器的时序进程,process(reset,clk)beginifreset=1thencurrent_state=初始状态;elsifrising_edge(clk)thencurrent_state=next_state;endif;endprocess;,一定要有复位信号,否则状态机处于随机状态,无法开始正常工作,FSM的

4、复位,同步复位双进程状态机在第1个进程的开始处用IFTHEN语句判断RESET,在其后的ELSE语句里用CASE语句定义状态转换或者在第2个进程里定义同步复位单进程状态机进程里定义同步复位异步复位双进程状态机在第2个进程里定义异步复位单进程状态机进程里定义异步复位,CASE_WHENIFTHENELSEPROCESS1,CLKEVENTANDCLK=1PROCESS2,次态,现态,输入,输出,次态转移逻辑进程,process(current_state,其他输入信号)beginnext_state.next_state.next_state=某个状态;.endcase;endprocess;,

5、次态转移逻辑进程,在case语句之前,给nenxt_state赋一个缺省值:next_state=current_state;其意义在于:当case语句中决定下个状态的逻辑比较复杂时,就不用给所有的情况赋值,不关心的情况就保持原状态。,输出逻辑进程,process(current_state,其他输入信号)beginoutputoutputoutput=某个值;.endcase;endprocess;,Mealy机就需要其他输入信号,这些信号和当前状态共同决定输出信号;Moore机则不需要,其输出只与当前状态有关。,Stmch1.vhd,libraryieee;useieee.std_logi

6、c_1164.all;entitystmch1isport(clk,in1,rst:instd_logic;out1:outstd_logic);endstmch1;architecturebehaveofstmch1istypestate_valuesis(sx,s0,s1);signalstate,next_state:state_values;beginprocess(clk,rst)beginifrst=1thenstate=s0;elsifrising_edge(clk)thenstate=next_state;endif;endprocess;,process(state,in1)

7、begin-setdefaultsforoutputandstateout1ifin1=0thenout1ifin1=0thenout1next_state=sx;endcase;endprocess;endbehave;,CombLogic,DFFs,in1stateclkrst,out1next_state,s0/0,s1/1,input=0,Reset=1,input=0,input=1,input=1,statmach.vhd,LibraryIEEE;useIEEE.std_logic_1164.all;ENTITYstatmachISPORT(clk:INBIT;input:INBIT;reset:INBIT;output:OUTBIT);ENDstatmach;,ARCHITECTUREaOFstatmachISTYPESTATE_TYPEIS(s0,s1);SIGNALstate:STATE_TYPE;BEGINPROCESS(clk,reset)BEGINIFreset=1THENstatestateIFinput=1THEN

温馨提示

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

最新文档

评论

0/150

提交评论