推荐答案
测试一下
题目
In Verilog description, if a=1'b1, b=2'b10, c=1'b0, then {{2{a, c}}, b} = ?
A. 6'b010101
B. 6'b101010
C. 6'b010100
D. 6'b100101
参考答案与知识点
参考答案
正确答案是B。表达式 {{2{a, c}}, b} 需要逐层解析。首先内层 {a, c} 将 a=1'b1 和 c=1'b0 拼接,高位为a,低位为c,得到 2'b10。接着 {2{a, c}} 将 {a,c} 复制两次,即 {2'b10, 2'b10} = 4'b1010。最后与 b=2'b10 拼接,高位为 {2{a,c}},低位为b,得到 6'b101010。选项A为6'b010101,顺序颠倒;C为6'b010100,值错误;D为6'b100101,值错误。注意:Verilog拼接中左边是高位,右边是低位;复制操作符 {n{...}} 重复指定次数并拼接。
涉及知识点
- Verilog拼接操作符{}的使用
- 复制操作符{n{expr}}的含义
- 二进制位宽计算与拼接顺序
- 常量的位宽与数值表示