题解 | #输入序列不连续的序列检测#

输入序列不连续的序列检测

https://www.nowcoder.com/practice/f96d0e94ec604592b502b0f1800ed8aa

module sequence_detect(
	input clk,
	input rst_n,
	input data,
	input data_valid,
	output wire match
	);

    parameter s0 = 0, s1 = 1, s2 = 2, s3 = 3, s4 = 4;
    reg [2:0] state, nsate;

    always @(posedge clk or negedge rst_n) state <= !rst_n ? s0 : nsate;

    always @(*) begin
        case(state)
            s0: nsate = data == 0 && data_valid == 1 ? s1 : s0;
            s1: nsate = data == 1 && data_valid == 1 ? s2 : s1;
            s2: nsate = data == 1 && data_valid == 1 ? s3 : s1;
            s3: nsate = data == 0 && data_valid == 1 ? s4 : s0;
            s4: nsate = data == 0 && data_valid == 1 ? s1 : s2;
            default: nsate = s0;
        endcase
    end

    // always @(posedge clk or negedge rst_n) begin
    //     if (!rst_n) begin
    //         match <= 0;
    //     end else begin
    //         match <= state == s4;
    //     end
    // end

	assign match = state == s4;

endmodule

全部评论

相关推荐

不愿透露姓名的神秘牛友
昨天 11:30
点赞 评论 收藏
分享
舂锋:不能投什么岗都用一份简历,一般都是要看企业的岗位需求来写职业技能或者是项目经历,跟岗位相关的就写多一点。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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