我有以下模块:
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 );
由于最后一行不会编译,为什么?
感谢。
答案 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;
另一种可能性是更改模块端口以匹配调用模块线,但我真诚地怀疑这是你想要的。