色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

0
  • 聊天消息
  • 系統消息
  • 評論與回復
登錄后你可以
  • 下載海量資料
  • 學習在線課程
  • 觀看技術視頻
  • 寫文章/發帖/加入社區
會員中心
創作中心

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

SystemVerilog中至關重要的結構體和自定義類型

jf_78858299 ? 來源:芯片學堂 ? 作者:JKZHAN ? 2023-01-21 17:18 ? 次閱讀

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

認識結構體

結構體(structure)是一種可以包含不同數據類型元素的集合類型。這一點跟數組、隊列等集合類型是不一樣的,數組和隊列只能包含相同數據類型的元素。結構體在引用的時候,可以對這些元素進行整體引用,也可以通過元素名稱來對元素進行單獨引用。

基于這個特性,結構體通常可以用來表征一個包含了諸多不同類型屬性的對象。比如,當我們想要表征一個人的所有屬性的時候,名字元素可以用string類型,年齡元素可以用int類型,存款元素可以用real類型等等,最后可以通過對整體引用來獲得一個人的所有屬性,也可以通過元素名稱來獲得單個屬性。

另一個栗子,可以使用結構體來定義某個寄存器的結構。在結構體類型定義的時候,我們可以在內部使用logic [n:m]等基本數據類型來定義寄存器的不同域段。這樣一來,我們不但可以對寄存器進行整體引用,又可以使用元素名來很方便地讀寫寄存器的各個域段。

講完結構體的邏輯結構,下面來看看結構體的物理結構。

在內存存儲一個結構體的時候,SV提供了packed關鍵字用來區分合并(packed)和非合并(unpacked)存儲方式。“合并”這個概念在另一篇文章中也有涉及。合并的結構體,其元素會被無間隙的存放到一塊連續的內存空間上。而非合并的結構體,其物理結構一般依賴于C編譯器。SV默認是非合并的,這是為了提高內存空間的利用率,如果用戶想要用合并的,需要在struct關鍵字后面加上packed。

合并的結構體是有不少用處的。第一,合并結構體的整體可以被當成一個向量來看待,這樣一來,合并結構體的賦值、讀取和數值計算上多了靈活性;第二,合并結構體可以通過在packed關鍵字后面加signed/unsigned來指定為有無符號類型,排在第一個位置的元素最高位為符號位,相比之下,非合并的結構體是不能被指定為有符號類型的。

結構體的使用

SV結構體的特性跟C語言基本一致,但在語法上有差別。比如在C語言中,定義一個結構體類型,是在struct關鍵字后面加上structure tag名來作為類型名稱;而在SV中,統一使用typedef來定義結構體類型名稱。

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

看看代碼吧

下面代碼和注釋總結了結構體的使用方法,個人覺得掌握例程中的內容對工作來說已經完全足夠啦,但例程同樣沒有經過編譯哈。

圖片

參考文獻

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。 舉報投訴
  • 數據
    +關注

    關注

    8

    文章

    7064

    瀏覽量

    89105
  • Verilog
    +關注

    關注

    28

    文章

    1351

    瀏覽量

    110129
  • 代碼
    +關注

    關注

    30

    文章

    4791

    瀏覽量

    68677
收藏 人收藏

    評論

    相關推薦

    LabVIEW自定義控件

    。如果修改該控鍵,那么使用該控鍵的實例也將會做相應的改動。如 果選擇 了自定義類型,那么控件和實例的數據類型是 保持一 致的,比如自定義
    發表于 01-07 10:57

    LabVIEW自定義數據類型

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

    用戶自定義結構數據怎么存儲成VARIANT類型

    將用戶自定義的C結構數據存儲成VARIANT類型,需要時再將VARIANT類型轉為用戶自定義結構
    發表于 08-02 07:08

    請問自定義結構u16 RESERVEDi起什么作用?

    STM32的自定義結構,存在u16RESERVEDi(i為一個整數索引值)的作用是什么,我是初學者,對這不是很明白,希望大家幫忙!
    發表于 08-24 08:00

    嵌入式ARM開發之自定義數據類型相關資料推薦

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

    SOPC自定義外設和自定義指令性能分析

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

    1602自定義字符

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

    C++程序設計教程之自定義數據類型的詳細資料說明

    本文檔詳細介紹的是C++程序設計教程之自定義數據類型的詳細資料說明主要內容包括了:1. 結構類型,2. 共用
    發表于 03-14 16:04 ?1次下載
    C++程序設計教程之<b class='flag-5'>自定義</b>數據<b class='flag-5'>類型</b>的詳細資料說明

    淺析Zephyr應用的代碼結構自定義驅動

    項目納入到應用代碼目錄管理 Zephyr應用的代碼結構--自定義開發板: 將自定義board納入到應用代碼目錄管理 除了上面兩個場景外,我們的硬件可能也有新的驅動需求,而該驅動不被Zephyr支持,如果
    的頭像 發表于 08-18 09:08 ?4805次閱讀

    自定義視圖組件教程案例

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

    SystemVerilog至關重要的的數據類型

    對于剛接觸SV的小伙伴來說,SV有幾種不怎么能引起關注,但在實際工作又經常會用到的數據類型。它們就是枚舉(enumeration)、結構(structures)和
    的頭像 發表于 01-21 17:14 ?821次閱讀
    <b class='flag-5'>SystemVerilog</b><b class='flag-5'>中</b><b class='flag-5'>至關重要</b>的的數據<b class='flag-5'>類型</b>

    用戶自定義類型

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

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

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

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

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

    如何在Matlab自定義Message

    自定義Message 當我們的 message 消息比較復雜時,通常要用到自定義的 message 消息,MATLAB 2020b以上的版本自帶了ROS Toolbox Interface
    的頭像 發表于 11-15 18:12 ?1317次閱讀
    如何在Matlab<b class='flag-5'>中</b><b class='flag-5'>自定義</b>Message
    主站蜘蛛池模板: 久久精品亚洲视频| 狠狠色狠狠色88综合日日91| 国产精品高清免费网站| 久久九九精品国产自在现线拍| 肉多荤文高h羞耻校园| 99免费在线| 美女脱精光让男生桶下面| 在线观看中文字幕国产| 精品欧美18videosex欧美| 亚洲国产精品免费观看| 国产午夜三区视频在线| 亚洲国产在线99视频| 国产一区二区精品视频| 亚洲国产综合久久久无码色伦| 国产精品自产拍在线观看网站| 无限资源在线观看8| 国产午夜伦伦伦午夜伦| 亚洲国产精品天堂在线播放| 国产午夜在线观看视频播放| 亚洲精品自在线拍2019| 久久机热视频 这里只有精品首页| 亚洲综合中文字幕无线码| 久久这里只有精品1| 97色伦久久视频在观看| 欧美四虎精品二区免费| 嘟嘟嘟WWW在线观看视频高清| 特黄AAAAAAA片免费视频| 国产在线播放精品视频| 伊人伊人影院| 年轻夫妇韩剧中文版免费观看| jizz破处| 午夜AV国产欧美亚洲高清在线| 黑人 尺寸 强行害怕 痛哭| 在线天天看片视频免费观看| 男生脱美女内裤内衣动态图| 成人在线观看视频免费| 亚洲国产日韩制服在线观看| 快播黄色电影| 动漫护士被乳羞羞漫| 亚洲熟女乱色一区二区三区| 鲁一鲁亚洲无线码|