【发布时间】:2019-05-24 06:06:00
【问题描述】:
假设有两个不同的模块(first_module、second_module)。两个模块都与时钟信号同步。 first_module 具有以下结构:
module first_module(
input clk,
input reset_n,
input in1,
output reg out1,
output reg out2
);
//******** some verilog codes *********
endmodule
和second_module有类似的结构:
module second_module(
input clk,
input reset_n,
input in1,
input in2,
output reg out1
);
//******** some verilog codes *********
endmodule
然后有一个名为top_module 的模块使用两个模块的实例:
module top_module(
input clk,
input reset_n,
input insignal1,
input insignal2,
output outsignal1,
output outsignal2
);
first_module fm1(
.clk(clk),
.reset_n(reset_n),
.in1(insignal1),
.out1(outsignal1),
.out2(<connection1>) // to be connected to the connection2
);
second_module sm1(
.clk(clk),
.reset_n(reset_n),
.in1(insignal2),
.in2(<connection2>), // to be connected to the connection1
.out1(outsignal2)
);
endmodule
目的是将connection1 连接到connection2。据我所知(如果它是正确的),我们可以声明一条线(让它的名字是connection)并用它替换<connection1>和<connection2>,或者我们可以声明两条不同的线connection1和connection2,然后:
assign connection2 = connection1;
并相应地连接它们。
- 这两种方法的合成方式不同吗?如果答案是肯定的,我会很高兴你能解释它们是如何合成的。
- 如果答案是否定的,那么其中一种方法在不同条件下是否比另一种更好?不是在代码行数或简单性方面,而是在综合方面。
【问题讨论】: