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

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

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

上述有些答案可能在当前的testbanch中成立,但是我觉得下面这个写法可能更好些, data_valid无效时需对缓存区重新赋值,否则可能出现在两次分开的有效值期间满足0110而输出match=1; 另外,初始值赋值0,在输入序列为110的情况下即可输出match=1 `timescale 1ns/1ns module sequence_detect( input clk, input rst_n, input data, input data_valid, output reg match ); reg [3:0] temp;

always@(posedge clk or negedge rst_n) begin
    if (!rst_n)
        temp <=4'b0001;
    else begin
        if (data_valid)
            temp <= {temp[2:0],data};
        else
            temp <=4'b0001;
    end
end
 
always@(temp or data_valid) begin
    if (temp == 4'b0110 & data_valid)
        match = 1;
    else
        match = 0;
end

endmodule

全部评论

相关推荐

大摆哥:刚好要做个聊天软件,直接让你帮他干活了
点赞 评论 收藏
分享
你背过凌晨4点的八股文么:简历挂了的话会是流程终止,像我一样
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务