我有这样的输入
a1 = 4'b 1001;
a2 = 4'b 1000;
a3 = 4'b 1111;
说我有一个模块fulladder需要三个输入。 我需要使用类似
的所有输入LSB来调用此模块fulladder fa (a1[3] , a2[3] , a2[4] )
module full adder (a,b,c, carry , sum);
body -----
endmodule
它对我很好!!
但是如果fulladder将输入值作为数组 像贝娄那样我怎么称呼模块;
module fulladder2 (a , sum, carry)
input [2:0] a;
output sum;
output carry;
body-----
endmoduole
示例
fulladder2 f2 (3'b.a(a1[3]a2[3]a2[4])
??它显示错误无法在二进制文件中声明ASCII
或fulladder2 f2 (.a(a1[3],a2[3],a2[4])
??它也显示错误。
我不能像fulladder那样转换模块fulladder.2。
答案 0 :(得分:0)
使用连接运算符{...}。
fulladder2 f2( {a1[3],a2[3],a3[3]}, ...
better:
fulladder2 f2 (
.a ( {a1[3],a2[3],a3[3]} ),
.sum (sum),
.carry (carry)
);
此外,我注意到两个不同的定义,你已经交换了进位和总和。
module full adder (a,b,c, carry , sum);
and:
module fulladder2 (a , sum, carry)
如果您使用.name(...)端口分配,这不是问题,但如果您不使用它,则存在潜在危险。
至于你的命名法:你使用的是'矢量'而不是'数组'。在Verilog中,一维实体称为向量。阵列通常是二维的。单个位是电线或寄存器。