我想使用复制运算器{}在特定的时间复制一位,但是我只得到想要的第一位,而无论该位是零还是一位,其他都为零。
module(logic output [7:0] a);
assign a={8{1}};
endmodule
我得到等于00000001 不是11111111
答案 0 :(得分:3)
在Verilog中,无基础文字(例如1
)是(a)十进制,(b)带符号和(c)32位。由于(c),
{8{1}}
与
相同{8{32'sb00000000000000000000000000000001}}
,它是一个256位数字,然后在分配给a
时被截断为8位。这就是为什么您获得a
等于8'b00000001
的原因。
您需要
{8{1'b1}}