請教verilog裡變數宣告時和有什麼區別

2022-01-24 04:56:58 字數 3650 閱讀 3088

1樓:黛沫沫謊

1、模組宣告的擴充套件

(1) verilog‐2001允許將埠宣告和資料型別宣告放在同一條語句中,例子如下:

向左轉|向右轉

(2)verilog‐2001中增加了ansic風格的輸入輸出埠宣告,可以用於module,task和function。例子如下:

向左轉|向右轉

(3)對於含有parameter的module,例子如下:

向左轉|向右轉

2、帶有初始化的暫存器型別變數宣告

verilog‐2001中允許在宣告變數的同時對其進行初始化賦值,他是在initial語句中的0時刻開始執行。例子如下:

3、敏感表的改進

(1)逗號分開敏感列表

在敏感表中的變數可以用逗號「,」分開,當然,當然or也是可以的。例子如下:

always@(posedge clk,negedge rst)也是可以的。

(2)組合邏輯的電平敏感@* //@(*) is also ok

「*」代表了邏輯塊中每個被賦值的變數,例子如下:

4、有符號算數運算的擴充套件

(1)net型和reg型可以宣告為帶符號的變數

(2)函式的返回值可以是有符號數

(3)literal integer numbers可以定義為有符號的

(4)增加算數右移左移(>>>,<<<)

操作符「>>>」和「<<<」。對於有符號數,執行算術移位操作時,將符號位填補移出的位。例子如下:

(5)增加系統函式$signed,$unsigned

用於在無符號和有符號數之間的轉換

5、可變向量域的選擇

[+」:width]從起始位開始遞增,位寬為width

[‐」:width]從起始位開始遞減,位寬為width

其中,起始位可以是變數,但位寬必須是整數。因此可以用可變域選擇,用迴圈語句選取一個很長的向量所有位。

6、多維陣列的建立

verilog‐1995中只允許對reg,integer和time建立一維的陣列,常用於ram,rom的建模。verilog‐2001中可以對net和variable建立多維陣列。

7、多維陣列的賦值

verilog‐1995不允許直接訪問矩陣字的某一位或某幾位,必須將整個矩陣字複製到另一個暫存變數中,從暫存中訪問。

verilog‐2001可以直接訪問矩陣的某一維或某幾位。

8、乘方運算子

增加乘方運算(power operate),運算子是**,如果其中有一個運算元是real型別的,返回值將是real型別。兩個運算元都是integer型別,返回才是integer型別。

9、自動(可重入)任務和自動(遞迴)函式

(1)可重入任務

任務本質上是靜態的,同時併發執行的多個任務共享儲存區。當某個任務在模組中的多個地方被同時呼叫,則這兩個任務對同一塊地址空間進行操作,結果可能是錯誤的。verilog‐2001中增加了關鍵字automatic,記憶體空間是動態分配的,使任務成為可重入的。

(2)遞迴函式

10、自動寬度擴充套件

verilog‐1995中對於不指定位數的位寬超過32為的匯流排賦高阻時,只會對低32位賦值為高阻,高位將為0。

verilog‐2001將高阻或不定態賦值給未指定位寬的訊號時,可以自動擴充套件到整個位寬範圍。

11、常數函式

verilog語法規定必須使用數值或常數表示式來定義向量的位寬和陣列的規模。

verilog‐1995中要求上述表示式必須為算數操作。

verilog‐2001中可以使用函式,成為常數函式。他的數值在編譯或詳細描述中被確定。

12、增加了檔案輸入輸出操作

verilog‐1995中在檔案的輸入/輸出操作方面功能非常有限,檔案操作經常藉助於verilog pli(程式語言介面),通過與c語言的檔案輸入/輸出庫的訪問來處理。並且規定同時開啟的i/o檔案數不能多於31個。

verilog‐2001增加了新的系統任務和函式,並且規定同時開啟的檔案數目為230個

請教verilog裡變數宣告時和有什麼區別

2樓:

