国产精品天干天干,亚洲毛片在线,日韩gay小鲜肉啪啪18禁,女同Gay自慰喷水

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

SystemVerilog用戶自定義和枚舉數(shù)據(jù)類型

2022-01-11 21:53 作者:專心當(dāng)一個(gè)坑  | 我要投稿

用戶自定義和枚舉數(shù)據(jù)類型

1. 用戶自定義類型

用戶自定義類型關(guān)鍵字為typedef,例如


看一個(gè)例子


在這個(gè)例子中,我們只在模塊type1_tb自定義了一個(gè)bit_t的類型,在模塊type2_tb中直接使用bit_t聲明變量,看看結(jié)果會(huì)是怎樣的

結(jié)果顯示變量類型是未知的,如果我們把模塊type2_tb注釋掉,會(huì)不會(huì)還有這個(gè)結(jié)果

結(jié)果成功打印

這說明,自定義的數(shù)據(jù)類型bit_t確實(shí)是成功被定義,但他只作用于模塊type1_tb,因?yàn)槲覀儾]有在模塊type2_tb再次定義

那如果想要模塊type2_tb也能成功打印,可以在模塊type2_tb重新進(jìn)行一個(gè)自定義,像這樣


也可以用之前的編譯單元域$unit


可以看到,用戶自定義類型可以局部定義,也可以進(jìn)行共享定義

為了增加源碼的可讀性,一般用戶自定義的名稱后加_t,用以區(qū)分

2. 枚舉數(shù)據(jù)類型

2.1 基本內(nèi)容

枚舉數(shù)據(jù)類型的格式為:


枚舉可以理解為給標(biāo)簽名賦值,或給這個(gè)給數(shù)值一個(gè)標(biāo)簽

如果沒有明確給定數(shù)據(jù)類型,枚舉中的數(shù)值是int類型,且數(shù)值依次是0, 1, 2...

這個(gè)情況是不是很像有限狀態(tài)機(jī)對(duì)狀態(tài)的定義,就像這樣:


改成枚舉方式表示,會(huì)簡(jiǎn)單很多


枚舉數(shù)據(jù)類型中的標(biāo)簽名也可以用向量的方式表示,可以進(jìn)一步簡(jiǎn)化


這三個(gè)狀態(tài)定義是等價(jià)的

不僅如此,枚舉類型中的數(shù)值、數(shù)值類型、數(shù)值寬度也是可以自己定義的

比如FSM狀態(tài)定義時(shí),可以用獨(dú)熱碼(ont-hot),可以直接定義數(shù)值


這里要注意一點(diǎn),如果我們給定的位寬為3,那么給數(shù)值時(shí)不能超出位寬范圍

2.2 枚舉類型的賦值

枚舉類型只可以進(jìn)行下列賦值:

  • 枚舉類型列表中的一個(gè)標(biāo)簽

  • 同類枚舉類型的其他變量(用同樣枚舉類型聲明的變量)

  • 通過cast轉(zhuǎn)換成枚舉類型變量的數(shù)值

用一個(gè)枚舉類型來解釋這點(diǎn)


這里有一點(diǎn)需要說明,枚舉列表中的標(biāo)簽其實(shí)是代表一個(gè)數(shù)值(這點(diǎn)在下文會(huì)提到),在這個(gè)例子中,數(shù)值為int型,和info的數(shù)據(jù)類型相同,所以存在info = state + 1;的寫法,但是,state = info + 1是不可行的,因?yàn)槊杜e賦值并沒有給出這種形式

此外,state =state + 1; state ++等都是不允許的

2.3 枚舉類型專用任務(wù)和方法

<枚舉變量名>.first:返回指定變量列表中的第一個(gè)成員的值

<枚舉變量名>.last:返回指定變量列表中的最后一個(gè)成員的值

<枚舉變量名>.next():返回指定變量列表中后面第N個(gè)成員的值,如果到了列表末尾會(huì)返回列表開頭

<枚舉變量名>.prev():返回指定變量列表中前面第N個(gè)成員的值,如果到了列表開頭會(huì)返回列表末尾

<枚舉變量名>.num:返回變量的枚舉列表中元素個(gè)數(shù)

<枚舉變量名>.name:返回枚舉變量中代表這個(gè)值的字符串

下面依次對(duì)這幾個(gè)情況進(jìn)行仿真

源代碼如下:


運(yùn)行結(jié)果如下

可以看到,自始至終state_t均為s5,這幾個(gè)操作都不會(huì)改變state_t本身

此外,由<變量名>.prev(7)<變量名>.next(7)可以看出,這種方式是循環(huán)的

本文主要參考《SystemVerilog硬件設(shè)計(jì)及建模》


SystemVerilog用戶自定義和枚舉數(shù)據(jù)類型的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
钟祥市| 东兰县| 资讯 | 台中市| 平舆县| 通州市| 台中市| 大同市| 汤阴县| 东丰县| 兴国县| 江川县| 珲春市| 新龙县| 泽库县| 泰州市| 肥乡县| 勃利县| 丰原市| 乌拉特前旗| 库车县| 大名县| 封开县| 加查县| 广饶县| 潮州市| 葵青区| 广河县| 仁布县| 渝北区| 全南县| 九龙县| 乌拉特前旗| 常宁市| 泗阳县| 蒙阴县| 张家川| 安阳县| 潜江市| 平塘县| 吉水县|