推荐答案
测试一下
题目
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缺少分支
- 锁存器与触发器区别
- 编码规范避免锁存器
- 综合工具推断锁存器条件