如何在 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 位宽时,似乎可以重现该错误。