聲明:
parameter data = 8‘d14;
`define data 8’d14
使用:
data
`data
2、作用域
parameter 作用于聲明的那個文件;`define 從編譯器讀到這條指令開始到編譯結(jié)束都有效,或者遇到`undef命令使之失效。
如果想讓parameter或`define作用于整個項目,可以將如下聲明寫于單獨文件,并用`include讓每個文件都包含聲明文件:
`ifndef data
`define data 8’d14
或者
parameter data = 8‘d14;
`endif
`define也可以寫在編譯器最先編譯的文件頂部。通常編譯器都可以定義編譯順序,或者從最底層模塊開始編譯。因此寫在最底層就可以了。
3、區(qū)別
parameter可以用作例化時的參數(shù)傳遞。
在使用狀態(tài)機時候區(qū)別挺大的。狀態(tài)機的定義可以用parameter 定義,但是不推薦使用`define 宏定義的方式,因為'define 宏定義在編譯時自動替換整個設(shè)計中所定義的宏,而parameter 僅僅定義模塊內(nèi)部的參數(shù),定義的參數(shù)不會與模塊外的其他狀態(tài)機混淆。例如一個工程里面有兩個module 各包含一個FSM,如果設(shè)計時都有IDLE 這一名稱的狀態(tài),如果使用'define 宏定義就會混淆起來,如果使用parameter 則不會造成任何不良影響。
一旦`define指令被編譯,其在整個編譯過程中都有效。例如,通過另一個文件中的`define指令,定義的常量可以被其他文件中被調(diào)用。直到遇到`undef;parameter只在定義的文件中有效,在其它文件中無效。
歡迎光臨 (http://m.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |