的Verilog,模块实例化与来自不同模块
问题描述:
模块的层次输入其中uart_receiver.v = ModuleA,RSD.v = ModuleB,uart_transmitter.V = ModuleC 的Verilog,模块实例化与来自不同模块
假设我要实例化ModuleA与从输入不同的模块,B和输入的名称是:WR_EN从moduleB和RD_EN,DT从moduleC
module A(
input wr_EN,
input rd_EN,
input DT,
output out
);
我试着做以下,但没有成功,在ISE赛灵思使用Verilog
B模块
module B(...)
assign wr_EN = 1;
...
// Now call module A from B:
module A A_instance(.wr_EN(wr_EN));
C模块中
module C(...)
...
assign rd_EN = 0;
assign DT = 1;
....
// And then call module A from C
module A A_instance(.rd_EN(rd_EN), .DT(DT));
如果我打电话具有相同名称的模块实例,程序不会再做第二次i尽管我想要一个。 我搜查,但我还没有发现类似的例子
答
我试图清理你的问题,但我仍然不知道你打算在拥有的一个(一个两个实例中乙另一C)或者如果您试图共享A的一个实例B和C。
一个实例代表一个物理硬件。其他模块实例之间不能共享相同的实例。您可以路由网络以连接实例。例如:
module TOP(...);
...
A A_instance(.wr_EN(wr_EN), .rd_EN(rd_EN), .DT(DT), .out(out));
B B_instance(.wr_EN(wr_EN), ...);
C C_instance(.rd_EN(rd_EN), .DT(DT), ...);
endmodule
可以放置甲内部的乙或Ç并路由来自其它通过父级输入。
module B(
input rd_EN, // output for C connected at top
input DT, // output for C connected at top
...
);
...
assign wr_EN = 1;
A A_instance(.wr_EN(wr_EN), .rd_EN(rd_EN), .DT(DT), .out(out));
endmodule
或
module C(
input wr_EN, // output for B connected at top
...
);
...
assign rd_EN = 0;
assign DT = 1;
A A_instance(.wr_EN(wr_EN), .rd_EN(rd_EN), .DT(DT), .out(out));
endmodule
如果放置在乙和Ç一个的甲实例,则具有两个独立的情况下,即使输入是从一个共同的资源。
Xmm谢谢,第一听起来不错。我已经考虑过第二或第三个想法。所以,用SAME名称调用模块的实例2次会创建2个不同的硬件? – trakis95
会有两个_instances_,并且它们需要具有不同的实例名称。 Verilog不会调用模块 – Greg