← 数字电路笔试题目总结

推荐答案 测试一下

画出可以检测10010串的状态图,并verilog实现之。序列检测器的FSM(状态机)实

编程题 中等 笔试真题

参考答案

该题考查序列检测器的FSM设计,核心在于重叠检测的处理。题目中的Verilog实现(摩尔型和米利型)均采用重叠方式,即允许序列重叠。以输入序列'10010010'为例,第一个'10010'检测到后,后续输入'0',此时已接收的序列末尾为'100100',其后缀'100'与目标序列前缀'100'匹配,因此下一个状态为C(代表已接收'100'),而非回到IDLE。这正是代码中E状态下x==0时nstate=C的原因。 若采用不重叠检测,则检测到'10010'后应强制回到IDLE,忽略后续可能的重叠。但题目提供的实现是重叠型,故疑惑中的答案应是转移到C。 设计要点: 1. 状态定义:IDLE、A、B、C、D、E依次对应检测到'1'、'10'、'100'、'1001'、'10010'。 2. 状态转移:每个状态根据输入x决定下一状态,考虑重叠(前缀匹配)逻辑。例如,在状态B(已'10')若输入0,则已'100',转C;若输入1,则为'101',最长前缀为'1',故转A。 3. 输出:摩尔型在状态E时z=1;米利型在状态D且x==0时z=1。 4. 易错点:重叠条件下,状态E输入0应转C(而非IDLE),输入1应转A(因为末尾'100101'的后缀'1'匹配前缀'1')。 状态转移表(重叠型): - IDLE: x=1→A, x=0→IDLE - A: x=0→B, x=1→A - B: x=0→C, x=1→A - C: x=1→D, x=0→IDLE - D: x=0→E, x=1→A - E: x=0→C, x=1→A 实现时需注意组合逻辑与时序逻辑分离,输出与状态同步(摩尔)或与输入组合(米利)。

涉及知识点

  • 序列检测器的状态图设计
  • 重叠序列检测的FSM转移逻辑
  • Moore型与Mealy型输出区别
  • Verilog三段式状态机写法
  • 避免竞争冒险的组合逻辑赋值
← 上一题
登录后反馈错题
下一题 →