← 2022 · 艾为 笔试

推荐答案 测试一下

用FSM实现一个序列检测模块,a为输入端,b为输出端,如果a连续输入为1101,则b输出为1,否则为0。例如:

题目配图 题目配图
编程题 中等 笔试真题

参考答案

采用Moore型FSM实现序列1101检测。定义5个状态:IDLE(初始)、S1(收到1)、S2(收到11)、S3(收到110)、S4(收到1101)。状态转移:IDLE:输入0→IDLE,输入1→S1;S1:输入1→S2,输入0→IDLE;S2:输入0→S3,输入1→S2(因为末尾两位仍是11);S3:输入1→S4,输入0→IDLE;S4(输出1):输入1→S2(末尾两位11),输入0→IDLE。输出b:仅在S4状态为1,其余为0。注意重叠检测:如连续输入1101101,第一个1101检测到后,第二个1到来时转移到S2,后续1→S2(连续两个1),再0→S3,再1→S4输出第二个1。Verilog代码示例:使用三段式FSM(状态寄存器、次态逻辑、输出逻辑),状态编码采用独热码或二进制码。易错点:S2状态输入1的转移(应留在S2而非S1);S4状态输入1的转移(应到S2而非S1);避免在组合逻辑中产生锁存器。

涉及知识点

  • Moore型FSM结构
  • 序列检测器状态转移图设计
  • 重叠序列的检测处理
  • FSM状态编码(二进制/独热码)
  • Verilog三段式FSM编写方法
  • 组合逻辑与时序逻辑的区分
← 上一题
登录后反馈错题
下一题 →