在verilog中调用模块主要有两种写法:
1,第一种需要将模块变量与所调用的模块的端口顺序摆放一致。
本文引用自 https://blog.youkuaiyun.com/llxxyy507/article/details/81047723
一个简单的全加器模块描述如下:
module adder(a,b,cin,s,cout);
input a,b,cin;
output cout,s;
assign {cout,s} = a + b + cin;
endmodule
若一个模块temp需要调用adder模块时,temp中的与adder想连的端口需要与adder中声明的端口顺序一致。端口的介绍,可以参阅点击打开链接。 调用首先写被调用模块的名称(adder) ,随后的是实例名(add,用户自己定义),然后按adder中端口的顺序写下实例的端口名即可。
module temp(B,A,COUT,CIN,Sum);
...
adder add(A,B,CIN,Sum,Cout);
...
endmodule
若不需要全部的端口则如下调用:
adder add(A , , CIN , , COUT);
此实例中没有引用adder中的b,s两个端口,故省略,但逗号一定要保留。
2,第二种调用端口顺序可以随意摆放,同样以调用adder模块为例。
module temp(B,A,COUT,CIN,Sum);
...
...
adder add(.a(A), .s(Sum), .b(B), .cout(Cout), .cin(CIN));
...
endmodule
当不需要调用所有端口时,可如下调用:
adder add(.a(A), .s(), .b(), .cout(Cout), .cin(CIN));
此实例中没有引用adder中的b,s两个端口.
良好的coding style推荐使用第二种模块调用方式
本文介绍了Verilog中模块调用的两种主要方法:一种是按照端口顺序调用,另一种则是通过显式指定端口名称的方式进行调用。文章通过一个简单的全加器模块示例,详细解释了每种调用方式的具体实现,并强调了良好编程风格的重要性。
2296

被折叠的 条评论
为什么被折叠?



