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

含有无关项的序列检测

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

`timescale 1ns/1ns
module sequence_detect(
	input clk,
	input rst_n,
	input a,
	output reg match
	);
    reg [8:0] val;
    
    always @(posedge clk or negedge rst_n) begin
        if (!rst_n) begin
            val <= 9'b0;
        end else begin
            val <= {val[7:0],a};
        end
    end
    
    always @(posedge clk or negedge rst_n) begin
        if (!rst_n) begin
            match <= 1'b0;
        end else begin
            casex (val)
                9'b011xxx110 : match <= 1'b1;
                default : match <= 1'b0;
            endcase
        end
    end
  
endmodule
全部评论
我觉得还可以更加严谨一些,需要判断是否已经有9bit数据。如果假设我需要检测9‘b0_0000_0000,上述代码会在第一位输入0时就判断match,这个是不符合设计本意的,因为剩余的8位是初始化的0,而非输入的0。
1 回复 分享
发布于 2023-06-12 21:49 美国
if (!rst_n) val <= 9'b0; 可以考虑这段初始化值的高位避免与待测序列第一位相同。 if (!rst_n) val <= {1'b1,8'b0};
点赞 回复 分享
发布于 2023-09-09 14:04 美国
同想法
点赞 回复 分享
发布于 2023-08-07 22:46 江苏
这个才是对的
点赞 回复 分享
发布于 2022-07-27 16:03

相关推荐

你背过凌晨4点的八股文么:简历挂了的话会是流程终止,像我一样
点赞 评论 收藏
分享
评论
66
4
分享

创作者周榜

更多
牛客网
牛客企业服务