一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

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

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

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

SystemVerilog中至關(guān)重要的結(jié)構(gòu)體和自定義類型

jf_78858299 ? 來(lái)源:芯片學(xué)堂 ? 作者:JKZHAN ? 2023-01-21 17:18 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

在上一篇文章《SystemVerilog中至關(guān)重要的的數(shù)據(jù)類型》中,介紹了枚舉類型的本質(zhì)和使用語(yǔ)法。本文接著介紹SV中同樣不可忽略的結(jié)構(gòu)體(structure)和自定義類型(typedef),最后也會(huì)給出一小段涵蓋絕大部分語(yǔ)法點(diǎn)的例程。個(gè)人覺(jué)得編程語(yǔ)言的熟練掌握更多在平時(shí)練習(xí)和思考,語(yǔ)法忘掉了隨時(shí)可以查閱。

認(rèn)識(shí)結(jié)構(gòu)體

結(jié)構(gòu)體(structure)是一種可以包含不同數(shù)據(jù)類型元素的集合類型。這一點(diǎn)跟數(shù)組、隊(duì)列等集合類型是不一樣的,數(shù)組和隊(duì)列只能包含相同數(shù)據(jù)類型的元素。結(jié)構(gòu)體在引用的時(shí)候,可以對(duì)這些元素進(jìn)行整體引用,也可以通過(guò)元素名稱來(lái)對(duì)元素進(jìn)行單獨(dú)引用。

基于這個(gè)特性,結(jié)構(gòu)體通??梢杂脕?lái)表征一個(gè)包含了諸多不同類型屬性的對(duì)象。比如,當(dāng)我們想要表征一個(gè)人的所有屬性的時(shí)候,名字元素可以用string類型,年齡元素可以用int類型,存款元素可以用real類型等等,最后可以通過(guò)對(duì)整體引用來(lái)獲得一個(gè)人的所有屬性,也可以通過(guò)元素名稱來(lái)獲得單個(gè)屬性。

另一個(gè)栗子,可以使用結(jié)構(gòu)體來(lái)定義某個(gè)寄存器的結(jié)構(gòu)。在結(jié)構(gòu)體類型定義的時(shí)候,我們可以在內(nèi)部使用logic [n:m]等基本數(shù)據(jù)類型來(lái)定義寄存器的不同域段。這樣一來(lái),我們不但可以對(duì)寄存器進(jìn)行整體引用,又可以使用元素名來(lái)很方便地讀寫(xiě)寄存器的各個(gè)域段。

講完結(jié)構(gòu)體的邏輯結(jié)構(gòu),下面來(lái)看看結(jié)構(gòu)體的物理結(jié)構(gòu)。

在內(nèi)存存儲(chǔ)一個(gè)結(jié)構(gòu)體的時(shí)候,SV提供了packed關(guān)鍵字用來(lái)區(qū)分合并(packed)和非合并(unpacked)存儲(chǔ)方式?!昂喜ⅰ边@個(gè)概念在另一篇文章中也有涉及。合并的結(jié)構(gòu)體,其元素會(huì)被無(wú)間隙的存放到一塊連續(xù)的內(nèi)存空間上。而非合并的結(jié)構(gòu)體,其物理結(jié)構(gòu)一般依賴于C編譯器。SV默認(rèn)是非合并的,這是為了提高內(nèi)存空間的利用率,如果用戶想要用合并的,需要在struct關(guān)鍵字后面加上packed。

合并的結(jié)構(gòu)體是有不少用處的。第一,合并結(jié)構(gòu)體的整體可以被當(dāng)成一個(gè)向量來(lái)看待,這樣一來(lái),合并結(jié)構(gòu)體的賦值、讀取和數(shù)值計(jì)算上多了靈活性;第二,合并結(jié)構(gòu)體可以通過(guò)在packed關(guān)鍵字后面加signed/unsigned來(lái)指定為有無(wú)符號(hào)類型,排在第一個(gè)位置的元素最高位為符號(hào)位,相比之下,非合并的結(jié)構(gòu)體是不能被指定為有符號(hào)類型的。

結(jié)構(gòu)體的使用

