一、基本实例化方法
Verilog通过模块实例化实现层次化设计,语法格式为:
模块名 实例名(
.端口1(信号1),
.端口2(信号2),
//...
);
二、两种连接方式
1.顺序连接:严格按模块定义端口顺序
Adder adder_inst(in1, in2, sum); // 假设Adder模块端口顺序为(input a, input b, output c)
2.命名连接:显式指定端口映射
Adder adder_inst(
.a(in1),
.b(in2),
.c(sum)
);
注:
- 端口位宽匹配:连接信号位宽需严格匹配,否则自动截断或补零
- 悬空端口处理:未连接输入端口应明确赋值,避免产生锁存器
UnusedModule inst(
.used_port(sig),
.unused_input(1'b0) // 显式接地
);
三、实例
module FullAdder(
input a, b, cin,
output sum, cout
);
assign {cout, sum} = a + b + cin;
endmodule
module Adder4bit(
input [3:0] A, B,
output [3:0] Sum,
output Cout
);
wire [3:0] carry;
FullAdder fa0(.a(A[0]), .b(B[0]), .cin(1'b0), .sum(Sum[0]), .cout(carry[0]));
FullAdder fa1(.a(A[1]), .b(B[1]), .cin(carry[0]), .sum(Sum[1]), .cout(carry[1]));
endmodule