|
大家好,我是一个Verilog新手。 最近经常遇到一个多驱动源的问题,很是头痛,想请教大家一下。
问题是这样的:一个主模块M,这个主模块包含3个子模块,M1,M2,M3。
Module M(clk, rst, din, cs, we,dout)
input clk, rst;
output cs, we;
output [7:0] dout;
wire ....
reg....
M1( .m1_clk(clk),
.m1_rst(rst),
.m1_cs(cs),
.m1_we(we)
.m1_dout(dout)
);
M2( .m2_clk(clk),
.m2_rst(rst),
.m2_cs(cs),
.m2_we(we)
.m2_dout(dout)
);
M3( .m3_clk(clk),
.m3_rst(rst),
.m3_cs(cs),
.m3_we(we)
.m3_dout(dout)
);
....
endmodule
因为m1,m2和m3的代码比较多,所以写成了这种2层的结构,把他们对应到主模块m里面。
但是象上面这样写,系统提示,多驱动错误,即m1,m2,m3中的cs,we 和dout 信号都同时对应到了,主模块中的 cs, we, dout信号。
修改了一下,分别取了不同的名字,但向下就不知道怎么操作了,
M1( .m1_clk(clk),
.m1_rst(rst),
.m1_cs(cs_1),
.m1_we(we_1)
.m1_dout(dout_1)
);
M2( .m2_clk(clk),
.m2_rst(rst),
.m2_cs(cs_2),
.m2_we(we_2)
.m2_dout(dout_2)
);
M3( .m3_clk(clk),
.m3_rst(rst),
.m3_cs(cs_3),
.m3_we(we_3)
.m3_dout(dout_3)
);
请高人指点,不胜感激 |
|