2017-02-03 94 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

好的,非常感謝你! –