电子电路设计训练(北航)2014 Verilog 06 有限状态机.pptVIP

电子电路设计训练(北航)2014 Verilog 06 有限状态机.ppt

  1. 1、本文档共52页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
提纲 6.1 基本概念 6.2 简单的有限状态机设计 状态转移图表示 RTL级可综合的Verilog模块表示 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 = Clear; else state = Stop; Clear: if (!A | !Reset) state = Zero; else state = Clear; Zero: if (A) state = Start; else state = Idle; default: state = Idle; endcase endmodule * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 6.2 简单的有限状态机设计 有限状态机的Verilog描述:方法四+(另一种方法) 各状态的K2和K1取值 01 00 00 00 10 * 6.2 简单的有限状态机设计 有限状态机的Verilog描述:方法四(另一种方法) parameter //-------output coded state assignment //-------- K2_i_j_K1 Idle = 5b0_0_0_0, Start = 5b0_0_1_0, Stop = 5b0_1_1_0, Clear = 5b1_1_0_0, ClearToIdle = 5b0_0_0_1; * 6.2 简单的有限状态机设计 小结: 上面四个例子是同一个状态机的四种不同的Verilog HDL模型,它们都是可综合的,在设计复杂程度不同的状态机时有它们各自的优势。如用不同的综合器对这四个例子进行综合,综合出的逻辑电路可能会有些不同,但逻辑功能是相同的。 * 6.3 状态机的测试 状态机的测试模块 `timescale 1ns/1ns module t; reg a; reg clock,rst; wire k2,k1; initial // initial常用于仿真时信号的给出。 begin a=0; rst = 1; //给复位信号变量赋初始值 clock = 0; //给时钟变量赋初始值 #20 rst = 0; //使复位信号有效 #120 rst = 1; //经过一个多周期后使复位信号无效 end ? * 6.3 状态机的测试 状态机的测试模块(续) always #50 clock = ~clock; //产生周期性的时钟 ? always @ (posedge clock) //在每次时钟正跳变沿时刻产生不同的a begin #30 a = {$random}%2; // 每次a是 0还是1是随机的。 #(3*50+12); // a 的值维持一段时间 end initial begin #100000 $stop; end //系统任务,暂停仿真以便观察仿真波形。 ? //----------- 调用被测试模块t.m ---------- fsm m(.Clock(clock), .Reset(rst),.A(a),.K2(k2),.K1(k1)); endmodule * 6.4 状态机设计总结 有限状态机设计的一般步骤: 1.逻辑抽象,得出状态转换图 2.状态化简 3.状态分配 在触发器资源丰富的FPGA或ASIC设计中采用独热编

文档评论(0)

1243595614 + 关注
实名认证
文档贡献者

文档有任何问题,请私信留言,会第一时间解决。

版权声明书
用户编号:7043023136000000

1亿VIP精品文档

相关文档