欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > PPT文档下载  

    Verilog有限状态机FSM.ppt

    • 资源ID:2777444       资源大小:225.50KB        全文页数:36页
    • 资源格式: PPT        下载积分:8金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要8金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    Verilog有限状态机FSM.ppt

    北京航空航天大学 夏宇闻 编写,有限状态机FSM,北京航空航天大学 夏宇闻 编写,为什么要设计有限状态机?,如果能严格以时钟跳变沿为前提,按排好时时序,来操作逻辑系统中每一个开关Si,则系统中数据的流动和处理会按同一时钟节拍有序地进行,可以控制冒险和竞争现象对逻辑运算的破坏,时延问题就能有效地加以解决。利用同步有限状态机就能产生复杂的以时钟跳变沿为前提的同步时序逻辑,并提供操作逻辑系统的开关阵列所需要的复杂控制时序(具有信号互锁和先后次序等要求的)。,北京航空航天大学 夏宇闻 编写,为什么要设计有限状态机?,如果我们能设计这样一个电路:1)能记住自己目前所处的状态;2)状态的变化只可能在同一个时钟的跳变沿时刻发生,而不可能发生在任意时刻;3)在时钟跳变沿时刻,如输入条件满足,则进入下一状态,并记住自己目前所处的状态,否则仍保留原来的状态;4)在进入不同的状态时刻,对系统的开关阵列做开启或关闭的操作。,北京航空航天大学 夏宇闻 编写,为什么要设计有限状态机?,clock,10ns,S2,开,关,S1,t,t,t,Sn,S3,t,t,t,S4,北京航空航天大学 夏宇闻 编写,为什么要设计有限状态机?,有了以上电路,我们就不难设计出复杂的控制序列来操纵数字系统的控制开关阵列。能达到以上要求的电路就是时序和组合电路互相结合的产物:同步有限状态机和由状态和时钟共同控制的开关逻辑阵列。我们只要掌握有限状态机的基本设计方法,加上对基本电路的掌握,再加上对数据处理的过程的细致了解,我们就可以避免由于逻辑器件和布线延迟产生的冒险竞争现象所造成的破坏,设计出符合要求的复杂数字逻辑系统。,北京航空航天大学 夏宇闻 编写,数字系统的构成示意图,北京航空航天大学 夏宇闻 编写,同步有限状态机的设计,什么是有限状态机(FSM)FSM的种类和不同点设计举例,北京航空航天大学 夏宇闻 编写,什么是有限状态机?,-有限状态机是由寄存器组和组合逻辑构成的 硬件时序电路;-其状态(即由寄存器组的1和0的组合状态所 构成的有限个状态)只能在同一时钟跳变沿 的 情况下才能从一个状态转向另一个状态;-究竟转向哪一状态不但取决于各个输入值,还取决于当前状态。-状态机可用于产生在时钟跳变沿时刻开关的 复杂的控制逻辑,是数字逻辑的控制核心。,北京航空航天大学 夏宇闻 编写,Mealy 状态机下一个状态=F(当前状态,输入信号);输出信号=G(当前状态,输入信号);,图1.时钟同步的状态机结构(Mealy 状态机),北京航空航天大学 夏宇闻 编写,Moor 状态机下一个状态=F(当前状态,输入信号)输出信号=G(当前状态);,北京航空航天大学 夏宇闻 编写,带流水线输出的 Mealy 状态机下一个状态=F(当前状态,输入信号);输出信号=G(当前状态,输入信号);,输出,北京航空航天大学 夏宇闻 编写,简单的状态机设计举例,状态转移图表示RTL级可综合的 Verilog 模块表示,北京航空航天大学 夏宇闻 编写,有限状态机的图形表示,图形表示:状态、转移、条件和逻辑开关,图3.4 状态转移图,北京航空航天大学 夏宇闻 编写,有限状态机的Verilog描述,定义模块名和输入输出端口;定义输入、输出变量或寄存器;定义时钟和复位信号;定义状态变量和状态寄存器;用时钟沿触发的always块表示状态转移过程;在复位信号有效时给状态寄存器赋初始值;描述状态的转换过程:符合条件,从一个状态到另外一个状态,否则留在原状态;验证状态转移的正确性,必须完整和全面。,北京航空航天大学 夏宇闻 编写,表示方法之一,module fsm(Clock,Reset,A,K2,K1);input Clock,Reset,A;/定义时钟、复位和输入信号output K2,K1;/定义输出控制信号的端口reg K2,K1;/定义输出控制信号的寄存器reg 1:0 state;/定义状态寄存器parameter Idle=2b00,Start=2b01,Stop=2b10,Clear=2b11;/定义状态变量参数值 always(posedge Clock)if(!Reset)begin/定义复位后的初始状态和输出值 state=Idle;K2=0;K1=0;end,北京航空航天大学 夏宇闻 编写,表示方法之一(续),else case(state)Idle:begin if(A)begin state=Start;K1=0;end else state=Idle;end Start:begin if(!A)state=Stop;else state=Start;end,北京航空航天大学 夏宇闻 编写,表示方法之一(续),Stop:begin/符合条件进入新状态,否则留在原状态 if(A)begin state=Clear;K2=1;end else state=Stop;end Clear:begin if(!A)begin state=Idle;K2=0;K1=1;end else state=Clear;end endcaseendmodule,北京航空航天大学 夏宇闻 编写,表示方法之二,我们还可以用另一个 Verilog HDL模型来表示同一个有限状态,见下例。(用可综合的Verilog模块设计用独热码表示状态的状态机)module fsm(Clock,Reset,A,K2,K1);input Clock,Reset,A;output K2,K1;reg K2,K1;reg 3:0 state;parameter Idle=4b1000,Start=4b0100,Stop=4b0010,Clear=4b0001;,北京航空航天大学 夏宇闻 编写,表示方法之二(续),always(posedge clock)if(!Reset)begin state=Idle;K2=0;K1=0;end else case(state)Idle:if(A)begin state=Start;K1=0;end else state=Idle;,北京航空航天大学 夏宇闻 编写,表示方法之二(续),Start:if(!A)state=Stop;else state=Start;Stop:if(A)begin state=Clear;K2=1;end else state=Stop;Clear:if(!A)begin state=Idle;K2=0;K1=1;end else state=Clear;,北京航空航天大学 夏宇闻 编写,表示方法之二(续),default:state=Idle;endcaseendmodule 例2与例1的主要不同点是状态编码,例2采用了独热编码,而例1则采用Gray码,究竟采用哪一种编码好要看具体情况而定。,北京航空航天大学 夏宇闻 编写,表示方法之三,在比较复杂的状态机设计过程中,我们往往把状态的变化与输出开关的控制分成两部分来考虑。就象前面讲过的Mealy状态机输出部分的组合逻辑。为了调试方便,还常常把每一个输出开关写成一个个独立的always组合块。在调试多输出状态机时,这样做比较容易发现问题和改正模块编写中出现的问题。建议同学们在设计复杂的多输出状态机时采用下面的风格举例,说明如下:,北京航空航天大学 夏宇闻 编写,表示方法之三(续),module fsm(Clock,Reset,A,K2,K1);input Clock,Reset,A;output K2,K1;reg K2,K1;reg 1:0 state,nextstate;parameter Idle=2b00,Start=2b01,Stop=2b10,Clear=2b11;,北京航空航天大学 夏宇闻 编写,表示方法之三(续),/-每一个时钟沿产生一次可能的状态变化-always(posedge Clock)begin if(!Reset)state=Idle;else state=nextstate;end/-,北京航空航天大学 夏宇闻 编写,表示方法之三(续),/-产生下一状态的组合逻辑-always(state or A)case(state)Idle:if(A)nextstate=Start;else nextstate=Idle;Start:if(!A)nextstate=Stop;else nextstate=Start;Stop:if(A)nextstate=Clear;else nextstate=Stop;Clear:if(!A)nextstate=Idle;else nextstate=Clear;default:nextstate=2bxx;endcase,北京航空航天大学 夏宇闻 编写,表示方法之三(续),/-产生输出K1的组合逻辑-always(state or Reset or A)if(!Reset)K1=0;else if(state=Clear/-endmodule,北京航空航天大学 夏宇闻 编写,表示方法之四用输出指定的码表示状态的状态机,方法四采用了另一种方法:直接把状态码定义为输出。也就是把状态码的指定与状态机控制的输出联系起来,把状态的变化直接用作输出,这样做可以提高输出信号的开关速度并节省电路器件。这种设计方法常用在高速状态机中。建议同学们在设计高速状态机时采用方法四的风格。例中state3 和state0分别表示前面两个例子中的输出K2和K1。,北京航空航天大学 夏宇闻 编写,表示方法之四(续),module fsm(Clock,Reset,A,K2,K1,state);input Clock,Reset,A;output K2,K1;output 4:0 state;reg 4:0 state;assign K2=state4;/把状态变量的最高位用作输出K2assign K1=state0;/把状态变量的最低位用作输出K1,北京航空航天大学 夏宇闻 编写,表示方法之四(续),parameter/-output coded state assignment-/-K2_i_j_n_K1 Idle=5b0_0_0_0_0,Start=5b0_0_0_1_0,Stop=5b0_0_1_0_0,StopToClear=5b1_1_0_0_0,Clear=5b0_1_0_1_0,ClearToIdle=5b0_0_1_1_1;,北京航空航天大学 夏宇闻 编写,表示方法之四(续),always(posedge Clock)if(!Reset)begin state=Idle;end else case(state)Idle:if(A)state=Start;else state=Idle;Start:if(!A)state=Stop;else state=Start;,北京航空航天大学 夏宇闻 编写,表示方法之四(续),Stop:if(A)state=StopToClear;else state=Stop;StopToClear:state=Clear;Clear:if(!A)state=ClearToIdle;else state=Clear;ClearToIdle:state=Idle;default:state=Idle;endcaseendmodule,北京航空航天大学 夏宇闻 编写,状态机的测试,上面四个例子是同一个状态机的四种不同的Verilog HDL模型,它们都是可综合的,在设计复杂程度不同的状态机时有它们各自的优势。如用不同的综合器对这四个例子进行综合,综合出的逻辑电路可能会有些不同,但逻辑功能是相同的。下面列出测试这些不同风格状态机的测试模块,北京航空航天大学 夏宇闻 编写,状态机的测试模块,timescale 1ns/1nsmodule t;reg a;reg clock,rst;wire k2,k1;initial/initial常用于仿真时信号的给出。begin a=0;rst=1;/给复位信号变量赋初始值 clock=0;/给时钟变量赋初始值#22 rst=0;/使复位信号有效#133 rst=1;/经过一个多周期后使复位信号无效 end,北京航空航天大学 夏宇闻 编写,状态机的测试模块,always#50 clock=clock;/产生周期性的时钟always(posedge clock)/在每次时钟正跳变沿时刻产生不同的a begin#30 a=$random%2;/每次a是 0还是1是随机的。#(3*50+12);/a 的值维持一段时间 endinitial begin#100000$stop;end/系统任务,暂停仿真以便观察仿真波形。/-调用被测试模块t.m-fsm m(.Clock(clock),.Reset(rst),.A(a),.K2(k2),.K1(k1);endmodule,北京航空航天大学 夏宇闻 编写,状态机设计的总结:,有限状态机设计的一般步骤:1)逻辑抽象,得出状态转换图 2)状态化简 3)状态分配 在触发器资源丰富的FPGA或ASIC设计中采用独热编码(one-hot-coding)既可以使电路性能得到保证又可充分利用其触发器数量多的优势,也可以采取输出编码的状态指定来简化电路结构,并提高状态机的运行速度。4)选定触发器的类型并求出状态方程、驱动方程和输出方程。5)按照方程得出逻辑图,北京航空航天大学 夏宇闻 编写,状态机设计的总结:,用Verilog HDL来描述有限状态机,可以充分发挥硬件描述语言的抽象建模能力,使用always块语句和case(if)等条件语句及赋值语句即可方便地实现。具体的逻辑化简及逻辑电路到触发器映射均可由计算机自动完成,上述设计步骤中的第2步及4、5步不再需要很多的人为干预,使电路设计工作得到简化,效率也有很大的提高。,

    注意事项

    本文(Verilog有限状态机FSM.ppt)为本站会员(laozhun)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开