题解 | #输入序列连续的序列检测#
输入序列连续的序列检测
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
