← 时钟与复位

推荐答案 测试一下

2 推荐使用电路设计

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

参考答案

设计之外(即无意中产生)的锁存器通常由组合逻辑中的不完整分支导致。在Verilog/VHDL中,组合逻辑(使用always @(*)或process)若未覆盖所有输入组合,综合工具会推断锁存器以保持未覆盖情况下的原值。典型场景:if语句缺少else分支,且条件不满足时,输出保持原值,工具推断锁存器;case语句缺少default,且所有case项未覆盖全部可能值,则产生锁存器。另外,在组合逻辑中对同一信号多次赋值,但赋值条件互斥不完全,也可能产生锁存器。例如:always @(*) begin if(a) b = 1; end 缺少else,则a=0时b保持不变,综合出锁存器。正确做法是添加else或default赋值,或在所有分支中明确赋值。此外,敏感列表不完整(未列出所有输入信号)也会导致仿真与综合不一致,但综合时可能推断锁存器。避免方法:坚持使用完整分支和默认赋值,仅在时序逻辑中使用寄存器。

涉及知识点

  • 组合逻辑不完整分支
  • if/else与case缺少分支
  • 锁存器与触发器区别
  • 编码规范避免锁存器
  • 综合工具推断锁存器条件
登录后反馈错题
下一题 →