题目描述:编写一个模块,输入一个64比特的比特流,识别匹配出101101的最后的位置,并输出位置信息。
思路:移位比较的思路进行比较,count计数输出位置信息;
module top(
input clk,
input rstn,
input valid,
input din,
output done,
output [5:0] pos
);
reg [5:0] shift_reg;
reg [5:0] cnt;
reg [5:0] pos_r;
reg done_r;
always @(posedge clk or negedge rstn) begin
if(!rstn) begin
cnt<='b0;
end
else if(valid) begin
if(&cnt)
cnt<='b0;
else
cnt<=cnt+1'b1;
end
end
always @(posedge clk or negedge rstn) begin
if(!rstn) begin
shift_reg<='b0;
end
else if(valid) begin
shift_reg<={shift_reg[4:0],din};
end
end
always @(*) begin
if(!rstn) begin
pos_r<='b0;
end
else if(shift_reg==6'b101001) begin
pos_r<=cnt-6;
end
end
assign pos=pos_r;
always @(posedge clk or negedge rstn) begin
if(!rstn) begin
done_r<='b0;
end
else if(&cnt && valid) begin
done_r<=cnt;
end
end
assign done_r=done;
endmodule