推荐答案
测试一下
题目
下面关于 always语句的使用描述正确的是
A.在组合 always模块中使用阻 塞赋值语句
B.在时序 always模块中使用非阻塞赋值语句
C.避免在组合 alway s模块中敏感信号列表中缺少信号
D.避免敏感信号列表中出现冗余信号
参考答案与知识点
参考答案
正确选项:A、B、C、D。
解析:
A选项正确:在组合逻辑always模块中,使用阻塞赋值(=)可以保证赋值立即执行,避免产生不必要的时序依赖,同时有利于减少仿真与综合之间的行为差异。
B选项正确:在时序逻辑always模块中(如时钟触发),推荐使用非阻塞赋值(<=),以模拟寄存器传输特性,避免产生仿真时的竞争风险,并符合硬件行为。
C选项正确:组合逻辑的敏感信号列表应包含所有输入信号,若缺失某个输入,当该输入变化时,always块不会重新计算,导致仿真与综合不一致,可能产生隐含锁存器(latch)。
D选项正确:敏感信号列表中不应包含冗余信号(如组合逻辑中误用posedge/negedge,或包含与电路无关的信号),否则会导致仿真行为与综合结果不一致,或增加不必要的仿真事件,降低仿真效率。
综上,所有选项都是正确的always语句使用规范,故全选。
涉及知识点
- 阻塞赋值与非阻塞赋值的区别
- 组合逻辑always语句编写规范
- 时序逻辑always语句编写规范
- 敏感信号列表完整性要求
- 避免敏感列表冗余信号
- 隐含锁存器产生原因