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

输入序列连续的序列检测

https://www.nowcoder.com/practice/d65c2204fae944d2a6d9a3b32aa37b39

//移位寄存器 a_tem <= {a_tem[6:0],a};
// 状态机 提前预设parameter
 `timescale 1ns/1ns
module sequence_detect(
	input clk,
	input rst_n,
	input a,
	output reg match
	);
	reg [7:0]a_tem;
	always@(posedge clk or negedge rst_n)begin
	if(!rst_n)
	a_tem<=0;
	else 
	a_tem<={a_tem[6:0],a};
	end
	always@(posedge clk or negedge rst_n)begin
	if(!rst_n)
	match<=0;
	else if(a_tem==8'b01110001)
	match<=1;
	else
	match<=0;
	end
// 	parameter idle=0,zero=1,one=9,two=2, three=3, four=4,five=5,six=6,seven=7,eight=8;
// 	reg [3:0]state;
// 	reg [3:0]next_state;
// always@(posedge clk or negedge rst_n)begin
// if(!rst_n)
// state<=idle;
// else 
// state<=next_state;
// end
//   always@(*)begin
//   case(state)
//   idle:next_state=a?idle:zero;
//   zero:next_state=a?one:idle;
//   one:next_state=a?two:idle;
//   two:next_state=a?three:idle;
//   three:next_state=a?idle:four;
//   four:next_state=a?idle:five;
//   five:next_state=a?idle:six;
//   six:next_state=a?seven:idle;
//   seven:next_state=a?eight:idle;
//   eight:next_state=a?zero:idle;
//   default:next_state=idle;
//   endcase
//   end
//   always@(posedge clk or negedge rst_n)begin
// if(!rst_n)
// match<=1'b0;
// else 
// match<=state==seven;
// end
endmodule

全部评论

相关推荐

10-09 09:39
门头沟学院 C++
HHHHaos:这也太虚了,工资就一半是真的
点赞 评论 收藏
分享
周述安:这都能聊这么多。别人要是骂我,我就会说你怎么骂人?他要是继续骂我,我就把评论删了。
点赞 评论 收藏
分享
点赞 收藏 评论
分享
牛客网
牛客企业服务