2013-02-27 75 views
3

我想要參數化模塊。它具有以下定義:verilog:我如何添加參數

module example (...); 
    parameter A = 2; 
    parameter B = 2; 
    parameter C = A + B; 

endmodule 

然而,當我打印出來的參數值,我得到A = 2,B = 2,C = 1 ...任何想法,爲什麼?

回答

6

找到了一個解決方案 - 使用localparam。

module example (...); 
    parameter A = 2; 
    parameter B = 2; 
    localparam C = A + B; 

endmodule 
+0

事實上,在你原來的問題中,C應該等於4.但是,由於C是一個參數,所以它是危險的並且很可能被覆蓋。使用localparam是定義不能被defparam或實例參數值賦值覆蓋的參數的正確方法。 – jclin 2013-03-01 08:51:02

+0

除了localparams不能用於端口列表,使用verilog-2001樣式的端口聲明。 – Morgan 2013-03-01 13:36:01