日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

數(shù)字硬件建模SystemVerilog的結(jié)構(gòu)體表達(dá)式

OpenFPGA ? 來(lái)源:OpenFPGA ? 作者:OpenFPGA ? 2022-07-01 17:32 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

數(shù)字硬件建模SystemVerilog-結(jié)構(gòu)體(一)

c0744184-f67a-11ec-ba43-dac502259ad0.png

結(jié)構(gòu)體

結(jié)構(gòu)體用于將多個(gè)變量組合在一個(gè)通用名稱下。設(shè)計(jì)通常具有邏輯信號(hào)組,例如總線協(xié)議的控制信號(hào),或狀態(tài)控制器內(nèi)使用的信號(hào)。結(jié)構(gòu)體提供了將這些相關(guān)變量捆綁在一起的方法。結(jié)構(gòu)體中的所有變量都可以單個(gè)賦值,或者每個(gè)變量都可以單獨(dú)賦值。結(jié)構(gòu)體包可以復(fù)制到具有相同定義的另一個(gè)結(jié)構(gòu)體,并通過(guò)模塊端口、任務(wù)或函數(shù)進(jìn)出。

結(jié)構(gòu)體聲明結(jié)構(gòu)體是使用struct關(guān)鍵字聲明的,類似于C語(yǔ)言。struct關(guān)鍵字后面跟著一個(gè)開(kāi)始的大括號(hào)( { )變量聲明列表,結(jié)束的大括號(hào)(}),然后是結(jié)構(gòu)體的名稱。

c08edf80-f67a-11ec-ba43-dac502259ad0.png

一個(gè)結(jié)構(gòu)體可以將任意數(shù)量的變量數(shù)據(jù)類型捆綁在一起,用戶自定義類型、Parameter和localparam常量也可以包含在一個(gè)結(jié)構(gòu)體中,結(jié)構(gòu)體中的Parameter不能像模塊中的Parameter那樣重新定義,結(jié)構(gòu)體中的參數(shù)被視為localparam。

結(jié)構(gòu)體成員賦值結(jié)構(gòu)體中的變量稱為結(jié)構(gòu)體成員。每個(gè)成員都有一個(gè)名稱,可用于從結(jié)構(gòu)體中選擇該成員。使用結(jié)構(gòu)體的名稱引用結(jié)構(gòu)體成員,后跟句點(diǎn)(。)然后是成員的名字。這與C中的語(yǔ)法相同。例如,要為前面結(jié)構(gòu)體的address成員賦值,引用為:

c09ab922-f67a-11ec-ba43-dac502259ad0.png

結(jié)構(gòu)體不同于數(shù)組,因?yàn)閿?shù)組是所有類型和大小相同的元素的集合,而結(jié)構(gòu)體是不同類型和大小的變量和常量的集合。另一個(gè)區(qū)別是,數(shù)組的元素是通過(guò)在數(shù)組中使用索引來(lái)引用的;結(jié)構(gòu)體的成員是通過(guò)使用成員名稱來(lái)引用的。

整個(gè)結(jié)構(gòu)體賦值可以為整個(gè)結(jié)構(gòu)體指定一個(gè)結(jié)構(gòu)體表達(dá)式。結(jié)構(gòu)體表達(dá)式是使用逗號(hào)分隔的值列表形成的,這些值包含在標(biāo)記’{}之間,這與將一組值分配給數(shù)組的方式相同,大括號(hào)必須包含結(jié)構(gòu)體中每個(gè)成員的值。例如:

c0ad7e68-f67a-11ec-ba43-dac502259ad0.png

結(jié)構(gòu)體表達(dá)式中的值必須按照在結(jié)構(gòu)體中定義的順序列出,如前一示例所示?;蛘?,結(jié)構(gòu)體表達(dá)式可以指定要為其賦值的結(jié)構(gòu)體成員的名稱,其中成員名稱和值用冒號(hào)(:)分隔。結(jié)構(gòu)體表達(dá)式中的成員名稱稱為tags。指定成員名稱后,表達(dá)式列表可以是任意順序。

c0c2a1a8-f67a-11ec-ba43-dac502259ad0.png

在同一個(gè)結(jié)構(gòu)體表達(dá)式中混合按名稱和按順序賦值是非法的。

