实例化电路模块并互联

实例化电路模块并互联

Verilog代码的重要功能之一是实例化电路模块,并且对这些模块进行布线连接
每个被实例化的Verilog module 就如同某个型号的芯片, 每对该module的一次实例化,就如同使用了一次该芯片。
同样,把各个实例化的module的信号连接起来,就如同在电路元件之间用导线进行互联一样。

以下代码演示了在顶层模块中,把一个加法器实例化了2次。
2个加法器实例对象的输入输出分别与顶层模块的输入输出相连
——————————————————————————————
// 顶层模块
module top(
IN ,
OUT0 ,
OUT1 );
input [4-1:0] IN ;
output[4-1:0] OUT0;
output[4-1:0] OUT1;
wire [4-1:0] W_add0_out;
wire [4-1:0] W_add1_out;

// 第1次实例化, 加法器子模块
add U0_add(
.IN0 (IN ),
.IN1 (4’h1 ),
.OUT (W_add0_out));
// 第2次实例化, 加法器子模块
add U1_add(
.IN0 (IN ),
.IN1 (4’h2 ),
.OUT (W_add1_out));

// 端口接线互联
assign OUT0 = W_add0_out;
assign OUT1 = W_add1_out;
endmodule

// 加法器子模块
module add(
IN0 ,
IN1 ,
OUT );
input [4-1:0] IN0;
input [4-1:0] IN1;
output[4-1:0] OUT;
reg [4-1:0] OUT;
always @ (IN0 or IN1) begin
OUT = IN0 + IN1;
end
endmodule
——————————————————————————————
在Quartus项目中编译代码
然后使用菜单,Quartus工具,Tools -> Netlist Viewer -> RTL Viewer 观察RTL视图
可以看到如下图所示,两个实例化的加法器模块
每个加法器的输入输出端口和顶层模块的输入输出端口已经连接

实例化电路模块并互联_第1张图片

你可能感兴趣的:(quartus)