网站大量收购独家精品文档,联系QQ:2885784924

Verilog有限状态机FSM汇.ppt

  1. 1、本文档共36页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Verilog有限状态机FSM汇

有限状态机FSM 为什么要设计有限状态机? 如果能严格以时钟跳变沿为前提,按排好时时序,来操作逻辑系统中每一个开关Si,则系统中数据的流动和处理会按同一时钟节拍有序地进行,可以控制冒险和竞争现象对逻辑运算的破坏,时延问题就能有效地加以解决。 利用同步有限状态机就能产生复杂的以时钟跳变沿为前提的同步时序逻辑,并提供操作逻辑系统的开关阵列所需要的复杂控制时序(具有信号互锁和先后次序等要求的)。 为什么要设计有限状态机? 如果我们能设计这样一个电路: 1)能记住自己目前所处的状态 ; 2)状态的变化只可能在同一个时钟的跳变沿时刻发生,而不可能发生在任意时刻; 3)在时钟跳变沿时刻,如输入条件满足,则进入下一状态,并记住自己目前所处的状态,否则仍保留原来的状态; 4)在进入不同的状态时刻,对系统的开关阵列做开启或关闭的操作。 为什么要设计有限状态机? 为什么要设计有限状态机? 有了以上电路,我们就不难设计出复杂的控制序列来操纵数字系统的控制开关阵列。能达到以上要求的电路就是时序和组合电路互相结合的产物:同步有限状态机和由状态和时钟共同控制的开关逻辑阵列。 我们只要掌握有限状态机的基本设计方法,加上对基本电路的掌握,再加上对数据处理的过程的细致了解,我们就可以避免由于逻辑器件和布线延迟产生的冒险竞争现象所造成的破坏,设计出符合要求的复杂数字逻辑系统。 数字系统的构成示意图 同步有限状态机的设计 什么是有限状态机( FSM ) FSM的种类和不同点 设计举例 什么是有限状态机? - 有限状态机是由寄存器组和组合逻辑构成的 硬件时序电路; - 其状态(即由寄存器组的1和0的组合状态所 构成的有限个状态)只能在同一时钟跳变沿 的 情况下才能从一个状态转向另一个状态; - 究竟转向哪一状态不但取决于各个输入值, 还取决于当前状态。 - 状态机可用于产生在时钟跳变沿时刻开关的 复杂的控制逻辑,是数字逻辑的控制核心。 Mealy 状态机 下一个状态 = F(当前状态,输入信号); 输出信号 = G(当前状态,输入信号); Moor 状态机 下一个状态 = F(当前状态,输入信号) 输出信号 = G(当前状态); 带流水线输出的 Mealy 状态机 下一个状态 = F(当前状态,输入信号); 输出信号 = G(当前状态,输入信号); 简单的状态机设计举例 状态转移图表示 RTL级可综合的 Verilog 模块表示 有限状态机的图形表示 图形表示:状态、转移、条件和逻辑开关 有限状态机的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 = 2’b00, Start = 2’b01, Stop = 2’b10, Clear = 2’b11; //定义状态变量参数值 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 表示方法之一(续)

文档评论(0)

liwenhua11 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档