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

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

http://www.nowcoder.com/practice/2e35c5c0798249aaa2e1044dbaf218f2

`timescale 1ns/1ns

module sequence_test1(
    input wire clk  ,
    input wire rst  ,
    input wire data ,
    output reg flag
);
//*************code***********//
localparam idle = 4'b0000;
localparam s1 = 4'b0001;
localparam s2 = 4'b0010;
localparam s3 = 4'b0100;
localparam s4 = 4'b1000;

reg [3:0] cs,ns;

always @(posedge clk or negedge rst) begin
    if(!rst)    cs <= 4'b0;
    else        cs <= ns;
end

always @(*) begin
    case (cs)
        idle: begin
            if(data)  ns =s1;
            else      ns =idle;      
        end
        s1: begin
            if(data)  ns =s1;
            else      ns =s2;
        end        
        s2: begin
            if(data)  ns =s3;
            else      ns =idle;
        end       
        s3: begin
            if(data)  ns =s4;
            else      ns =s2;
        end
        s4: begin
            if(data)  ns =idle;
            else      ns =s2;
        end       
        default: ns = idle;
    endcase
end

always @(posedge clk or negedge rst) begin
    if(!rst)    flag <= 'b0;
    else if((cs==s4)&&(data==1)) flag<=1'b1;
    //细节决定成败,,忘了加else flag <=0结果出错
    else flag <= 0;
end
//*************code***********//
endmodule
全部评论

相关推荐

10-14 21:00
门头沟学院 Java
吃花椒的狸猫:这个人说的倒是实话,特别是小公司,一个实习生哪里来的那么多要求
点赞 评论 收藏
分享
10-09 17:17
已编辑
门头沟学院 Java
活泼的代码渣渣在泡池...:同学你好,我也是学院本,后天要面这个亚信科技,是实习,请问问题都啥样呀,我项目就做了网上的,这是第一次面试
投递多益网络等公司10个岗位
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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