|
发表于 2015-3-7 21:33:31
|
显示全部楼层
天啦。。。。看来你真得好好学学verilog的模块化设计了。。。
给你个模块与模块间传递变量的例子,有3个模块,第1个是大顶层top,它的输入和输出才是引脚,第2个是加法器m1,第3个是判决器m2,m1需要把加法结果送给m2进行判决,然后输出一个比较结果。。看下面的代码:
顶层top:
module top
(
input [7:0] da1_i,
input [7:0] da2_i,
input [8:0] cmp,
output res
);
wire [8:0] da_o;
m1 u_m1(
.da1_i(da1_i),
.da2_i(da2_i),
.da_o(da_o),
);
m2 u_m2(
.dat_o(dat_o),
.cmp(cmp),
.res(res)
);
endmodule
加法器模块m1 :
module m1(
input [7:0] da1_i,
input [7:0] da2_i,
output wire [8:0] dat_o
);
assign dat_o = {1'b0,da1_i} + {1'b0,da2_i};
endmodule
比较器模块m2 :
module m2(
input [8:0] dat_o,
input [8:0] cmp,
output wire res
assign res = (dat_o >= cmp) ? 1'b1 : 1'b0;
);
endmodule
上面的代码里,top里有2个模块m1和m2,它们之间有个wire变量da_o[8:0]在传递,你认为这会导致引脚不够的报错吗? 自己好好想想吧 |
|