引言
序列检测器用于检测输入数据码流中是否存在特定序列,如果存在则输出1,不存在则输出0。本博文主要介绍在笔试面试题中比较常见的序列检测器的Verilog实现,检测输入数据码流中是否存在10010序列,存在则结果输出为1,不存在则结果输出为0。本文主要介绍序列检测器的两种实现方案,一种是基于状态机的实现方案,一种是基于移位寄存比较的方案。
1、状态机实现方案
在对一个序列检测器进行RTL描述之前,首先需要将这个序列检测器的状态转移图搞清楚并画出来,然后根据状态转移图来进行RTL描述,本文所描述的状态转移图如下图所示。
根据如上图所示的状态转移图,我们采用两段式状态机进行了RTL描述,代码如下
seq_detector.v:
//检测输入序列中是否存在10010序列,存在输出1,不存在输出0
module seq_detector (
//system signals
input clk ,
input rst_n ,
input wire seq_binary ,
output wire result