Verilog 數(shù)據(jù)類型

Verilog 數(shù)據(jù)類型

Verilog中,數(shù)據(jù)類型主要分為兩類:物理數(shù)據(jù)類型(主要包括連線型和寄存器型)和抽象數(shù)據(jù)類型(主要包括:整型、時(shí)間型、實(shí)型和參數(shù)型)

物理數(shù)據(jù)類型與實(shí)際硬件電路的硬件關(guān)系比較明顯,抽象程度比較低

抽象數(shù)據(jù)類型是進(jìn)行輔助設(shè)計(jì)和驗(yàn)證的數(shù)據(jù)類型

1 物理數(shù)據(jù)類型

Verilog中主要的物理數(shù)據(jù)類型是:連線型、寄存器型、存儲(chǔ)器型

使用四種邏輯電平(0,1,x,z)和八種信號(hào)強(qiáng)度(strength)對(duì)實(shí)際的電路進(jìn)行建模

四種邏輯電平是對(duì)信號(hào)的抽象

信號(hào)強(qiáng)度表示數(shù)字電路中不同強(qiáng)度的驅(qū)動(dòng)源,用來解決不同驅(qū)動(dòng)強(qiáng)度下的賦值沖突,八種強(qiáng)度如下,自上往下,強(qiáng)度遞減

標(biāo)記符號(hào) 名稱 類型
supply 電源級(jí)驅(qū)動(dòng) 驅(qū)動(dòng)
strong 強(qiáng)驅(qū)動(dòng) 驅(qū)動(dòng)
pull 上拉級(jí)驅(qū)動(dòng) 驅(qū)動(dòng)
large 大容性 存儲(chǔ)
weak 弱驅(qū)動(dòng) 驅(qū)動(dòng)
medium 中性驅(qū)動(dòng) 存儲(chǔ)
small 小容性 存儲(chǔ)
highz 高容性 高祖

1.1 連線型

連線表示邏輯單元的物理連接,可以對(duì)應(yīng)電路中的物理信號(hào)連線,這種變量不能保持電荷(trireg除外)

連線型變量必須要有驅(qū)動(dòng)源,一種是連接到一個(gè)門或者模塊的輸出端,另一種是用assign對(duì)它進(jìn)行賦值,若沒有驅(qū)動(dòng)源,將保持高阻態(tài)z

連線型有如下幾種:

連線型數(shù)據(jù)類型 功能說明
wire,tri 標(biāo)準(zhǔn)連線(缺省為該類型)
wor,trior 多重驅(qū)動(dòng)時(shí),具有線或特性的連線型
trireg 具有電荷保持特性的連線型數(shù)據(jù)
tri1 上拉電阻
tri0 下拉電阻
supply0 電源線,用于對(duì)“地”建模,為低電平0
supply1 電源線,用于對(duì)電源線建模,為高電平1
wand, trand 多重驅(qū)動(dòng)時(shí),具有線與特性的連線型

1.1.1 wire和tri

wire(連線)和tri(三態(tài)線)是最常見的,語法和語義是一致的。

不同之處如下:

  • wire型變量通常用來表示單個(gè)驅(qū)動(dòng)門或assign賦值語句的連線

  • tri型變量用來表示多驅(qū)動(dòng)器驅(qū)動(dòng)的連線型數(shù)據(jù),主要用于定義三態(tài)的線網(wǎng)

    wire/tri 0 1 x z
    0 0 x x 0
    1 x 1 x 1
    x x x x x
    z 0 1 x z

    上述真值表是:同時(shí)有兩個(gè)驅(qū)動(dòng)強(qiáng)度相同的驅(qū)動(dòng)源來驅(qū)動(dòng)wire或tri變量時(shí)的輸出結(jié)果

    注意:這里并非是與邏輯,可以理解為都想給線賦值,因此當(dāng)出現(xiàn)0和1同時(shí)賦值時(shí),由于驅(qū)動(dòng)強(qiáng)度相同,因此最終結(jié)果是不定值x

1.1.2 wor和trior

wor/trior 0 1 x z
0 0 1 x 0
1 1 1 1 1
x x 1 1 1
z 0 1 x z

1.1.3 wand和triand

wand/triand 0 1 x z
0 0 0 0 0
1 0 1 x 1
x 0 x x x
z 0 1 x z

wand和triand便是與邏輯,因此當(dāng)0和1同時(shí)出現(xiàn)時(shí),結(jié)果是0&1的結(jié)果

1.1.4 tri0和tri1

tri的特征是,若無驅(qū)動(dòng)源,其值為緊跟的數(shù)字

tri0/tri1 0 1 x z
0 0 x x 0
1 x 1 x 1
x x x x x
z 0 1 x 0/1

