在Verilog中,实例化(instance)是将一个定义好的模块或原语放置到设计中的过程,以便在设计中使用该模块或原语的功能。当我们在Verilog中创建一个模块时,你可以在其他地方使用该模块的功能,这就需要通过实例化来实现。实例化的过程包括声明该模块的实例,并为其提供相应的连接,以便与其他模块或原语进行通信。
将导线连接到端口有两种常用的方法:按位置或按名称。
- 按位置
通过位置连接导线到端口的语法是很熟悉的,因为它使用了类似C语言的语法。在实例化模块时,端口会根据模块的声明从左到右进行连接。例如:
mod_a instance1 (wa,wb,wc);
这实例化了一个类型为mod_a
的模块,并为其分配了一个名为instance1
的实例名称,然后将信号wa,wb,wc
(在新模块外部)分别连接到新模块的端口in1,in2,out
。这种语法的缺点是,如果模块的端口列表发生变化,所有模块的实例化也需要找到并更改以匹配新的模块。
- 按名称
通过名称将信号连接到模块的端口可以使导线保持正确连接,即使端口列表发生变化也是如此。但是,这种语法更加冗长。
mod_a instance2 (.out(wc),.in1(wa),.in2(wb));