verilog全域性變數和區域性變數定義

2021-07-13 16:01:19 字數 783 閱讀 1698

1、區域性變數定義(parameter)

宣告:

parameter xx = 8; (注意有等號,且後面有分號)

使用:xx

作用域:parameter 作用於宣告的那個檔案。

另外parameter可以用作例化時的引數傳遞。具體方法參見《verilog例化時的引數傳遞》一文 

2.全域性變數定義(`define )(注意撇號來自鍵盤左上方破浪線那個鍵,不是單引號)

宣告

`define xx 8  (無等號,且不用分號)

使用:`xx(使用該斌兩時必須在變數前加撇號)

作用域:`define 從編譯器讀到這條指令開始到編譯結束都有效,或者遇到`undef命令使之失效。

3.如何讓變數在整個專案都有效

如果想讓parameter或`define作用於整個專案,可以將如下宣告寫於單獨檔案,並用`include讓每個檔案都包含宣告檔案:

`ifndef xx

`define xx yy // or parameter xx = yy;

`endif

`define也可以寫在編譯器最先編譯的檔案頂部。通常編譯器都可以定義編譯順序,或者從最底層模組開始編譯。因此寫在最底層就可以了。

全域性變數和區域性變數

全域性變數 可以被不同的函式 類或檔案呼叫的變數,在函式外定義。區域性變數 只能在函式內使用,定義在函式內。區域性變數的使用 class myclass def myfun num 12 print myfun num num 正確 def myfun2 num num 1 print mufun ...

全域性變數和區域性變數

區域性變數 在方法中開闢的變數,只在方法中有效 區域性變數在定義時不會初始化,要顯式的給它乙個值 如未給它乙個初始值,雖然編譯的時候會通過,但是執行的時候會產生為初始化錯誤!方法呼叫 執行完,區域性變數便會自動釋放。在方法內的語句塊中建立的變數在編譯時假如未初始,如若使用,也會報未初始化錯誤!呼叫的...

全域性變數和區域性變數

通常的認為是定義在函式外面的就稱之為全域性變數 函式體內的稱之為區域性變數 在函式中與全域性變數同名的時候 情形1 函式內部的變數名如果第一次出現,且出現在 前面,即被視為定義乙個區域性變數。num 100 定義乙個全域性變數 defdemo num 100 這裡面的實際上是定義了乙個區域性的變數 ...