Verilog,具有来自不同模块的输入的模块实例化
Verilog, Module Instantiation with inputs from different modules
模块的层次结构,其中 uart_receiver.v=ModuleA,RSD.v=ModuleB,uart_transmitter.V=ModuleC
假设我想用来自不同模块 B 的输入实例化 ModuleA,输入的名称是:WR_EN 来自 moduleB 和 RD_EN,DT 来自 moduleC
module A(
input wr_EN,
input rd_EN,
input DT,
output out
);
我尝试在带有 Verilog 的 ISE Xilinx 中执行以下操作但没有成功
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) );
如果我调用具有相同名称的模块实例,程序不会创建第二个实例,尽管事实上我想要一个。
我搜索过但没有找到类似的例子
我试图解决你的问题,但我仍然不确定你是否打算有两个 A 实例(一个在 B C) 中的另一个,或者如果您试图在 B 和之间共享 A 的一个实例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
您可以将 A 放在 B 或 C 内,并将输入从其他通过父级别。
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
如果你在 B 和 C 中放置了一个 A 的实例,那么你有两个独立的实例,即使输入来自共同来源。
模块的层次结构,其中 uart_receiver.v=ModuleA,RSD.v=ModuleB,uart_transmitter.V=ModuleC
假设我想用来自不同模块 B 的输入实例化 ModuleA,输入的名称是:WR_EN 来自 moduleB 和 RD_EN,DT 来自 moduleC
module A(
input wr_EN,
input rd_EN,
input DT,
output out
);
我尝试在带有 Verilog 的 ISE Xilinx 中执行以下操作但没有成功
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) );
如果我调用具有相同名称的模块实例,程序不会创建第二个实例,尽管事实上我想要一个。 我搜索过但没有找到类似的例子
我试图解决你的问题,但我仍然不确定你是否打算有两个 A 实例(一个在 B C) 中的另一个,或者如果您试图在 B 和之间共享 A 的一个实例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
您可以将 A 放在 B 或 C 内,并将输入从其他通过父级别。
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
如果你在 B 和 C 中放置了一个 A 的实例,那么你有两个独立的实例,即使输入来自共同来源。