功能描述
通过Verilog实现数据流中特定序列的检测,输出发现指定序列标志:从输出数据流中检测序列“10010”.
检测状态设计
Verilog代码实现
module SEQ_CHK(
input clk ,
input rst_n,
input seq ,
output hit
);
//定义设计中使用到的参数
parameter DLY = 1;
parameter IDLE = 3'b000,
A = 3'b001,
B = 3'b010,
C = 3'b011,
D = 3'b100,
E = 3'b101;
//状态寄存器定义
reg[2:0] state;
//在数据流中检测到序列"10010"输出检测命中标志
assign hit = (state == D && seq == 1'b0) ? 1'b1 : 1'b0;
//数据流检测序列状态变化
always@(posedge clk or negedge rst_n)begin
if(rst_n == 1'b0)begin
state <= #DLY IDLE;
end
else begin
case(state)
IDLE:begin
if(seq =