推荐答案
测试一下
题目
下面关于always语句描述正确的是( )。
A 组合逻辑always中敏感列表可以标明敏感变量,也可以用*替代
B 在时序逻辑语句块中非阻塞赋值和阻塞赋值都可以使用,没有本质差别
C 阻塞赋值按照顺序执行,非阻塞赋值并发执行
D 时序逻辑always中敏感列表必须标明时钟信号和复位信号(如果使用异步复位)
参考答案与知识点
参考答案
正确答案:A、C、D。
A选项正确:在组合逻辑always块中,敏感列表可以显式列出所有敏感变量,也可以使用*(通配符)自动将所有输入信号加入敏感列表,这是Verilog-2001标准支持的写法。
B选项错误:在时序逻辑always块中,非阻塞赋值(<=)和阻塞赋值(=)有本质区别。非阻塞赋值用于描述时序逻辑,产生触发器;阻塞赋值用于组合逻辑或产生锁存器。混合使用可能导致仿真和综合结果不一致,因此时序逻辑中通常应使用非阻塞赋值。
C选项正确:阻塞赋值(=)是顺序执行的,即在同一个always块内,上一条语句赋值完成后才会执行下一条;非阻塞赋值(<=)是并发执行的,所有右值在进程开始时被采样,赋值在进程结束时统一更新,体现了硬件电路的并行行为。
D选项正确:时序逻辑always的敏感列表必须包含时钟信号(如posedge clk)。如果使用异步复位,还必须包含复位信号(如negedge rst_n)。同步复位则只需时钟信号敏感。这是Verilog语法强制要求,否则综合工具可能无法正确推断时序逻辑。
涉及知识点
- always块敏感列表写法
- 组合逻辑与时序逻辑always区别
- 阻塞赋值与非阻塞赋值的执行特点
- 时序逻辑的敏感列表要求(时钟与异步复位)
- 阻塞赋值与非阻塞赋值的应用场景