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

状态机-重叠序列检测

http://www.nowcoder.com/practice/10be91c03f5a412cb26f67dbd24020a9

````timescale 1ns/1ns

module sequence_test2(
	input wire clk  ,
	input wire rst  ,
	input wire data ,
	output reg flag
);
//*************code***********//
    //first way:Mooro
   localparam IDLE=0, S1=1, S10=2, S101=3, S1011=4;
    reg [2:0] state, n_state;
    always@(posedge clk or negedge rst)
        if(!rst) state <= IDLE;
        else state <= n_state;
    always@(*)
        case(state)
            IDLE:n_state = data? S1:IDLE;
            S1:  n_state = data? S1:S10;
            S10: n_state = data? S101:IDLE;
            S101:n_state = data? S1011:S10;
            S1011:n_state = data? S1:S10;
        endcase
    always@(posedge clk or negedge rst)
        if(!rst) flag <= 0;
    else if(state==S1011) flag <= 1;
    else flag <= 0;
    //second way:移位寄存器
    reg [3:0] val;
    always@(posedge clk or negedge rst)
        if(!rst) val <= 4'b0; 
        else val <= {val[2:0], data};
    always@(posedge clk or negedge rst)
        if(!rst) flag <= 0;
    else if(val == 4'b1011) flag <= 1;
    else flag <= 0;
    
//*************code***********//
endmodule
全部评论

相关推荐

lingo12:1.最好加个业务项目,大部分面试官工作以后会更偏重业务 2.实习部分描述一般般,可能hr看到会觉得你产出不够不给你过简历 3.蓝桥杯这些大部分人都有的,不如不写,反而减分项。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务