关于Verilog的常数和参数
关于Verilog的常数和参数:1. 常参不分是IEEE 2001版之前的一个问题。常数constant,是用于电路逻辑内部固定不变的一个数值,用于内部逻辑的实现;参数parameter,是用于电路模型的LPM实现时,现场定制的数值,是一个可变,用于交换的数值。
2. 参数这在高级语言中是一个基本语法规则,例如C语言中的函数参数(值交换,值引用);常数在高级语言中用于内部封装的固定数值,是不允许外部调用和修改的。
3. 可是在2005版Verilog之前,这个问题却被忽视了(有人指出是菲尔莫比Phil Moorby团队的商业行为所致),常参不分导致本应该被安全封装的常数,却作为参数出现在LPM模式使用者面前,使得LPM模块的安全性能很差,也不利于知识产权保护。
4. 于是,2005发布的修订后的Verilog,加入localparam作为常数定义。
5. 我们知道,在写状态机的时候,状态机的变量分配,应该是一个被封装的常数,是不可以被这段代码的使用者修改的,也不需要被修改。如果在2005年之前,作者这样写是不得已。2005之后,一定要将常数封装到localparam中,避免代码使用者有意无意修改,导致错误发生。也是知识产权保护的措施之一。
6. 从LPM代码使用者角度出发,参数列表中,仅包含可以被引用传递(现场定制)的参数,而不是一大段列出包含常数的参数,要简单方便的多。 2005发布的修订后的Verilog,加入localparam作为常数定义。 关于Verilog的常数和参数 关于Verilog的常数和参数
页:
[1]