Verilog学习笔记(二)——parameter与localparam的区别

1、paramete和localparam的区别

parameter:用于顶层模块与底层模块之间的参数传递,并行例化的模块也可以使用,相当与全局常量;
localparam:仅限于本module内部使用,并行例化的模块不可调用,相当于局部常量。
注意:模块例化时,无论parameter还是localparam都只能赋值一次,例化之后,其值不再发生改变,所以赋值式子右边不能是变量。

2、parameter参数的重写

(1)例化时修改

module add #(
	parameter	A = 8'h01,
	parameter	B = 8'h02
)
(
	output		[8:0]	C;
);
assign	C = A + B;
endmodule
// 例化
add	#(
	.A(8'h08),
	.B(8'h08)
)U0(
	.C(C)
);

(2)修改后再例化——defparam

defparam的语法结构:defparam path_name = value ;
其中,path_name为模块层次的路径,如:

// defparam重写
defparam	U0.A = 8'h16;
defparam	U0.B = 8'h16;
add	U0();

3、小结

parameter和localparam的使用类似于C语言中的constant,一般用来定义模块中不需要改变的数值,如Rom表的值等。parameter虽然能够在模块之间传递参数,但不能传递变量,需要传递变量时还是得通过input和output端口,使用时需要注意。


版权声明:本文为weixin_39410955原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。