题解 | #不重叠序列检测#

不重叠序列检测

http://www.nowcoder.com/practice/9f91a38c74164f8dbdc5f953edcc49cc

`timescale 1ns/1ns
module sequence_detect(
    input clk,
    input rst_n,
    input data,
    output reg match,
    output reg not_match
    );
    reg [3:0] curr_state;
    reg [3:0] next_state;
    always @ (posedge clk, negedge rst_n)begin
        if (~rst_n)begin
        curr_state<=4'd0;
        end
        else begin
            curr_state<=next_state;
        end
    end
    
    always @ (*)begin
        case(curr_state)
            4'd0:next_state=(data==1'b1)?4'd7:4'd1;
            
            4'd1:next_state=(data==1'b1)?4'd2:4'd8;
            4'd2:next_state=(data==1'b1)?4'd3:4'd9;
            4'd3:next_state=(data==1'b1)?4'd4:4'd10;
            4'd4:next_state=(data==1'b1)?4'd11:4'd5;
            4'd5:next_state=(data==1'b1)?4'd12:4'd6;
            
            4'd6:next_state=(data==1'b1)?4'd0:4'd1;
            
            4'd7:next_state=4'd8;
            4'd8:next_state=4'd9;
            4'd9:next_state=4'd10;
            4'd10:next_state=4'd11;
            4'd11:next_state=4'd12;
            
            4'd12:next_state=(data==1'b1)?4'd7:4'd1;
            default:next_state=4'd0;
        endcase
    end
    always @ (posedge clk, negedge rst_n)begin
        if (~rst_n)begin
            match <= 1'b0;
            not_match<= 1'b0;
        end
        else begin
            match<=(next_state==4'd6);
            not_match<= (next_state==4'd12);
        end
    end    

endmodule
全部评论

相关推荐

这算盘打的
程序员小白条:都这样的,都是潜规则,你自己说可以实习一年就行了,实习可以随便跑路的
点赞 评论 收藏
分享
07-02 22:46
门头沟学院 Java
码农索隆:hr:“管你投没投,先挂了再说”
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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