最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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)遵守國家法律
江都市| 汉川市| 襄城县| 建阳市| 泰和县| 武平县| 邹城市| 永兴县| 德兴市| 乌恰县| 兴义市| 班戈县| 汉源县| 紫金县| 布尔津县| 平南县| 隆德县| 安乡县| 山阴县| 内江市| 囊谦县| 万州区| 台东市| 若尔盖县| 禄劝| 阳春市| 台湾省| 临沧市| 信丰县| 靖安县| 营山县| 理塘县| 九台市| 宜兴市| 兴山县| 秭归县| 普兰店市| 文成县| 吉安县| 乐安县| 旌德县|