题解 | #不重叠序列检测#

不重叠序列检测

https://www.nowcoder.com/practice/9f91a38c74164f8dbdc5f953edcc49cc

此题只需要使用2个4bit的位作为状态标识即可,实际上只需12个状态,话不多说,直接上代码与仿真。

`timescale 1ns/1ns
module sequence_detect(
	input clk,
	input rst_n,
	input data,
	output reg match,
	output reg not_match
	);

reg [3:0] state,next_state;
	
always@(*)begin
	case(state)
		0:		next_state = !data ? 1 : 7 ;
		1:		next_state =  data ? 2 : 8 ;
		2:		next_state =  data ? 3 : 9 ;
		3:		next_state =  data ? 4 : 10;
		4:		next_state = !data ? 5 : 11;
		5:		next_state = !data ? 6 : 12;
		6:		next_state = !data ? 1 : 7 ;
        12:     next_state = !data ? 1 : 7 ;
		default:next_state = state + 1;
	endcase
end

always@(posedge clk,negedge rst_n)begin
	if(!rst_n)begin
		state <= 0;
	end
	else begin
		state <= next_state;
	end
end

always@(*)begin
	match = (state==6);
	not_match = (state==12);
end

endmodule

`timescale  1ns / 1ps
module tb_sequence_detect;

// sequence_detect Parameters
parameter PERIOD  = 10;


// sequence_detect Inputs
reg   clk                                  = 0 ;
reg   rst_n                                = 0 ;
reg   data                                 = 0 ;

// sequence_detect Outputs
wire  match                                ;
wire  not_match                            ;


initial
begin
    $dumpfile ("HDL_bit_wave.vcd");
    $dumpvars;
    forever #(PERIOD/2)  clk=~clk;
end

initial
begin
    #(PERIOD*2) rst_n  =  1;
end

sequence_detect  u_sequence_detect (
    .clk                     ( clk         ),
    .rst_n                   ( rst_n       ),
    .data                    ( data        ),

    .match                   ( match       ),
    .not_match               ( not_match   )
);

initial
begin
    #(PERIOD);
    #(PERIOD) data   =  0;
    #(PERIOD) data   =  1;
    #(PERIOD) data   =  1;
    #(PERIOD) data   =  1;
    #(PERIOD) data   =  0;
    #(PERIOD) data   =  0;

    #(PERIOD) data   =  0;
    #(PERIOD) data   =  0;
    #(PERIOD) data   =  1;
    #(PERIOD) data   =  1;
    #(PERIOD) data   =  1;
    #(PERIOD) data   =  0;

    #(PERIOD*4);
    $finish;
end

endmodule

全部评论

相关推荐

点赞 收藏 评论
分享
正在热议
# 牛客帮帮团来啦!有问必答 #
1151896次浏览 17149人参与
# 通信和硬件还有转码的必要吗 #
11208次浏览 101人参与
# OPPO开奖 #
19213次浏览 267人参与
# 和牛牛一起刷题打卡 #
19005次浏览 1635人参与
# 实习与准备秋招该如何平衡 #
203409次浏览 3627人参与
# 大厂无回复,继续等待还是奔赴小厂 #
4974次浏览 30人参与
# 不去互联网可以去金融科技 #
20443次浏览 256人参与
# 通信硬件薪资爆料 #
265943次浏览 2484人参与
# 国企是理工四大天坑的最好选择吗 #
2227次浏览 34人参与
# 互联网公司评价 #
97709次浏览 1280人参与
# 简历无回复,你会继续海投还是优化再投? #
25037次浏览 354人参与
# 0offer是寒冬太冷还是我太菜 #
454891次浏览 5124人参与
# 国企和大厂硬件兄弟怎么选? #
53909次浏览 1012人参与
# 参加过提前批的机械人,你们还参加秋招么 #
14646次浏览 349人参与
# 硬件人的简历怎么写 #
82289次浏览 852人参与
# 面试被问第一学历差时该怎么回答 #
19398次浏览 213人参与
# 你见过最离谱的招聘要求是什么? #
28147次浏览 248人参与
# 学历对求职的影响 #
161248次浏览 1804人参与
# 你收到了团子的OC了吗 #
538761次浏览 6387人参与
# 你已经投递多少份简历了 #
344255次浏览 4963人参与
# 实习生应该准时下班吗 #
96986次浏览 722人参与
# 听劝,我这个简历该怎么改? #
63525次浏览 622人参与
牛客网
牛客企业服务