|
define:可以跨模块定义;
parameter:本module内有效的定义,可用于参数传递、定义端口信号。
defparam:是对已经声明的模块常量,在例化的时候对该常量进行重新定义
模块实例引用时参数传递,即高层模块可以改变底层模块用parameter定义的参数值。有以下两种方式:
(1)defparam重定义参数
语法:
defparam 例化模块名.参数名1 = 常量表达式,
例化模块名.参数名2 = 常量表达式;
低层模块的参数可以通过层次路径名重新定义
- module top ( .....)
- input....;
- output....;
- defparam U1 . Para1 = 10 ;
- M1 U1 (..........);
- endmodule
- module M1(....);
- parameter para1 = 5 ;
- input...;
- output...;
- ......
- <font size="5">endmodule</font>
复制代码 在上例中,模块M1参数para1的缺省值为5,而模块top例化了M1后将参数值改为10.
(2)利用“#”实例化时传递参数
例化时利用“#”将参数传递进去
语法: 被引用模块名 #(参数1,参数2,...) 例化模块名(端口列表);
- module top ( .....)
- input....;
- output....;
- M1 #( 10 ) U1 (..........);
- endmodule
复制代码 在该例中用#(10)修改了上例中的参数param1,当有多个参数时用逗号隔开,如#(10, 5, 3)传递了3个参数值。
参数的传递必须与被引用模块中的参数一一对应。
|
|