设计一个序列检测器,检测序列1101,检测到输出1,否则输出0.
用状态机来实现序列检测器是非常合适的,下面先给出状态转移图,之后用Moore状态机来实现这个序列检测器:
(注:此处所画为无重叠检测,有重叠检测只需要改变最后一个状态即可,例如本例里,有重叠检测,如果S4状态下输入为1,则需要转向S2状态,其他不变。)
图1:Moore状态机状态转移图
先给出行为仿真示意图,示例代码后面贴出:
可见,每经历一个1101,输出就会是一个高脉冲,持续一个周期,也即输出是一个1.
该状态机的Verilog HDL描述为:
`timescale