推荐答案
测试一下
题目
Assuming a=1'b1; b=1'b0what's the final values of a and b?
参考答案与知识点
参考答案
题目假定 a=1'b1, b=1'b0,问最终 a 和 b 的值。在 Verilog 中,1'b1 表示 1 位二进制数 1,1'b0 表示 1 位二进制数 0。赋值语句若出现在 initial 或 always 块中,且为阻塞赋值(=),则按顺序执行,a 被赋值为 1,b 被赋值为 0,因此最终 a=1'b1,b=1'b0。若出现在连续赋值(assign)中,同样得到相同结果。但若在时钟沿触发的 always 块中使用非阻塞赋值(<=),且两语句顺序执行,则 a 和 b 同时更新,结果仍为 a=1,b=0。唯一可能混淆的情况是如果存在变量声明时赋初值(如 reg a=1'b1;)与后续赋值冲突,但题目没有额外声明,所以最终值明确。注意 Verilog 中 '1' 代表逻辑高,'0' 代表逻辑低,没有 X 或 Z 状态。答案:a=1, b=0。
涉及知识点
- Verilog位宽与基数表示法
- 阻塞赋值与非阻塞赋值区别
- 变量初始值与赋值顺序
- 逻辑值的取值规范