题目:使用状态机检测“1101”,串行输入的测试序列为“11101101011010”,输出信号为valid有效信号,检测到时输出高,否则为低,考虑序列叠加情况,比如“1101101”,则有两个“1101”。
(不考虑重叠情况的话只是状态转移图有点变化,状态机的写法相似)
本文使用3段式状态机,参考西南交大邸志雄老师课程中第三章第7节关于状态机的写法。
有两个关键点:
两段式状态机:第一个always块采用同步时序描述状态转移;第二个always块组合逻辑判断状态转移条件,描述状态转移规律,并输出结果(组合逻辑输出)。
三段式状态机:第一个always块采用同步时序描述状态转移;第二个always块组合逻辑判断状态转移条件,描述状态转移规律;第三个always块时序逻辑输出结果(寄存器输出)。
同时,需要注意的是,无论二段还是三段,第二段描述状态转移规律用的都是CS(当前状态),三段式状态机的第三段寄存器输出所用状态为NS&