推荐答案
测试一下
题目
用FSM实现101101的序列检测模块。(南山之桥)
参考答案与知识点
参考答案
序列检测器用于检测输入数据流中是否出现特定序列。本题需检测'101101'。可采用Mealy型或Moore型FSM,Mealy型输出与当前状态和输入相关,状态数较少;Moore型输出仅与状态相关,状态数较多。下面以Mealy型为例设计。首先定义状态:S0(初始,未匹配任何位)、S1(匹配'1')、S2(匹配'10')、S3(匹配'101')、S4(匹配'1011')、S5(匹配'10110')。当处于S5且输入为'1'时,检测到完整序列'101101',输出'1';注意序列重叠,例如'101101101'中,检测到第一个'101101'后,剩余'101'可作为下一个序列的起始。因此需考虑状态转移的重叠部分:当在S5遇到'1'时,应跳转到S3(因为'101'是已匹配部分);若输入'0'则跳转S2('10')。其他状态转移:S0输入'1'→S1,输入'0'→S0;S1输入'0'→S2,输入'1'→S1(重叠'1');S2输入'1'→S3,输入'0'→S0;S3输入'1'→S4,输入'0'→S2(重叠'10');S4输入'0'→S5,输入'1'→S1(重叠'1');S5输入'1'→S3,输入'0'→S2。输出仅在S5且输入'1'时为1,其余为0。状态编码可选用三位二进制:S0=000,S1=001,S2=010,S3=011,S4=100,S5=101。Verilog实现要点:使用always块描述状态转移,组合逻辑或时序逻辑输出。易错点:1. 忽略重叠检测导致漏检;2. 状态转移图遗漏分支;3. 输出条件错误;4. 未复位到S0。
涉及知识点
- 序列检测器原理
- Mealy与Moore型FSM区别
- 状态转移图设计
- 重叠检测的处理
- Verilog的FSM实现
- 状态编码方法