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

EDA第8章_有限状态机设计技术解说.ppt

  1. 1、本文档共26页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第8章 有限状态机设计技术 8.1.2 状态机的一般结构 8.1.2 状态机的一般结构 8.1.2 状态机的一般结构 8.1.2 状态机的一般结构 8.1.3 初始控制与表述 打开“状态机萃取”开关 参数的定义 状态变量定义 8.2 Moore型状态机及其设计 8.2 Moore型状态机及其设计 8.2 Moore型状态机及其设计 8.2 Moore型状态机及其设计 8.2 Moore型状态机及其设计 8.2 Moore型状态机及其设计 8.2 Moore型状态机及其设计 8.3 Mealy型状态机设计 设计举例:检测序* * 有限状态机的简介 基本概念 有限状态机用来实现一个数字电路设计的控制部分, 与CPU 的功能类似,综合了时序逻辑和组合逻辑电路。 有限状态机与CPU功能比较 控制功能的实现 CPU通过操作指令和硬件操作单元。 有限状态机通过状态转移。 有限状态机适用于可编程逻辑器件。通过恰当的Verilog语言描述和EDA工具综合,可以生成性能优越的有限状态机,在执行时间、运行速度和占用资源等方面优于CPU实现的设计方案。 有限状态机分类 Moore型有限状态机和Mealy型有限状态机。 Moore型有限状态机 次态 逻辑 状态 寄存器 输出 逻辑 输入 次态 现态 输出 时钟 复位 Moore型:输出信号仅与当前状态有关。 有限状态机的简介 Mealy型有限状态机 Mealy型:输出信号不仅与当前状态有关,还与所有 输入信号有关。 次态 逻辑 状态 寄存器 输出 逻辑 输入 次态 现态 输出 时钟 复位 有限状态机的简介 有限状态机(FSM,Finite State Machine)是时序电路设计中经常采用的一种方式,尤其适于设计数字系统的控制模块。用Verilog的case、if-else等语句能很好地描述基于状态机的设计。 1. 说明部分 状态转换变量的定义和所有可能状态的说明 2005版 参数说明关键字 parameter 2. 主控时序过程:状态机的运转和状态转换的过程 3. 主控组合过程 :根据当前状态和外部的信号发出控制信号,同时确定下一状态的走向 4. 辅助过程:配合状态机工作的组合过程和时序过程。 说明部分 主控时序过程 主控组合过程 用状态机设计一个二进制序列检测器,其功能是检测一个4位二进制序列“1111”,即输入序列中如果有4个或4个以上连续的“1”出现,输出为1,其它情况下,输出为0。 有限状态机(FSM)设计举例 输出z:000 000 000 000 000 100 001 110 000 其输入输出如下所示: 输入x:000 101 010 110 111 101 111 110 101 有限状态机(FSM)设计 “1111”序列检测器状态转换图 “1111”序列检测器的Verilog描述 module fsm_seq(x,z,clk,reset,state); input x,clk,reset; output z; output[2:0] state; reg z; parameter s0=0,s1=1,s2=2,s3=3,s4=4; reg [2:0] current_state,next_state; assign state=current_state; always @(posedge clk or posedge reset) begin if(reset) current_state=s0; else current_state=next_state; end always @(current_state or x) begin casex(current_state) “1111”序列检测器的Verilog描述 s0: begin if(x==0) begin next_state=s0; z=0; end else begin next_state=s1; z=0; end end s1: begin if(x==0) begin next_state=s0; z=0; end else begin next_state=s2; z=0; end end s2: begin if(x==0) begin next_state=s0; z=0; end

文档评论(0)

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

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

1亿VIP精品文档

相关文档