SV結(jié)構(gòu)體的特性跟C語(yǔ)言基本一致,但在語(yǔ)法上有差別。比如在C語(yǔ)言中,定義一個(gè)結(jié)構(gòu)體類型,是在struct關(guān)鍵字后面加上structure tag名來(lái)作為類型名稱;而在SV中,統(tǒng)一使用typedef來(lái)定義結(jié)構(gòu)體類型名稱。

這里穿插介紹一下typedef。typedef是SV中提供用來(lái)重定義類型名的關(guān)鍵字,一般也叫做用戶自定義類型。其最大的好處就是可以將一些“又臭又長(zhǎng)”的類型定義成簡(jiǎn)短的類型名,特別是在一些復(fù)雜的testbench中會(huì)經(jīng)常遇到。使用typedef可以提高編程效率,也可以通過(guò)新的類型名來(lái)提高代碼的可讀性。

看看代碼吧

下面代碼和注釋總結(jié)了結(jié)構(gòu)體的使用方法,個(gè)人覺(jué)得掌握例程中的內(nèi)容對(duì)工作來(lái)說(shuō)已經(jīng)完全足夠啦,但例程同樣沒(méi)有經(jīng)過(guò)編譯哈。

圖片

參考文獻(xiàn)

[1] IEEE Standard Association. "IEEE Standard for SystemVerilog-Unified Hardware Design, Specification, and Verification Language." (2013).

