2017-02-03 96 views
0

我已经阅读了这本书"Digital Design and Computers Architecture"作者:David Harris,本书中有一个关于SystemVerilog示例的问题。在“参数化结构”中引入了# (parameter ...)之后,几乎在每个示例中都使用了该运算符。参数化模块(SystemVerilog)

例如,这本书中的“减法”模块:

module subtractor #(parameter N = 8) 
(input logic [N - 1:0] a,b, 
output logic [N - 1:0] y); 
assign y = a - b; 
endmodule 

是什么在此代码中使用N的原因是什么? 我们就不能写出下面?:

input logic [7:0] a,b, 
output logic [7:0] y); 

而且,这样的参数在几乎每一个例子进一步书中使用,但对我来说,没有理由使用它。 我们可以直接在方括号中设置位数,而无需使用额外的“参数”。

那么,这种形式的编码的原因是什么?

+0

简而言之,参数用于模块的泛化。 – sharvil111

+0

可重用性是参数化模块的主要目的。 –

+0

@ sharvil111谢谢你的回复 –

回答

1

参数的使用有许多目的。

  1. 与直接使用字面值相比,使用与值关联的符号名称总是一种更好的编程习惯。 DATA_WIDTH而不是N本来就是一个比较合适的例子。这记录了价值的含义。
  2. 当需要对该值进行更改时,您只需一个地点即可进行更改,而您错过更改或更改非预期值的机会就会降低。
  3. 参数的使用允许您通过创建模板然后根据需要覆盖参数值,在许多不同的地方重复使用相同的代码。
+0

好的,非常感谢你! –