如何在 verilog 中反转 64 位变量?
How do I invert a 64-bit variable in verilog?
我试图在 verilog 中反转一个 64 位变量,但由于某种原因只有一位被反转。
wire [63:0] bc;
assign bc = 64'b0;
assign notbc = ~bc;
我期望输出为 1 的 64 位,但我得到的最高有效位是 1,其他位是 0。
我还尝试了我在网上找到的其他东西:
assign notbc = bc ^ 64'b1;
但是我这次得到的是最低有效位是1,其他都是0。我该怎么做才能得到每一位的否定,即 64 位的 1?
注意:我仅限于Verilog,我不能使用SystemVerilog。
这是完整的模块:
`timescale 1ns/1ns
module notting(
output [63:0] out);
wire [63:0] bc;
assign bc = 64'b0;
assign out = ~bc;
endmodule
它可能只是在您粘贴的代码中丢失了,但由于未声明 [=11=],它将被隐式声明为单比特连线。使用以下代码你应该得到 64 个,除非你的模拟器有问题:
wire [63:0] bc, notbc;
assign bc = 64'b0;
assign notbc = ~bc;
我已经在 cloudv.io 中检查了您的代码。
我已经检查过它适用于小位宽
但是,当我增加位宽时,错误就出现了。
在这一点上,我不确定是什么导致了这个错误,因为我对系统不友好。
当输入超过 50 位宽时,似乎可以重现该错误。
我试图在 verilog 中反转一个 64 位变量,但由于某种原因只有一位被反转。
wire [63:0] bc;
assign bc = 64'b0;
assign notbc = ~bc;
我期望输出为 1 的 64 位,但我得到的最高有效位是 1,其他位是 0。 我还尝试了我在网上找到的其他东西:
assign notbc = bc ^ 64'b1;
但是我这次得到的是最低有效位是1,其他都是0。我该怎么做才能得到每一位的否定,即 64 位的 1? 注意:我仅限于Verilog,我不能使用SystemVerilog。
这是完整的模块:
`timescale 1ns/1ns
module notting(
output [63:0] out);
wire [63:0] bc;
assign bc = 64'b0;
assign out = ~bc;
endmodule
它可能只是在您粘贴的代码中丢失了,但由于未声明 [=11=],它将被隐式声明为单比特连线。使用以下代码你应该得到 64 个,除非你的模拟器有问题:
wire [63:0] bc, notbc;
assign bc = 64'b0;
assign notbc = ~bc;
我已经在 cloudv.io 中检查了您的代码。 我已经检查过它适用于小位宽 但是,当我增加位宽时,错误就出现了。 在这一点上,我不确定是什么导致了这个错误,因为我对系统不友好。 当输入超过 50 位宽时,似乎可以重现该错误。