题解 | #状态机-非重叠的序列检测#

这个因为是非重叠序列的检测,所以检测过的bit就不能重新检测了,所以所有的次状态都是返回s0
没有问题

`timescale 1ns/1ns

module sequence_test1(
    input wire clk  ,
    input wire rst  ,
    input wire data ,
    output reg flag
);
//*************code***********//
    
    parameter [4:0]s0 = 'b0;
    parameter [4:0]s1 = 'b1;
    parameter [4:0]s2 = 'b10;
    parameter [4:0]s3 = 'b101;
    parameter [4:0]s4 = 'b1011;
    parameter [4:0]s5 = 'b10111;   
    reg [4:0] cur_st,next_st;   
    always @(posedge clk,negedge rst)
        begin
            if(!rst)
                begin
                    cur_st <= s0;
                    
                end
            else
                begin
                    cur_st <= next_st;

                end
        end
    
    always @(*)
        begin
            if(!rst)
                begin
                    next_st <= s0;
                    flag <= 0;
                end
            else
                begin
                    case(cur_st)
                        s0 : next_st <= data?s1:s0;
                        s1 : next_st <= data?s0:s2;
                        s2 : next_st <= data?s3:s0;
                        s3 : next_st <= data?s4:s0;
                        s4 : next_st <= data?s5:s0;
                        s5 : next_st <= data?s1:s0;
                        default : next_st <= s0;
            
                    endcase
                    if (cur_st == s5)
                        flag <= 1;
                    else
                        flag <= 0;
                end
        end    


//*************code***********//
endmodule
全部评论

相关推荐

2025-12-18 22:04
已编辑
杭州电子科技大学 Java
程序员花海:技能放最后 另外这两个项目写的太简单了 没有业务没有技术栈 这种简历连HR都过不了
实习简历求拷打
点赞 评论 收藏
分享
2025-12-31 14:31
湖南科技大学 Web前端
是阿亮吖:一个是这个时间招人比较少,另一个是沟通太少了。六十多份太养生了,最起码沟通个五六百份吧
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务