首先区分一个概念:
(1)有两种类型的parameters:
1)module parameters
2)specify parameters,只能提供定时和延时的值,不可综合。
(2)其中module parameters有parameter和localparam两种
- 编译时parameter的参数(这个指的就是(2)中的对parameter传参)传递又分为两种
1)defparam声明
2)模块实例声明
(4)模块实例化声明又分为两种
1)按位置传参
2)按参数名传参(推荐)
parameter和localparam区别:
parameter可用作在顶层模块中例化底层模块时传递参数的接口,localparam的作用域仅仅限于当前module,不能作为参数传递的接口。
parameter在模块中声明后,后续编译时还可以被重新声明的值所覆盖。
localparam除了不能直接对其进行修改外,其他属性与parameter一样。可通过在声明时将parameter赋给localparam进行间接修改。状态机一般都使用localparam。
parameter X = 3;
localparam Y = X*2;
这样修改X就间接修改了localparam Y的值。
参考链接(两个链接看了就懂了):
https://blog.csdn.net/yang2011079080010/article/details/51507904