聲明:本文內(nèi)容及配圖由入駐作者撰寫(xiě)或者入駐合作網(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

    文章

    7256

    瀏覽量

    91912
  • Verilog
    +關(guān)注

    關(guān)注

    29

    文章

    1367

    瀏覽量

    112310
  • 代碼
    +關(guān)注

    關(guān)注

    30

    文章

    4900

    瀏覽量

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

掃碼添加小助手

加入工程師交流群

    評(píng)論

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

    LabVIEW自定義控件

    。如果修改該控鍵,那么使用該控鍵的實(shí)例也將會(huì)做相應(yīng)的改動(dòng)。如 果選擇 了自定義類型,那么控件和實(shí)例的數(shù)據(jù)類型是 保持一 致的,比如自定義
    發(fā)表于 01-07 10:57

    LabVIEW自定義數(shù)據(jù)類型

    一直只知道自定義控件,不知道自定義數(shù)據(jù)類型,直到有一天看到別人的后面板某控件左上角有個(gè)黑色小三角形,像這樣,才知道有自定義數(shù)據(jù)類型,類似于C
    發(fā)表于 03-24 17:24

    用戶自定義結(jié)構(gòu)數(shù)據(jù)怎么存儲(chǔ)成VARIANT類型

    將用戶自定義的C結(jié)構(gòu)數(shù)據(jù)存儲(chǔ)成VARIANT類型,需要時(shí)再將VARIANT類型轉(zhuǎn)為用戶自定義結(jié)構(gòu)
    發(fā)表于 08-02 07:08

    請(qǐng)問(wèn)自定義結(jié)構(gòu)u16 RESERVEDi起什么作用?

    STM32的自定義結(jié)構(gòu),存在u16RESERVEDi(i為一個(gè)整數(shù)索引值)的作用是什么,我是初學(xué)者,對(duì)這不是很明白,希望大家?guī)兔Γ?/div>
    發(fā)表于 08-24 08:00

    嵌入式ARM開(kāi)發(fā)之自定義數(shù)據(jù)類型相關(guān)資料推薦

    自定義數(shù)據(jù)類型變量集合常量集合重命名struct(結(jié)構(gòu))元素地址連續(xù)排列union(共用)元素共用起始地址enum(枚舉)被命名的整型常
    發(fā)表于 12-14 07:19

    SOPC自定義外設(shè)和自定義指令性能分析

    SOPC自定義外設(shè)和自定義指令性能分析 NiosII是一個(gè)建立在FPGA上的嵌入式軟核處理器,靈活性很強(qiáng)。作為體現(xiàn)NiosII靈活性精髓的兩個(gè)最主要方面,自
    發(fā)表于 03-29 15:12 ?1717次閱讀
    SOPC<b class='flag-5'>中</b><b class='flag-5'>自定義</b>外設(shè)和<b class='flag-5'>自定義</b>指令性能分析

    1602自定義字符

    1602液晶能夠顯示自定義字符,能夠根據(jù)讀者的具體情況顯示自定義字符。
    發(fā)表于 01-20 15:43 ?1次下載

    C++程序設(shè)計(jì)教程之自定義數(shù)據(jù)類型的詳細(xì)資料說(shuō)明

    本文檔詳細(xì)介紹的是C++程序設(shè)計(jì)教程之自定義數(shù)據(jù)類型的詳細(xì)資料說(shuō)明主要內(nèi)容包括了:1. 結(jié)構(gòu)類型,2. 共用
    發(fā)表于 03-14 16:04 ?1次下載
    C++程序設(shè)計(jì)教程之<b class='flag-5'>自定義</b>數(shù)據(jù)<b class='flag-5'>類型</b>的詳細(xì)資料說(shuō)明

    淺析Zephyr應(yīng)用的代碼結(jié)構(gòu)自定義驅(qū)動(dòng)

    項(xiàng)目納入到應(yīng)用代碼目錄管理 Zephyr應(yīng)用的代碼結(jié)構(gòu)--自定義開(kāi)發(fā)板: 將自定義board納入到應(yīng)用代碼目錄管理 除了上面兩個(gè)場(chǎng)景外,我們的硬件可能也有新的驅(qū)動(dòng)需求,而該驅(qū)動(dòng)不被Zephyr支持,如果
    的頭像 發(fā)表于 08-18 09:08 ?5363次閱讀

    自定義視圖組件教程案例

    自定義組件 1.自定義組件-particles(粒子效果) 2.自定義組件- pulse(脈沖button效果) 3.自定義組件-progress(progress效果) 4.
    發(fā)表于 04-08 10:48 ?15次下載

    SystemVerilog至關(guān)重要的的數(shù)據(jù)類型

    對(duì)于剛接觸SV的小伙伴來(lái)說(shuō),SV有幾種不怎么能引起關(guān)注,但在實(shí)際工作又經(jīng)常會(huì)用到的數(shù)據(jù)類型。它們就是枚舉(enumeration)、結(jié)構(gòu)(structures)和
    的頭像 發(fā)表于 01-21 17:14 ?1044次閱讀
    <b class='flag-5'>SystemVerilog</b><b class='flag-5'>中</b><b class='flag-5'>至關(guān)重要</b>的的數(shù)據(jù)<b class='flag-5'>類型</b>

    用戶自定義類型

    SystemVerilog還為工程師定義新的數(shù)據(jù)類型提供了一種機(jī)制。用戶定義的數(shù)據(jù)類型允許從現(xiàn)有數(shù)據(jù)類型
    的頭像 發(fā)表于 02-09 14:53 ?1385次閱讀
    用戶<b class='flag-5'>自定義</b><b class='flag-5'>類型</b>

    博途PLC1200/1500PLC用戶自定義數(shù)據(jù)類型(UDT)

    用戶自定義的數(shù)據(jù)類型可以包含基本數(shù)據(jù)類型(例如,INT bool string),以及 數(shù)組 ,結(jié)構(gòu),以及PLC的專有數(shù)據(jù)
    發(fā)表于 04-20 09:46 ?5次下載
    博途PLC1200/1500PLC用戶<b class='flag-5'>自定義</b>數(shù)據(jù)<b class='flag-5'>類型</b>(UDT)

    labview超快自定義控件制作和普通自定義控件制作

    labview超快自定義控件制作和普通自定義控件制作
    發(fā)表于 08-21 10:32 ?14次下載

    如何在Matlab自定義Message

    自定義Message 當(dāng)我們的 message 消息比較復(fù)雜時(shí),通常要用到自定義的 message 消息,MATLAB 2020b以上的版本自帶了ROS Toolbox Interface
    的頭像 發(fā)表于 11-15 18:12 ?1947次閱讀
    如何在Matlab<b class='flag-5'>中</b><b class='flag-5'>自定義</b>Message