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端口,使用时需要注意。

  • 13
    点赞
  • 70
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值