結(jié)構(gòu)體表達(dá)式中的默認(rèn)值。結(jié)構(gòu)體表達(dá)式可以通過(guò)指定默認(rèn)值為一個(gè)結(jié)構(gòu)體的多個(gè)成員指定值,默認(rèn)值是使用default關(guān)鍵字指定的。

c0d37c4e-f67a-11ec-ba43-dac502259ad0.png

結(jié)構(gòu)體表達(dá)式還可以包含對(duì)特定結(jié)構(gòu)體成員的混合賦值,以及對(duì)所有其他成員指定默認(rèn)值。

c0e449c0-f67a-11ec-ba43-dac502259ad0.png

結(jié)構(gòu)體中的枚舉數(shù)據(jù)類型。前兩個(gè)帶有默認(rèn)值的示例存在語(yǔ)義錯(cuò)誤,分配給結(jié)構(gòu)體成員的默認(rèn)值必須與成員的數(shù)據(jù)類型兼容。由于大多數(shù)SystemVerilog變量都是弱類型的,因此幾乎所有默認(rèn)值都是兼容的。然而,枚舉數(shù)據(jù)類型變量的類型更強(qiáng)。對(duì)枚舉數(shù)據(jù)類型變量的賦值必須是其枚舉列表中的標(biāo)簽,或者是同一枚舉數(shù)據(jù)類型定義的另一個(gè)枚舉變量。

上述instruction_word 的兩個(gè)賦值語(yǔ)句試圖將opcode的默認(rèn)值賦值為0。這是opcode的非法值,它是一個(gè)opcode_t枚舉數(shù)據(jù)類型變量(opcode_t的typedef定義是之前枚舉變量章節(jié))。當(dāng)結(jié)構(gòu)體的成員是枚舉數(shù)據(jù)類型變量時(shí),結(jié)構(gòu)體表達(dá)式必須為該成員指定合法的顯式值。可以為所有其他成員指定默認(rèn)值。例如:

c0f4dc90-f67a-11ec-ba43-dac502259ad0.png

自定義和匿名結(jié)構(gòu)體用戶自定義類型可以使用typedef關(guān)鍵字從結(jié)構(gòu)體中創(chuàng)建。將結(jié)構(gòu)體聲明為用戶自定義類型不會(huì)分配任何存儲(chǔ)空間。在使用該結(jié)構(gòu)體之前,必須聲明該用戶自定義類型的網(wǎng)絡(luò)或變量。

c1181944-f67a-11ec-ba43-dac502259ad0.png

不使用typedef的結(jié)構(gòu)體被定義為匿名結(jié)構(gòu)體。使用typedef聲明的結(jié)構(gòu)體被視為自定義結(jié)構(gòu)體。匿名結(jié)構(gòu)體和自定義結(jié)構(gòu)體都可以在模塊中定義,但這些本地(局部)定義只能在該模塊中使用。自定義結(jié)構(gòu)體也可以在包中定義,并導(dǎo)入到需要結(jié)構(gòu)體定義的設(shè)計(jì)塊中。包中定義的自定義結(jié)構(gòu)體可用于多個(gè)模塊和驗(yàn)證測(cè)試臺(tái)。

結(jié)構(gòu)體復(fù)制一個(gè)自定義結(jié)構(gòu)體可以復(fù)制到另一個(gè)自定義結(jié)構(gòu)體,只要這兩個(gè)結(jié)構(gòu)體是從同一個(gè)自定義結(jié)構(gòu)體定義聲明的。以下示例使用了上節(jié)中所示的結(jié)構(gòu)體定義和聲明。

匿名結(jié)構(gòu)體不能作為一個(gè)整體復(fù)制,但可以一次復(fù)制一個(gè)成員:

c13cae12-f67a-11ec-ba43-dac502259ad0.png

原文標(biāo)題:SystemVerilog-結(jié)構(gòu)體(一)

文章出處:【微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

審核編輯:彭靜
聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 數(shù)據(jù)
    +關(guān)注

    關(guān)注

    8

    文章

    7349

    瀏覽量

    95058
  • 硬件
    +關(guān)注

    關(guān)注

    13

    文章

    3639

    瀏覽量

    69185
  • 存儲(chǔ)空間
    +關(guān)注

    關(guān)注

    0

    文章

    55

    瀏覽量

    11083

原文標(biāo)題:SystemVerilog-結(jié)構(gòu)體(一)

