题解 | #含有无关项的序列检测#

含有无关项的序列检测

http://www.nowcoder.com/practice/cba67d06d6834a5d9b93e1087b56c8d8

含有无关项序列检测和普通序列检测采用一样的方法。一般有两种办法,一种是利用移位寄存器来实现,这种方法比较简单。另一种是利用状态机来实现,难点在于状态转移图的绘制,下面的状态机对于重复的序列无法检测到。下面使用状态机来实现,

首先画出状态转移图

alt

然后根据状态转移图,写出三段式状态机,代码如下。

`timescale 1ns/1ns
module sequence_detect(
	input clk,
	input rst_n,
	input a,
	output reg match
	);
parameter    S0 = 4'd0,
                S1 = 4'd1,
                S2 = 4'd2,
                S3 = 4'd3,
                S4 = 4'd4,
                S5 = 4'd5,
                S6 = 4'd6,
                S7 = 4'd7,
                S8 = 4'd8,
                S9 = 4'd9;
    
    reg [3:0] curr_state,next_state;
    //状态跳转
    always@(posedge clk or negedge rst_n)begin
        if(rst_n == 0)
            curr_state <= S0;
        else
            curr_state <= next_state;
    end
    //状态转移逻辑
    always@(*)begin
        case(curr_state)
            S0:next_state = a ? S0 : S1 ;
            S1:next_state = a ? S2 : S1 ;
            S2:next_state = a ? S3 : S1 ;
            S3:next_state = S4 ;
            S4:next_state = S5 ;
            S5:next_state = S6 ;
            S6:next_state = a ? S7 : S1 ;
            S7:next_state = a ? S8 : S1 ;
            S8:next_state = a ? S0 : S9 ;
            S9:next_state = a ? S0 : S1 ;
            default:next_state = S0;
        endcase
    end
    //输出,使用时序将match延后一个周期,不延后可以用assign  match = (curr_state == S9);
    //注意,使用assign需将match类型改为wire。
    always@(posedge clk or negedge rst_n) begin
        if(rst_n == 0)
            match <= 0;
        else
            match = (curr_state == S9);
    end
endmodule
全部评论
不完全正确,对于x的考虑不全面,假设a进入顺序为011011110110,match应该有两个时钟信号为1,但是该答案仿真结果仅为一个时钟,
3 回复 分享
发布于 2023-04-20 13:36 山东
s9状态下a=1,不应该是01,跳转到S2吗????
点赞 回复 分享
发布于 2023-05-17 17:12 陕西
为什么0状态全部回到S1,1状态全部回到S0
点赞 回复 分享
发布于 2023-04-11 21:34 陕西

相关推荐

06-25 21:00
门头沟学院 Java
多拆解背记一下当前的高频场景面试题,结合自己的项目经历去作答,面试通过率原来真的不会低!
牛客965593684号:小公司不就是这样的吗,面试要么是点击就送,要么就是往死里拷打,没有一个统一的标准。这个不能代表所有公司
点赞 评论 收藏
分享
06-12 16:23
已编辑
小米_软件开发(准入职员工)
点赞 评论 收藏
分享
点赞 评论 收藏
分享
评论
1
收藏
分享

创作者周榜

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