5

我有以下模块:

module add_8bit ( output wire co,
              output wire [7:0] r,

              input wire ci,
              input wire [7:0] x,
              input wire [7:0] y );

我正在尝试通过以下代码使用它:

 wire rbit [7:0];
 wire onebit [7:0];
 wire twocomp [7:0];

 wire tco, tci;

 add_8bit t9 ( tco, twocomp, tci, rbit, onebit );

由于最后一行,它不会编译,为什么?

谢谢。

4

2 回答 2

5

在第二个代码片段中,您将连线声明重新置于前面。应该:

wire [7:0] rbit;
wire [7:0] onebit;
wire [7:0] twocomp;
于 2010-02-26T13:28:06.647 回答
3

在您的模块定义中,您已经声明了三个 8 位wire端口:

 output wire [7:0] r,
 input  wire [7:0] x,
 input  wire [7:0] y

但是,在您的调用模块中,您已经声明了三个 1 位宽 x 8 位深的wire 数组(请参阅 Verilog 的 IEEE 标准,1364-2005,第 4.9 节“数组”):

 wire rbit    [7:0];
 wire onebit  [7:0];
 wire twocomp [7:0];

当您将这些线阵列连接到模块实例时,会发生端口连接类型不匹配,从而导致编译错误。

要解决此问题,您必须确保用于连接到实例的信号类型与模块端口类型匹配。正如 Marty 指出的那样,您很可能希望将调用模块wire声明更改为:

wire [7:0] rbit;
wire [7:0] onebit;
wire [7:0] twocomp;

另一种可能性是更改您的模块端口以匹配调用模块线,但我真诚地怀疑这是您想要的。

于 2010-02-26T13:58:02.190 回答