日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

对象类型和数据类型

發布時間:2023/12/15 编程问答 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 对象类型和数据类型 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

對象類型和數據類型

Verilog數據類型
Verilog語言具有針對硬件的變量類型和線網類型。這些類型具有特定的仿真和綜合語義,表示芯片或系統中的實際連接行為。
(1)Verilog的reg、integer和time變量的每一位都有四種邏輯:0、1、Z、X
(2)Verilog的wire、wor、wand和其他線網(net)類型的每一位有120種值及專用線邏輯決斷函數。

SystemVerilog的數據類型
數據聲明具有類型和數據類型
“類型”定義了數據是線網還是變量
類型指示信號是線網還是變量
“數據類型”定義了數據是兩態還是四態的
數據類型指示線網或變量的值系統:對兩態數據類型是0或1,對四態數據類型是0、1、Z、X。SystemVerilog關鍵字logic定義對象是四態數據類型。在SystemVerilog-2005標準中,變量類型可是兩態的也可以是四態的,而線網類型只能是四態數據類型。

SystemVerilog四態變量
SystemVerilog使用logic關鍵字來描述通用的針對硬件的數據類型

logic resetN;//1位4態變量 logic[63:0] data; //64位寬變量 logic [0:7] array [0:255]; //8位數組變量

關鍵字logic實際上并不是一個變量類型,它是一個數據類型,表示信號具有四態值。但是,當logic關鍵字單獨使用時,則暗示這是一個變量。四態變量可以使用一對關鍵字var logic進行顯示聲明

var logic [63:0] addr; //一位64位寬變量

線網也可以用logic關鍵字顯示聲明為四態數據類型

wire logic[63:0] addr;//一位64位寬線網

SystemVerilog兩態變量
SystemVerilog增加了幾個新的兩態類型,更適合于比RTL更抽象的層次,如系統級和交易級建模。
(1)bit:1位兩態整數
(2)byte:8位兩態整數,類似于C語言的char
(3)shortint:16位兩態整數,類似于C語言的short
(4)int:32位兩態整數,類似于C語言的int
(5)longint:64位兩態整數,類似于C語言的longlong

使用兩態bit類型
抽象建模不需要四態值
reg和logic數據類型的 變量用來在過程中對硬件進行建模。這些數據類型儲存四態邏輯值:0、1、Z、X。可綜合RTL硬件模型中,更愿意使用四態類型。Z用于表示連接或三態邏輯。X值有助于檢測和隔離設計錯誤。更高級建模,如系統級和交易級中,幾乎不需要邏輯值Z和X。
兩態bit類型可以代替reg或logic類型
SystemVerilog允許變量聲明為bit數據類型。從語法上來說,任何使用reg和logic的地方都可以使用bit數據類型。但是,從語義上講,bit數據類型是不同的,它只要兩態值:0和1。bit數據類型對更高抽象的硬件建模非常有用。

bit restN; //1位兩態變量 bit [63:0] data;//64位寬的兩態變量 bit [0:7] array [0:255]; //8位兩態數組變量

關鍵字bit實際上并不是一種變量類型,而是一種數據類型,表示變量具有兩態值。但是,當bit變量單獨使用時,就暗示這是一個變量。一個兩態變量可以用關鍵字var bit顯示聲明

var bit [63:0] addr;//64位寬的變量

兩態仿真語義
四態類型從邏輯值X開始仿真
仿真開始時,四態變量,如reg、logic、和integer的所有位缺省為邏輯值X。這些變量認為沒有被初始化,因此直到賦給變量第一個值之前它們的值都是不確定的。四態變量可以通過內嵌初始化定義開始仿真時的值,但這是不可綜合的。

兩態類型從邏輯值0開始仿真
所有的兩態數據類型從邏輯0開始仿真。由于兩態類型不存儲X值,它們不能描述未初始化狀態。這也是更喜歡用四態類型描述可綜合RTL模型的原因之一

兩天類型X和Z值會被指定為0
給一個兩態變量賦值是合法的。例如,模塊輸入端口的四態值可以賦給模塊內的兩態bit類型。四態類型任何位的X或Z值賦給兩態時對應為會轉換為邏輯0

其他抽象類型
void類型代表無儲存
SystemVerilog增加了void類型表示無儲存。void類型可以用在標簽聯合體中以及用來定義無返回值的函數
shortreal等效于C中的float
SystemVerilog還增加了類似Verilog的real類型的shortreal變量類型。
shortreal是一個32位單精度浮點數,與C語言的float相同,而Verilog的real是一個雙精度變量,與C語言的double相同。real和shortreal類型是不可綜合的,但是在硬件抽象建模和測試程序中和有用。

顯示及隱式變量和線網類型
SystemVerilog具有線網和變量類型以及兩態和四態數據類型
在SystemVerilog術語中,變量和線網是具有兩態或四態“數據類型”。四態數據類型用關鍵字logic表示。兩態數據類型用關鍵字bit表示。當這些四態或兩態數據類型沒喲顯示指定數據類型是變量還是線網時,則推斷為隱式變量。

logic [7:0] busA;//推斷出一個四態數據類型的變量 bit [31:0] busA;//推斷出一個兩態數據類型的變量

Verilog關鍵字integer和time是具有預定義向量寬度的四態數據類型的變量。SystemVerilog關鍵字int、byte、shortint和longint是具有預定義向量寬度的兩態數據類型的變量。
SystemVerilog允許在任何數據類型前選擇性的使用var關鍵字

var logic [7:0] a; //四態8位變量 var bit [31:0] b; //兩態32位變量 var int i;//兩態32位變量

var關鍵字(variable的簡稱)表示對象是一個變量。var關鍵字并不影響變量的仿真或綜合行為。它的用途是使代碼能自成文檔。這一顯示描述方式可以在變量為用戶自定義類型時,代碼更易讀。

typedef enum bit {FALSE,TRUE} bool_t; var bool_t c;//用戶定義類型的變量

還可以用不含顯示數據類型的var聲明變量。在這種情況下,變量為logic數據類型

var [7:0] d;//四態8位變量

所有的Verilog線網類型(wire、uwire、wand、wor、tri、triand、trior、tri0、tri1、trireg、supply0、supply1)都是隱含為四態邏輯數據類型。

wire [31:0] busB;//聲明了一個線網類型,隱含為四態邏輯數據類型

線網可以選擇使用線網型和logic數據類型進行聲明

wire logic [31:0] busC;

為了避免混淆關鍵字組合,SystemVerilog不允許reg關鍵字直接與任何線網型關鍵字成對使用

wire reg [31:0] busD;//非法的關鍵字配對

兩態類型與四態類型同樣綜合
綜合會忽略兩態類型的默認初始值
四態logic類型和兩態bit、byte、shorint、int和longint類型都是可綜合的。綜合編譯器對兩態和四態類型同樣對待。兩態類型的使用主要影響仿真。
兩態類型從默認邏輯值0開始仿真。綜合忽略這一默認初始值,使用兩態類型時,綜合后的設計不能保證加電后為0,就和綜合前一樣。

創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎

總結

以上是生活随笔為你收集整理的对象类型和数据类型的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。