文章出處:【微信號(hào):Open_FPGA,微信公眾號(hào):OpenFPGA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    什么是正則表達(dá)式?正則表達(dá)式如何工作?哪些語(yǔ)法規(guī)則適用正則表達(dá)式

    正則表達(dá)式又稱規(guī)則表達(dá)式(Regular Expression,在代碼中常簡(jiǎn)寫為 regex、regexp 或 RE),是一種用于匹配、查找、替換文本的強(qiáng)大工具。它能夠以特定的模式匹配字符串,從而
    的頭像 發(fā)表于 11-03 14:41 ?6239次閱讀
    什么是正則<b class='flag-5'>表達(dá)式</b>?正則<b class='flag-5'>表達(dá)式</b>如何工作?哪些語(yǔ)法規(guī)則適用正則<b class='flag-5'>表達(dá)式</b>?

    防范表達(dá)式的失控

    在C 語(yǔ)言中,表達(dá)式是最重要的組成部分之一,幾乎所有的代碼都由表達(dá)式構(gòu)成。表達(dá)式的使用如此廣泛,讀者也許會(huì)產(chǎn)生這樣的疑問(wèn),像+ 、- 、3 、/ 、& & 這樣簡(jiǎn)單的運(yùn)算也會(huì)出現(xiàn)
    發(fā)表于 04-22 16:57 ?13次下載

    深入淺出boost正則表達(dá)式

    什么是正則表達(dá)式?正則表達(dá)式是一種用來(lái)描述一定數(shù)量文本的模式。Regex代表Regular Express. 如果您不知道什么是正則表達(dá)式,請(qǐng)看這篇文章:深入淺出之正則表達(dá)式
    發(fā)表于 09-08 18:09 ?9次下載

    OFDM的基帶信號(hào)表達(dá)式

    OFDM的基帶信號(hào)表達(dá)式1 OFDM的系統(tǒng)結(jié)構(gòu) OFDM的系統(tǒng)結(jié)構(gòu)如圖1所示。
    發(fā)表于 10-20 16:07 ?6478次閱讀
    OFDM的基帶信號(hào)<b class='flag-5'>表達(dá)式</b>

    Verilog HDL硬件描述語(yǔ)言_表達(dá)式

    本章講述在Verilog HDL中編寫表達(dá)式的基礎(chǔ)。表達(dá)式由操作數(shù)和操作符組成。表達(dá)式可以在出現(xiàn)數(shù)值的任何地方使用。verilog相關(guān)教程材料,有興趣的同學(xué)可以下載學(xué)習(xí)。
    發(fā)表于 04-25 16:09 ?19次下載

    Python正則表達(dá)式的學(xué)習(xí)指南

    本文介紹了Python對(duì)于正則表達(dá)式的支持,包括正則表達(dá)式基礎(chǔ)以及Python正則表達(dá)式標(biāo)準(zhǔn)庫(kù)的完整介紹及使用示例。本文的內(nèi)容不包括如何編寫高效的正則表達(dá)式、如何優(yōu)化正則
    發(fā)表于 09-15 08:00 ?0次下載
    Python正則<b class='flag-5'>表達(dá)式</b>的學(xué)習(xí)指南

    Python正則表達(dá)式指南

    本文介紹了Python對(duì)于正則表達(dá)式的支持,包括正則表達(dá)式基礎(chǔ)以及Python正則表達(dá)式標(biāo)準(zhǔn)庫(kù)的完整介紹及使用示例。本文的內(nèi)容不包括如何編寫高效的正則表達(dá)式、如何優(yōu)化正則
    發(fā)表于 03-26 09:13 ?10次下載
    Python正則<b class='flag-5'>表達(dá)式</b>指南

    基于運(yùn)算符信息的數(shù)學(xué)表達(dá)式檢索技術(shù)

    傳統(tǒng)的文本檢索技術(shù)主要面向一維文本,難以用于對(duì)二維結(jié)構(gòu)數(shù)學(xué)表達(dá)式的檢索。針對(duì)該問(wèn)題,通過(guò)引入公式描述結(jié)構(gòu),實(shí)現(xiàn)基于運(yùn)算符信息的數(shù)學(xué)表達(dá)式檢索。利用公式描述
    發(fā)表于 04-29 15:58 ?2次下載
    基于運(yùn)算符信息的數(shù)學(xué)<b class='flag-5'>表達(dá)式</b>檢索技術(shù)

    SystemVerilog-運(yùn)算符/表達(dá)式規(guī)則

    RTL建模中廣泛使用的運(yùn)算符是條件運(yùn)算符,也稱為三元運(yùn)算符,該運(yùn)算符用于在兩個(gè)表達(dá)式之間進(jìn)行選擇——表5-2列出了用于表示條件運(yùn)算符的重點(diǎn)。
    的頭像 發(fā)表于 08-03 09:03 ?4739次閱讀

    Lambda表達(dá)式詳解

    C++11中的Lambda表達(dá)式用于 **定義并創(chuàng)建匿名的函數(shù)對(duì)象** ,以簡(jiǎn)化編程工作。下面看一下Lambda表達(dá)式的基本構(gòu)成。
    的頭像 發(fā)表于 02-09 11:28 ?2144次閱讀

    表達(dá)式與邏輯門之間的關(guān)系

    邏輯表達(dá)式是指表示一個(gè)表示邏輯運(yùn)算關(guān)系的式子,是一個(gè)抽象的類似數(shù)學(xué)表達(dá)式,下面我們重點(diǎn)說(shuō)明下其表達(dá)式與邏輯門之間的關(guān)系。
    的頭像 發(fā)表于 02-15 14:54 ?2949次閱讀
    <b class='flag-5'>表達(dá)式</b>與邏輯門之間的關(guān)系

    C語(yǔ)言的表達(dá)式

    在C語(yǔ)言中,表達(dá)式是由操作符和操作數(shù)組成。表達(dá)式可以由一個(gè)或者多個(gè)操作數(shù)組成,不同的操作符與操作數(shù)組成不同的表達(dá)式,因此,表達(dá)式才是C語(yǔ)言的基本。
    的頭像 發(fā)表于 02-21 15:09 ?2819次閱讀
    C語(yǔ)言的<b class='flag-5'>表達(dá)式</b>

    shell腳本基礎(chǔ):正則表達(dá)式grep

    在Linux上有許多命令可以使用正則表達(dá)式,其中最常見(jiàn)的是grep命令和sed命令。正則表達(dá)式有多種類型,每種類型中可以使用的元字符類型不同。最常見(jiàn)的是基本正則表達(dá)式和擴(kuò)展正則表達(dá)式
    的頭像 發(fā)表于 05-29 09:29 ?2384次閱讀
    shell腳本基礎(chǔ):正則<b class='flag-5'>表達(dá)式</b>grep

    一文詳解Verilog表達(dá)式

    表達(dá)式由操作符和操作數(shù)構(gòu)成,其目的是根據(jù)操作符的意義得到一個(gè)計(jì)算結(jié)果。表達(dá)式可以在出現(xiàn)數(shù)值的任何地方使用。
    的頭像 發(fā)表于 05-29 16:23 ?4089次閱讀
    一文詳解Verilog<b class='flag-5'>表達(dá)式</b>

    zabbix觸發(fā)器表達(dá)式 基本RS觸發(fā)器表達(dá)式 rs觸發(fā)器的邏輯表達(dá)式

    zabbix觸發(fā)器表達(dá)式 基本RS觸發(fā)器表達(dá)式 rs觸發(fā)器的邏輯表達(dá)式? Zabbix是一款開(kāi)源的監(jiān)控軟件,它能通過(guò)監(jiān)控指標(biāo)來(lái)實(shí)時(shí)監(jiān)測(cè)服務(wù)器和網(wǎng)絡(luò)的運(yùn)行狀態(tài),同時(shí)還能提供警報(bào)和報(bào)告等功能來(lái)幫助管理員
    的頭像 發(fā)表于 08-24 15:50 ?2591次閱讀
    南丰县| 望奎县| 永平县| 阳山县| 黄梅县| 宜兰市| 当雄县| 赣州市| 澜沧| 恩施市| 寻甸| 武隆县| 永川市| 蒙山县| 育儿| 丽水市| 英山县| 海口市| 尖扎县| 维西| 阿荣旗| 阳谷县| 茶陵县| 玉屏| 乌鲁木齐市| 大同县| 涞水县| 吉木乃县| 乌兰县| 盐源县| 濮阳市| 望谟县| 胶南市| 宁夏| 武威市| 皮山县| 老河口市| 张家川| 霍林郭勒市| 岳池县| 临夏县|