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

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

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

全部评论

相关推荐

04-18 15:58
已编辑
门头沟学院 设计
kaoyu:这一看就不是计算机的,怎么还有个排斥洗碗?
点赞 评论 收藏
分享
05-03 12:45
西南大学 Java
nsnzkv:你这项目写的内容太多了,说实话都是在给自己挖坑,就算简历过了,后面面试也难受
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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