1.1.5 supply0和supply1

supply0表示GND,supply1表示VCC

1.1.6 trireg線網(wǎng)

trireg線網(wǎng)型可以存儲(chǔ)數(shù)值,類似于寄存器數(shù)據(jù)類型,用于電容節(jié)點(diǎn)的建模。

當(dāng)三態(tài)寄存器(trireg)的所有驅(qū)動(dòng)源都處于高阻態(tài)z時(shí),trireg保持作用在線網(wǎng)的最后一個(gè)邏輯值。

trireg的缺省初始值為x

存儲(chǔ)電荷強(qiáng)度有如下幾個(gè)關(guān)鍵字控制:

small、medium、large,默認(rèn)電荷強(qiáng)度為medium

對(duì)于trireg型數(shù)據(jù),仿真時(shí)其電荷衰減時(shí)間應(yīng)制定為延遲時(shí)間

1.2 寄存器型

reg型變量對(duì)應(yīng)的硬件電路元件具有狀態(tài)保持作用,能夠存儲(chǔ)數(shù)據(jù)

reg型變量常用于行為級(jí)描述,由過程賦值語句對(duì)其進(jìn)行賦值

reg和wire的區(qū)別:

  • reg保持最后一次的賦值,wire需要持續(xù)的驅(qū)動(dòng)
  • reg默認(rèn)初始值為不定值x,wire默認(rèn)初始值為不定值z

reg型變量一般是無符號(hào)的,若將負(fù)數(shù)賦值給reg型變量,會(huì)自動(dòng)轉(zhuǎn)成其補(bǔ)碼形式

1.3 連線型和寄存器型數(shù)據(jù)聲明對(duì)比

1.3.1 連線型數(shù)據(jù)聲明

語法為<net_declaration><drive_strength><range><delay><list_of_variables>

drive_strength、range、delay是可選項(xiàng)目,list_of_variables為必選項(xiàng)

  • net_declaration:數(shù)據(jù)的類型,可以是wire、tri、tri0、tri1、wand、triand、trior、wor、trireg中的任意一個(gè)
  • drive_strength:驅(qū)動(dòng)強(qiáng)度
  • range:用來指定數(shù)據(jù)位標(biāo)量或矢量。默認(rèn)表示數(shù)據(jù)類型為1bit的標(biāo)量,超過1bit就為矢量形式
  • delay:指定仿真延遲時(shí)間
  • list_of_variables:變量名稱

1.3.2 寄存器型數(shù)據(jù)聲明

語法為:reg <range><list_of_variables>

  • range:可選項(xiàng),確定變量位寬
  • list_of_variables:變量名稱

1.4 存儲(chǔ)器型

存儲(chǔ)器型本質(zhì)上是寄存器型變量的陣列,所以用reg型變量建立寄存器組實(shí)現(xiàn)存儲(chǔ)器功能。

存儲(chǔ)器變量聲明格式:reg<range1><name_of_list><range2>

其中,range1和range2是可選項(xiàng),缺省是都為1

說明:

  • range1:表示存儲(chǔ)器中寄存器的位寬
  • range2:表示寄存器的個(gè)數(shù)

例如:reg [7:0] mem [255:0]表示由256個(gè)位寬為8bit的寄存器組成的存儲(chǔ)器

2 抽象型數(shù)據(jù)類型

抽象型數(shù)據(jù)類型有:整型(integer)、時(shí)間型(time)、實(shí)型(real)和參數(shù)型(parameter)

2.1 整型

整型數(shù)據(jù)常用于對(duì)循環(huán)控制變量的說明,在算術(shù)運(yùn)算中被視為二進(jìn)制補(bǔ)碼形式的有符號(hào)數(shù)

整型數(shù)據(jù)默認(rèn)為32bit有符號(hào)數(shù)

2.2 時(shí)間型

時(shí)間型與整型數(shù)據(jù)類似,不過時(shí)間型是64bit無符號(hào)數(shù)

時(shí)間型數(shù)據(jù)主要用于對(duì)模擬時(shí)間的存儲(chǔ)與計(jì)算處理,常與系統(tǒng)函數(shù)$time一起使用

2.3 實(shí)型

Verilog支持實(shí)型常量與變量,實(shí)型數(shù)據(jù)在機(jī)器碼表示法中是浮點(diǎn)型數(shù)據(jù),可用于對(duì)延遲時(shí)間的計(jì)算

2.4 參數(shù)型

參數(shù)型數(shù)據(jù)屬于常量,在仿真開始之前就被賦值,并在仿真過程中保持不變

參數(shù)定義方法可以提高程序可可讀性和可維護(hù)性,常用來定義延遲時(shí)間和變量的位寬

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容