关于多驱动源的问题
大家好,我是一个Verilog新手。 最近经常遇到一个多驱动源的问题,很是头痛,想请教大家一下。问题是这样的:一个主模块M,这个主模块包含3个子模块,M1,M2,M3。
Module M(clk, rst, din, cs, we,dout)
input clk, rst;
output cs, we;
output 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)
);
请高人指点,不胜感激 你这3个模块的输出应该不会同时有效,后面可以做1个MUX进行选择,只选择当前有效的数据输出。
页:
[1]