Verilog有限状态机设计ppt课件.ppt_第1页
Verilog有限状态机设计ppt课件.ppt_第2页
Verilog有限状态机设计ppt课件.ppt_第3页
Verilog有限状态机设计ppt课件.ppt_第4页
Verilog有限状态机设计ppt课件.ppt_第5页
已阅读5页,还剩31页未读 继续免费阅读

下载本文档

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

文档简介

第八章有限状态机设计,EDA技术与应用,1,教学重点,MOORE状态机MEALY状态机有限状态机的几种描述方式有限状态机的状态编码,2,8.1有限状态机,构成组合逻辑状态译码、产生输出时序逻辑存储状态分类Moore输出是现态的函数Mealy输出是现态和输入的函数,3,摩尔型(Moore)状态机,米里型(Mealy)状态机,4,Moore型状态图,现态,次态,输入/输出,5,modulefsm(clk,clr,z,qout);/模5计数器inputclk,clr;outputregz;outputreg2:0qout;always(posedgeclkorposedgeclr)/此过程定义状态转换beginif(clr)qout=0;/异步复位elsecase(qout)3b000:qout=3b001;3b001:qout=3b010;3b010:qout=3b011;3b011:qout=3b100;3b100:qout=3b000;default:qout=3b000;/*default语句*/endcaseendalways(qout)/*此过程产生输出逻辑*/begincase(qout)3b100:z=1b1;default:z=1b0;endcaseendendmodule,6,Mealy型状态图,start=0,step3=0,State2out=100,step3=1,step2=0,7,【例10.7】状态机设计举例moduleFSM(clk,clr,out,start,step2,step3);inputclk,clr,start,step2,step3;output2:0out;reg2:0out;reg1:0state,next_state;parameterstate0=2b00,state1=2b01,/状态编码state2=2b11,state3=2b10;/格雷码always(posedgeclkorposedgeclr)beginif(clr)state=state0;/定义初态elsestate=next_state;end,8,always(stateorstartorstep2orstep3)/状态转换begincase(state)state0:beginif(start)next_state=state1;elsenext_state=state0;endstate1:beginnext_state=state2;end,9,state2:beginif(step2)next_state=state3;elsenext_state=state0;endstate3:beginif(step3)next_state=state0;elsenext_state=state3;enddefault:next_state=state0;endcaseend,10,always(state)/状态译码及输出begincase(state)state0:out=3b001;state1:out=3b010;state2:out=3b100;state3:out=3b111;default:out=3b001;endcaseendendmodule,11,(1)用三个过程描述:即现态(CS)、次态(NS)、输出逻辑(OL)各用一个always过程描述。(2)双过程描述(CS+NS、OL双过程描述):使用两个always过程来描述有限状态机,一个过程描述现态和次态时序逻辑(CS+NS);另一个过程描述输出逻辑(OL)。(3)双过程描述(CS、NS+OL双过程描述):一个过程用来描述现态(CS);另一个过程描述次态和输出逻辑(NS+OL)。(4)单过程描述:在单过程描述方式中,将状态机的现态、次态和输出逻辑(CS+NS+OL)放在一个always过程中进行描述。,8.2有限状态机的Verilog描述,12,“101”序列检测器的Verilog描述(三个过程),modulefsm1_seq101(clk,clr,x,z);inputclk,clr,x;outputregz;reg1:0state,next_state;parameterS0=2b00,S1=2b01,S2=2b11,S3=2b10;/*状态编码,采用格雷(Gray)编码方式*/always(posedgeclkorposedgeclr)/*该过程定义当前状态*/beginif(clr)state=S0;/异步复位,s0为起始状态elsestate=next_state;end,13,“101”序列检测器的Verilog描述(三个过程),always(stateorx)/*该过程定义次态*/begincase(state)S0:beginif(x)next_state=S1;elsenext_state=S0;endS1:beginif(x)next_state=S1;elsenext_state=S2;end,14,S2:beginif(x)next_state=S3;elsenext_state=S0;endS3:beginif(x)next_state=S1;elsenext_state=S2;enddefault:next_state=S0;/*default语句*/endcaseend,always(state)/*该过程产生输出逻辑*/begincase(state)S3:z=1b1;default:z=1b0;endcaseendendmodule,“101”序列检测器的Verilog描述(三个过程),15,“101”序列检测器(单过程描述),modulefsm4_seq101(clk,clr,x,z);inputclk,clr,x;outputregz;reg1:0state;parameterS0=2b00,S1=2b01,S2=2b11,S3=2b10;/*状态编码,采用格雷(Gray)编码方式*/,16,“101”序列检测器(单过程描述),always(posedgeclkorposedgeclr)Beginif(clr)state=S0;/异步复位,s0为起始状态elsecase(state)S0:beginif(x)beginstate=S1;z=1b0;endelsebeginstate=S0;z=1b0;endendS1:beginif(x)beginstate=S1;z=1b0;endelsebeginstate=S2;z=1b0;endendS2:beginif(x)beginstate=S3;z=1b0;endelsebeginstate=S0;z=1b0;endendS3:beginif(x)beginstate=S1;z=1b1;endelsebeginstate=S2;z=1b1;endenddefault:beginstate=S0;z=1b0;end/*default语句*/endcaseendendmodule,17,8.3状态编码,顺序编码格雷编码约翰逊编码一位热码,常用的编码方式,18,一位热码编码选择对话框(Quartus),19,状态编码的定义,在Verilog语言中,有两种方式可用于定义状态编码,分别用parameter和define语句实现,比如要为state0、state1、state2、state3四个状态定义码字为:00、01、11、10,可采用下面两种方式。方式1:用parameter参数定义parameterstate1=2b00,state2=2b01,state3=2b11,state4=2b10;case(state)state1:;/调用state2:;,20,要注意两种方式定义与调用时的区别,一般情况下,更倾向于采用方式1来定义状态编码。一般使用case、casez和casex语句来描述状态之间的转换,用case语句表述比用if-else语句更清晰明了。,状态编码的定义方式2:用define语句定义definestate12b00/不要加分号“;”definestate22b01definestate32b11definestate42b10case(state)state1:;/调用,不要漏掉符号“”state2:;,状态编码的定义,21,8.4有限状态机设计要点,1起始状态的选择:起始状态是指电路复位后所处的状态,选择一个合理的起始状态将使整个系统简洁、高效。多数EDA软件会自动为基于状态机的设计选择一个最佳的起始状态。2有限状态机的同步复位3有限状态机的异步复位,22,多余状态的处理,一般有如下两种处理多余状态的方法:(1)在case语句中用default分支决定如果进入无效状态所采取的措施;(2)编写必要的Verilog源代码明确定义进入无效状态所采取的行为。,23,频率计控制器设计举例,设计一个自动转换量程的频率计控制器,用Mealy状态机实现。,24,进入100K量程(状态A)reset=1;std_f_sel=00,100K量程测量(状态B)reset=0;std_f_sel=00,进入100K量程(状态C)reset=1;std_f_sel=01,100K量程测量(状态D)reset=0;std_f_sel=01,进入100K量程(状态E)reset=1;std_f_sel=11,1K量程测量(状态D)reset=0;std_f_sel=11,cntlow=1,cntlow=1,cntlow=1,cntlow=1,cntover=1,cntover=1,25,【例10.8】自动转换量程频率计控制器/*信号定义clk:时钟输入reset:系统复位信号half_dollar:投入5角硬币one_dollar:投入1元硬币half_out:找零信号dispense:机器售出饮料collect:提示取走饮料*/,26,moduleFSM(clk,clr,out,start,step2,step3);inputclk,clr,start,step2,step3;output2:0out;reg2:0out;reg1:0state,next_state;parameterstate0=2b00,state1=2b01,/状态编码state2=2b11,state3=2b10;/格雷码always(posedgeclkorposedgeclr)beginif(clr)state=state0;/定义初态elsestate=next_state;end,27,always(stateorstartorstep2orstep3)/状态转换begincase(state)state0:beginif(start)next_state=state1;elsenext_state=state0;endstate1:beginnext_state=state2;end,28,state2:beginif(step2)next_state=state3;elsenext_state=state0;endstate3:beginif(step3)next_state=state0;elsenext_state=state3;enddefault:next_state=state0;endcaseend,29,always(state)/状态译码及输出begincase(state)state0:out=3b001;state1:out=3b010;state2:out=3b100;state3:out=3b111;default:out

温馨提示

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

最新文档

评论

0/150

提交评论