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

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

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

3天內不再提示

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

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

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

認識結構體

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

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

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

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

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

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

結構體的使用

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

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

看看代碼吧

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

圖片

參考文獻

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

聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權轉載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 數(shù)據(jù)

    關注

    8

    文章

    7233

    瀏覽量

    90792
  • Verilog
    +關注

    關注

    28

    文章

    1364

    瀏覽量

    111541
  • 代碼
    +關注

    關注

    30

    文章

    4882

    瀏覽量

    70052
收藏 人收藏

    評論

    相關推薦
    熱點推薦

    LabVIEW自定義控件

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

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

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

    用戶自定義結構數(shù)據(jù)怎么存儲成VARIANT類型

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

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

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

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

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

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

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

    1602自定義字符

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

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

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

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

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

    自定義視圖組件教程案例

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

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

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

    用戶自定義類型

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

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

    用戶自定義的數(shù)據(jù)類型可以包含基本數(shù)據(jù)類型(例如,INT bool string),以及 數(shù)組 ,結構,以及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 ?13次下載

    如何在Matlab自定義Message

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