← eetop.cn_数字IC设计工程师笔试面试经典100题(大部分有答案)

推荐答案 测试一下

用FSM实现101101的序列检测模块。(南山之桥)

编程题 中等 笔试真题

参考答案

设计101101序列检测模块,采用Moore型FSM,定义状态S0~S5分别匹配序列前缀长度为0~5。状态转移:S0:输入0→S0,1→S1;S1:0→S2,1→S1(重叠匹配单个1);S2:0→S0(不匹配),1→S3;S3:0→S2(末尾10匹配),1→S4;S4:0→S5,1→S1(末尾1匹配);S5:0→S0(不匹配),1→S6并输出1,且S6输入1→S1(重叠),0→S0。注意重叠处理:检测到完整序列后,最后一个1可作为新序列的开头,因此转到S1。实现时使用三段式Verilog:第一段时序逻辑更新状态,第二段组合逻辑计算次态,第三段组合逻辑输出。易错点:S3输入0应转移到S2而非S0,因为末尾“10”是前缀;S4输入1应到S1而非S5,因为末尾仅匹配1;S5输入0需回到S0而非停留在S5。FSM编码推荐独热码以减少组合逻辑。

涉及知识点

  • 状态机设计与状态转移图
  • 序列检测中的重叠问题处理
  • Moore型与Mealy型FSM区别
  • FSM编码方式(二进制/独热码)
  • 三段式Verilog实现FSM
← 上一题
登录后反馈错题
下一题 →