HDLBits 系列(33)Sequence Recognition with Mealy FSM

举报
李锐博恩 发表于 2021/07/15 04:01:08 2021/07/15
【摘要】 目录 原题复现 状态转移图 我的设计 测试 原题复现 原题重现: Implement a Mealy-type finite state machine that recognizes the sequence "101" on an input signal named x. Your FSM should have an output signal,...

目录

原题复现

状态转移图

我的设计

测试


原题复现

原题重现:

Implement a Mealy-type finite state machine that recognizes the sequence "101" on an input signal named x. Your FSM should have an output signal, z, that is asserted to logic-1 when the "101" sequence is detected. Your FSM should also have an active-low asynchronous reset. You may only have 3 states in your state machine. Your FSM should recognize overlapping sequences.

翻译一下:

实现一个Mealy型有限状态机,该机可以识别名为x的输入信号上的序列“ 101”。 您的FSM应该有一个输出信号z,当检测到“ 101”序列时,该信号将置为逻辑1。 您的FSM还应该具有低电平有效的异步复位。 您的状态机中可能只有3个状态。 您的FSM应该识别重叠的序列。

状态转移图

这是一个最普遍的题目,要求用Mealy状态机来实现序列“101”重叠检测,我们可以先画出状态转移图:

自我为是天衣无缝了呀。给出我的设计:

我的设计


  
  1. module top_module (
  2. input clk,
  3. input aresetn, // Asynchronous active-low reset
  4. input x,
  5. output z );
  6. localparam S0 = 0, S1 = 1, S2 = 2;
  7. reg [1:0] state, next_state;
  8. always@(*) begin
  9. case(state)
  10. S0: begin
  11. if(x) next_state = S1;
  12. else next_state = S0;
  13. end
  14. S1: begin
  15. if(~x) next_state = S2;
  16. else next_state = S1;
  17. end
  18. S2: begin
  19. if(x) next_state = S1;
  20. else next_state = S0;
  21. end
  22. default: begin
  23. next_state = S0;
  24. end
  25. endcase
  26. end
  27. always@(posedge clk or negedge aresetn) begin
  28. if(~aresetn) state <= S0;
  29. else state <= next_state;
  30. end
  31. assign z = (state == S2 && x == 1) ? 1 : 0;
  32. endmodule

测试

测试一下:

 

成功!

 

文章来源: reborn.blog.csdn.net,作者:李锐博恩,版权归原作者所有,如需转载,请联系作者。

原文链接:reborn.blog.csdn.net/article/details/103453737

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。