localparam和parameters关键字语法格式
parameter [参数名] 数值
localparam [常数名] 数值
例子:
//将A赋值为100
parameter A = 100;
localparam A = 100;
localparam和parameters关键字的区别
在以前时parameter关键字即作为常数又做为参数,这样容易导致安全性问题,因此在IEEE 2005标准后Verilog增加了localparam关键字表示常数,parameter关键字仅表示参数。那么常数和参数都是什么呢?
常数用于定义当前工程和文件中那些固定不变的变量。而参数则是可以用作LPM交换的数值。localparam关键字对应的常数只能用于当前模块中,其值不能改变。而parameter关键字的值则可以在上层模块例化模块时修改。
关于parameter关键字对应的参数举个例子
一个模块在定义的时候
module lamp(
clk,
...
)
parameter n = 7; //定义一个参数
...
...
endmodule
或者
module lamp #
(
parameter n = 7; //定义一个参数
)
(
clk,
...
)
...
...
endmodule
后期顶层模块需要调用的时候需要把参数n变为4,就可以在例化lamp的时候这样修改n
lamp //被调用模块
#(.n(4)) //参数例化
u_lamp( //例化模块
.clk(clk),
...
);
这样不需要改变的值就可以定义为常数(localmeter),外部不可改变,提高了软件的安全性