关于verilog实例化的介绍

走远了吗. 提交于 2019-11-28 02:08:24

概念

当我们完成一个比较完整的系统的时候,通常需要编写一个Testbench来验证自己的设计的功能能否满足设计要求。在这个系统中通常会有一个top模块来连接那些小的模块,verilog通过实例化的方式来完成这些子模块和顶层模块的连接,然后顶层模块可以由此来调用各个子模块。

用法

调用模块的端口一般有两种方式,一种是位置关联,一种是名字关联,顺序关联不容易漏掉端口,名字关联容易理解(两个相同的名字肯定好理解啊)

举例说明

子模块(这里以一个简单的全加器模块说明)描述如下:

module adder(a,b,cin,s,cout);

innput a,b,cin;

output cout,s;

assign {cout,s} = a + b + cin;

endmodule

下面有一个顶层模块调用全加器模块:

module top(A,B,CIN,S,COUT);

...

adder ADDER(A,B,CIN,S,COUT);//这里采用位置关联

...

endmodule

如果采用名称关联

adder ADDER(

.a(A),

.b(B),

.cin(CIN),

.cout(COUT)

);

上面两种关联方式有一些共同点:

1、例化中一定会有一个例化名,比如上面的ADDER,就代表着对adder模块的调用,这个例化名可以自己定,没有什么特别要求。

值得一讲的是名称关联,这种方法注意是前面写的是子模块内的端口名称,括号里面的是顶层模块里面的端口名称。一般我们写模块时都喜欢将两个模块里面的端口名称写成一样的,方便自己理解。

还有就是注意悬空端口的处理。综合时悬空端口会有一定的影响。

 

 

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!