如何在系统verilog中进行位扩展?
How to perform bit extension in system verilog?
我想使用复制运算符 {} 在特定时间复制一个位,但我只得到了我想要的第一个位,其他位是零,无论该位是零还是一。
module(logic output [7:0] a);
assign a={8{1}};
endmodule
我得到一个等于 00000001
不是 11111111
在 Verilog 中,无基文字(例如 1
)是 (a) 十进制,(b) 有符号和 (c) 32 位。因为 (c),
{8{1}}
与
相同
{8{32'sb00000000000000000000000000000001}}
这是一个 256 位数字,然后在分配给 a
时被截断为 8 位。这就是为什么 a
等于 8'b00000001
.
你需要
{8{1'b1}}
我想使用复制运算符 {} 在特定时间复制一个位,但我只得到了我想要的第一个位,其他位是零,无论该位是零还是一。
module(logic output [7:0] a);
assign a={8{1}};
endmodule
我得到一个等于 00000001 不是 11111111
在 Verilog 中,无基文字(例如 1
)是 (a) 十进制,(b) 有符号和 (c) 32 位。因为 (c),
{8{1}}
与
相同{8{32'sb00000000000000000000000000000001}}
这是一个 256 位数字,然后在分配给 a
时被截断为 8 位。这就是为什么 a
等于 8'b00000001
.
你需要
{8{1'b1}}