类有限状态机.docxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
数字系统有两大类有限状态机(Finite State Machine , FSM): Moore状态机 和Mealy状态机。 Moore状态机 其最大特点是输出只由当前状态确定,与输入无关。Moore状态机的状态图中 的每一个状态都包含一个输出信号。这是一个典型的Moore状态机的状态跳转图, x、y、z是输入,a、b、c是输出。 elpcfonscom电 elpcfonscom电3安抚安 Mealy状态机 它的输出不仅与当前状态有关系,而且与它的输入也有关系,因而在状态图中 每条转移边需要包含输入和输出的信息。 状态编码 数字逻辑系统状态机设计中常见的编码方式有:二进制码(Binary码)、格雷 码(Gray码)、独热码(Onehot码)以及二一^进制码(BCD码)。 格雷码的特点:相邻的两个码组之间仅有一位不同。 普通二进制码与格雷码之间可以相互转换。 二进制码转换为格雷码:从最右边一位起,一次与左边一位 异或”,作为对应 格雷码该位的值,最左边的一位不变(相当于最左边是0)。 格雷码转换为二进制码:从左边第二位起,将每一位与左边一位解码后的值异 或,作为该解码后的值(最左边的一位依然不变)。 独热码又分为独热1码和独热0码,是一种特殊的二进制编码方式。当任何一 种状态有且仅有一个1时,就是独热1码,相反任何一种状态有且仅有一个0时, 就是独热0码。 状态机的描述 状态机有三种描述方式:一段式状态机、两段式状态机、三段式状态机。下面 就用一个小例子来看看三种方式是如何实现的。 一段式状态机 当把整个状态机卸载一个always模块中,并且这个模块既包含状态转移,又 含有组合逻辑输入/输出时,称为一段式状态机。不推荐采用这种状态机,因为从代 码风格方面来讲,一般都会要求把组合逻辑和时序逻辑分开;从代码维护和升级来 说,组合逻辑和书序逻辑混合在一起不利于代码维护和修改,也不利于约束。 〃一段式状态机来实现:在异步复位信号的控制下,一段式状态机进入IDLE 〃状态,q_sig4被复位,一旦sigl或者sig2有效,状态机进入WAIT状态,如 果 //sigl和sig2同时有效,那么状态机进入DONE状态, 〃如果sig4还有效,那么q_sig4置位,同时状态机进入IDLE状态。 5. module one_seg_fsm(clk,reset,sig1,sig2,sig3,q_sig4,q_sm_state); 〃数据声明部分 input clk,reset,sig1,sig2,sig3; 9. output reg q_sig4; output reg [1:0] q_sm_state; 12. 13. 〃参数声明 14. parameter IDLE =2b00; 15. parameter WAIT =2b01; parameter 17. DONE =2b10; 18. 〃状态跳转逻辑程序设计 19. always @(posedge clk or posedge reset) 20. begin 21. if(reset) 22. begin 23. q_sig4 = 0; 24. q_sm_state = IDLE; 25. end 26. else 27. begin 28. case(q_sm_state) 29. IDLE: begin 30. if(sig1 || sig2) 31. begin 32. q_sm_state = WAIT; 33. q_sig4 = 1b0; 34. end 35. else 36. begin 37. q_sm_state = IDLE; 38. q_sig4 = 1b0; 39. end 40. end 41. WAIT: begin 42. if(sig2 sig3) 44. q_sm_state =DONE; 45. q_sig4 =1b0; 46. end 47. else 48. begin 49. q_sm_state =WAIT; 50. q_sig4 =1b0; 51. end 52. end 53. 54. DONE:begin 55. if(sig3) 56. begin 57. q_sm_state =IDLE; 58. q_sig4 =1b1; 59. end 60. else 61. begin 62. q_sm_state =DONE; 63. q_sig4 =1b0; 64. end 65. end 66. 67. default: begin 68. q_sm_state = IDLE; 69. q_sig4 = 0; 70. end 71. endcase 72. end 73. end 74. endmodule 复制代码 两段式状

文档评论(0)

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

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

1亿VIP精品文档

相关文档