也是一種暫存器資料型別,integer型別的變數為有符號數,而reg型別的變數則為無符號數,除非特別宣告為有符號數,還有就是integer的位寬為宿主機的字的位數,但最小為32位,用integer的變數都可以用reg定義,只是對於用於計數更方便而已。reg,integer,real,time都是暫存器資料型別,定義在verilog中用來儲存數值的變數,和實際的硬體電路中的暫存器有區別。

verilog hdl 中定義變數的位寬時序號宣告的大小怎麼區分

3樓:匿名使用者

這個看你怎麼定義了,怎麼都可以,2個都表示16位元或則32位元的位寬,誰在前誰在後都是符合語法規則的。

4樓:慈航靜士

這個是語法都支援的,只是msb,lsb的位置不同罷了。

前者的最高位就是[0],後者則是[31]

verilog 的real變數怎樣宣告啊?

5樓:

real 顯然是不可綜合的,如果你用在tb上還可以,但要綜合,肯定編譯不過。

一般暫存器申明只有 reg,你想,如果是一個浮點數,硬體怎麼去實現呢?

verilog即可以做硬體的描述,同時也可以搭建tb做驗證。

裡面說支援是在tb上支援的

變數定義和變數宣告的區別

6樓:佳佳萬萬

變數的定義用於為變數分配儲存空間,還可以為變數指定初始值。在一個程式中,變數有且僅有一個定義。 宣告用於向程式表明變數的型別和名字,定義包括宣告:

當定義變數時宣告瞭它的型別和名字。可以通過使用extern關鍵字宣告變數名而不定義它。

在verilog中宣告一個暫存器型別,但不賦值,預設是高阻還是x?

7樓:匿名使用者

經過modelsim測試:

結果表明:reg型別不賦值,預設是x;wire型別不賦值,預設是高阻。

verilog在定義reg變數時可以初始化賦值麼,比如reg a<=1'b0;

8樓:

可以是可以,但不能用<=。因為該reg還沒有指定時鐘。

還有所有的reg最好在復位的時候用<=賦一下初值。理由:假設你正在開發某裝置,在上電狀態下你按某按鈕復位了下,期望這時的狀態跟上電時的狀態是一樣的。

9樓:網友

可以,verilog2001支援定義的時候直接初始化

verilog中parameter和define的區別

hdl求助 宣告下面的verilog變數

10樓:

1)reg [31:0]m=32'b3;

2)integer count;

3)time snap_shot;

4)verilog hdl裡面沒有陣列的概念,要說有的話也應該是儲存器。這樣寫reg [31:0] mem[0:15];這是定義一個32*16的暫存器。

5)parameter cache_size=512;

int指標變數宣告定義,變數定義和變數宣告的區別

第一句話錯,原因是 int的指標變數p裡可以放空指標或是一個整型值,int型的指標就只能存放int,這裡的null意思是申明p指向空,不是存放空指標。第二局也不對 int 宣告的指標變數裡面放的不應該是一個指標麼?裡面存放的是一個地址,他指向一個int 所以應該p a 你的這種p 5的寫法是不對的,...

C語言裡自加和自減 放變數前和變數後有什麼不同作用啊

運算子在前,表示運算在前取值在後 運算子在後,表示運算在後取值在前c語言是程序式程式設計語言。不同於 純 函數語言程式設計語言,c語言的表示式可以改變變數的值或外部狀態,這被稱為表示式的 side effect i 就是含有 的表示式,在對 i i 這樣的字首運算子 prefix increment...

Excel問題,請教各位大神 在邏輯公式裡和符號通常都是代表什麼意思呢

就是and的意思,比如說 a1 a2的意思是兩個單元格的內容和起來,如a1是1,a2是2的話,那麼a1 a2就是12.符號是單元格的絕對引用,就單個單元格的公式來說,有沒有這個 結果都是一樣 的,但是如果你的公式要下拉複製到其他單元格,如果不加這個 單元格就會隨著公式單元格的變化而變化,而公式中加了...