defparam的语法
當一個模塊引用另外一個模塊時,高層模塊可以改變低層模塊用parameter定義的參數(shù)值,改變低層模塊的參數(shù)值可采用以下兩種方式:
1)defparam 重定義參數(shù)
語法:defparam path_name = value ;
低層模塊的參數(shù)可以通過層次路徑名重新定義,如下例:
module top ( .....)
input....;
output....;
defparam U1 . Para1 = 10 ;
M1 U1 (..........);
endmodule
module M1(....);
parameter para1 = 5 ;
input...;
output...;
......
endmodule
在上例中,模塊M1參數(shù) para1 的缺省值為5,而模塊top實例了M1后將參數(shù)的值改為10。
2) 實例化時傳遞參數(shù)
在這種方法中,實例化時把參數(shù)傳遞進去,如下例所示:
module top ( .....)
input....;
output....;
M1 #( 10 ) U1 (..........);
endmodule
在該例中,用#( 10 )修改了上例中的參數(shù)para1,當有多個參數(shù)時,用逗號隔開,如#( 10 , 5 ,
3 )傳遞了3個參數(shù)值。
模塊參數(shù)的方法使得模塊的重用性更強,當需要在同一個設計中多次實例化同樣的模塊,只是參數(shù)值不同時,就可以采用模塊參數(shù)的方式,而不必只因為參數(shù)不同產(chǎn)生了多個文件。
?
引用:
利用defparam定義參數(shù)聲明語句!
defparam 例化模塊名.參數(shù)名1 = 常數(shù)表達式,
例化模塊名.參數(shù)名2 = 常數(shù)表達式, ……;
格式
defparam語句在編譯時可重新定義參數(shù)值.
可綜合性問題:一般情況下是不可綜合的.
提示:不要使用defparam語句!在模塊的實例引用時可用"#"號后跟參數(shù)的語法來重新定義參數(shù).
[例]
module mod ( out, ina, inb);
…
parameter cycle = 8, real_constant = 2.039,
file = "/user1/jmdong/design/mem_file.dat";
…
endmodule
module test;
…
mod mk(out,ina,inb); // 對模塊mod的實例引用
defparam mk.cycle = 6, mk.file = "../my_mem.dat"; // 參數(shù)的傳遞
…
endmodule
5 模塊實例引用時參數(shù)的傳遞——方法之二:利用特殊符號"#"
[例]
module mod ( out, ina, inb);
…
parameter cycle = 8, real_constant = 2.039,
file = "/user1/jmdong/design/mem_file.dat";
…
endmodule
module test;
…
mod # (5, 3.20, "../my_mem.dat") mk(out,ina,inb); // 對模塊mod的實例引用
…
endmodule
被引用模塊
參數(shù)的傳遞
必須與被引用模塊中的參數(shù)一一對應!
建議用此方法!
被引用模塊名 # (參數(shù)1,參數(shù)2,…)例化模塊名(端口列表);
總結
以上是生活随笔為你收集整理的defparam的语法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 嵌入式逻辑分析仪SignalTap II
- 下一篇: 基于verilog按键消抖设计