**
Verilog代码实现序列检测状态机学习记录
Verilog代码实现序列检测状态机学习记录
**
//检测1100_1101
序列检测的核心就是状态机的画图实现,仔细分析各个状态的流向和最后一个状态的判断,如果最后一个状态会重复之前的序列,则回到符合的状态继续检测,否则返回到空闲状态重新检测序列,比如检测八位的1100—1101,第一个状态是空闲状态实际上是检测第一位1,如果为1检测第二位,否则在空闲状态继续检测,只要画出图,基本就完成了六七成。
上面的图片就是序列检测的状态机,照着这个图片写代码就很容易了。
源代码
module sequence_detection(
input i_sys_clk ,
input i_sys_rst ,
input i_data ,
output o_result
);
reg result = 0 ;
reg [3:0] c_st = 0 ;
reg [3:0] n_st = 0 ;
parameter idle = 4'd0 ;
parameter st0 = 4'd1 ;
parameter st1 = 4'd2 ;
parameter st2 = 4'd3 ;
parameter st3 = 4'd4 ;
parameter st4 = 4'd5 ;
parameter