我在学习Verilog时有一个问题。假设有一个名为
input A;
的信号,还有一个名为 wire [15:0] B;
的信号,其中 assign B[15:0] = {8{A}};
如果我们定义信号,
B
的前8位声明为零是否正确?如果是这样,这是通过什么特征发生的?
input A;
wire [15:0] B;
assign B[15:0] = {8{A}}; // => 16'b0000_0000_0000_0000
// if i change value A 0 to 1 --> 16'b0000_0000_1111_1111
是的,在这种情况下,8 位 (
B[15:8]
) 将全部为 0。
请参阅 IEEE Std 1800-2023 第 10.7 节 分配扩展和截断。