使用导线数组作为输入的语法

时间:2010-02-26 13:20:39

标签: arrays verilog

我有以下模块:

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 );

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

感谢。

2 个答案:

答案 0 :(得分:5)

您在第二个代码段中将电线声明返回到前面。应该是:

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

答案 1 :(得分:3)

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

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

但是,在您的调用模块中,您已声明三个1位宽,8位深wire 数组(请参阅IEEE标准Verilog,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;

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