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

状态机-非重叠的序列检测

http://www.nowcoder.com/practice/2e35c5c0798249aaa2e1044dbaf218f2

五个状态六个状态应该都行吧,本菜鸟喜欢写全状态以免出错😥请各位老哥指点
`timescale 1ns/1ns

module sequence_test1(
    input wire clk  ,
    input wire rst  ,
    input wire data ,
    output reg flag
);

    parameter IDLE=3'b000,S1=3'b001,S2=3'b010,S3=3'b011,
    S4=3'b100,S5=3'b101;

    reg [2:0] sta,nsta;
    always@(posedge clk or negedge rst)
    if(!rst)
        sta <= IDLE;
    else
        sta <= nsta;
    
    always@(*)begin
        case(sta)
        IDLE:nsta=data?S1:IDLE;
        S1:nsta=!data?S2:S1;
        S2:nsta=data?S3:IDLE;
        S3:nsta=data?S4:S2;
        S4:nsta=data?S5:S2;
        S5:nsta=data?S1:IDLE;
        default: nsta = IDLE;
        endcase
    end

    always@(posedge clk or negedge rst)
    if(!rst)
        flag <= 0;
    else if(sta==S4&&data)
        flag <= 1;
    else
        flag <= 0;


endmodule

全部评论

相关推荐

点赞 评论 收藏
分享
03-10 21:11
武汉大学 运营
学不懂的那种:先天考公圣体
点赞 评论 收藏
分享
中南民族大学的一名中南民族大学的学生:不敢睁开眼 希望是我的幻觉
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务