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

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

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

網(wǎng)絡(luò)和變量的未壓縮數(shù)組

汽車電子技術(shù) ? 來源:OpenFPGA ? 作者:碎碎思 ? 2023-02-09 14:50 ? 次閱讀

數(shù)字硬件建模SystemVerilog(九)-網(wǎng)絡(luò)和變量的未壓縮數(shù)組

pYYBAGPkltCAGGloAATFvOF3oVU007.png

SystemVerilog有兩種類型的數(shù)組:壓縮數(shù)組和非壓縮數(shù)組。壓縮數(shù)組是連續(xù)存儲(chǔ)的位的集合,通常稱為向量。非壓縮數(shù)組是網(wǎng)絡(luò)或變量的集合。

集合中的每個(gè)網(wǎng)絡(luò)或變量稱為數(shù)組元素。未壓縮數(shù)組的每個(gè)元素的類型、數(shù)據(jù)類型和向量大小都完全相同。每個(gè)未壓縮的數(shù)組元素可以獨(dú)立于其他元素存儲(chǔ);這些元素不需要連續(xù)存儲(chǔ)。軟件工具,如仿真器和綜合編譯器,可以以工具認(rèn)為最佳的任何形式組織未壓縮數(shù)組的存儲(chǔ)。

未壓縮數(shù)組的基本聲明語(yǔ)法為:

pYYBAGPkltyARoU6AABDz2kcx8U818.png

數(shù)組的維度定義了數(shù)組可以存儲(chǔ)的元素總數(shù)。未壓縮的數(shù)組可以用任意數(shù)量的維度聲明,每個(gè)維度存儲(chǔ)指定數(shù)量的元素。聲明數(shù)組維度有兩種編碼樣式:顯式地址和數(shù)組大小。

顯式地址樣式指定方括號(hào)之間數(shù)組維度的起始地址和結(jié)束地址,格式為:

poYBAGPkluiAHYjdAABLYMhSKu8679.png

Start_address 和 end_address可以是任何整數(shù)值,數(shù)組可以以地址0、地址512或被建模硬件所需的任何地址開始。起始地址和結(jié)束地址之間的范圍表示數(shù)組維度的大?。ㄔ?cái)?shù))。

數(shù)組大小樣式定義要存儲(chǔ)在方括號(hào)中的元素?cái)?shù)(類似于C語(yǔ)言數(shù)組聲明樣式)。

[size]

使用array_size樣式,起始地址始終為0,結(jié)束地址始終為size-1

以下是一些未壓縮的數(shù)組聲明示例:

pYYBAGPklveAOzaNAAErTm7DB8w054.png

前面的mem聲明是16位logic變量的一維數(shù)組。一維陣列有時(shí)被稱為內(nèi)存陣列,因?yàn)樗ǔS糜?a target="_blank">仿真硬件內(nèi)存設(shè)備(如RAMROM)的存儲(chǔ)。

訪問數(shù)組元素

可以使用數(shù)組索引引用未壓縮數(shù)組的每個(gè)元素,索引緊跟在數(shù)組名稱之后,并且位于方括號(hào)中,多維數(shù)組需要多組方括號(hào)才能從數(shù)組中選擇單個(gè)元素:

poYBAGPklwSAL7ouAACkUpyzHdg003.png

數(shù)組索引也可以是網(wǎng)絡(luò)或變量的值,如下一個(gè)示例所示:

pYYBAGPklw-AOmduAABaumsTmVU645.png

復(fù)制數(shù)組(陣列)

如果兩個(gè)數(shù)組(陣列)具有相同的布局,則可以使用賦值語(yǔ)句將一個(gè)未壓縮的數(shù)組(陣列)復(fù)制到另一個(gè)未壓縮的數(shù)組(陣列)。也就是說,這兩個(gè)數(shù)組(陣列)必須存儲(chǔ)相同向量大小的相同數(shù)據(jù)類型,必須具有相同的維度數(shù),并且每個(gè)維度的大小都相同-

數(shù)組(陣列)復(fù)制會(huì)將源數(shù)組(賦值的右側(cè))的每個(gè)元素復(fù)制到目標(biāo)數(shù)組(陣列)(賦值的左側(cè))中相應(yīng)的元素。兩個(gè)數(shù)組(陣列)的索引編號(hào)不需要相同。數(shù)組(陣列)的布局和類型必須完全匹配。

poYBAGPklxuAc-e5AACX3FRLMQU468.png

與復(fù)制數(shù)組(陣列)的方式類似,如果兩個(gè)切片的布局相同,則可以將數(shù)組(陣列)的一部分(稱為數(shù)組(陣列)切片)復(fù)制到另一個(gè)數(shù)組(陣列)的切片。切片是數(shù)組(陣列)一維內(nèi)的一個(gè)或多個(gè)連續(xù)編號(hào)的元素。

在成為SystemVerilog之前,最初的Verilog語(yǔ)言將對(duì)數(shù)組(陣列)的訪問限制為一次只能訪問數(shù)組中的一個(gè)元素。不允許對(duì)數(shù)組(陣列)的多個(gè)元素進(jìn)行數(shù)組(陣列)復(fù)制和讀/寫操作。

數(shù)組列表賦值

可以為未壓縮的數(shù)組或數(shù)組的一個(gè)片段分配一個(gè)值列表,這些值包含在每個(gè)數(shù)組維度的’{and}大括號(hào)之間。

poYBAGPklyWACh76AADNmK5RTTU259.png

列表語(yǔ)法類似于在C中為數(shù)組指定值列表,但在大括號(hào)前添加了撇號(hào)使用’-“作為開頭分隔符”表明,所包含的值是表達(dá)式列表,而不是SystemVerilog連接運(yùn)算符(后面會(huì)詳細(xì)介紹)。

還可以使用嵌套列表為多維數(shù)組分配值列表。嵌套的列表集必須與數(shù)組的維度完全匹配。

poYBAGPklzCAQXHxAABqckj8mNY761.png

此數(shù)組分配相當(dāng)于以下各項(xiàng)的單獨(dú)分配:

pYYBAGPklz-AMb7LAABxb85n08g517.png

通過指定默認(rèn)值,可以為未壓縮數(shù)組的所有元素指定相同的值。默認(rèn)值是使用’{default:}指定的,如以下代碼段所示:

poYBAGPkl0uANj8TAADk6ZFXV-4272.png

數(shù)組元素的位選擇和部分選擇

可以從數(shù)組元素向量中選擇一位或一組位。必須首先選擇數(shù)組的單個(gè)元素,然后進(jìn)行位選擇或部分選擇。

pYYBAGPkl1SAUaVMAADbUI1bIT0540.png

通過端口將數(shù)組傳遞給任務(wù)和函數(shù)。任何類型和任意數(shù)量的未壓縮數(shù)組都可以通過模塊端口傳遞,也可以傳遞到任務(wù)和函數(shù)參數(shù)。端口或任務(wù)/函數(shù)形式參數(shù)也必須聲明為數(shù)組,端口或參數(shù)數(shù)組必須與要傳遞的數(shù)組具有相同的布局(與數(shù)組復(fù)制的規(guī)則相同)。

pYYBAGPkl1-AUB43AADxwRPiVhI115.png

最初的Verilog語(yǔ)言只允許簡(jiǎn)單的向量通過模塊端口,或傳遞到任務(wù)或函數(shù)參數(shù)。要傳遞上述示例中表數(shù)組的值,需要256個(gè)端口,數(shù)組的每個(gè)元素一個(gè)端口。

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

    關(guān)注

    14

    文章

    7441

    瀏覽量

    88438
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1335

    瀏覽量

    109844
  • System
    +關(guān)注

    關(guān)注

    0

    文章

    164

    瀏覽量

    36801
  • 變量
    +關(guān)注

    關(guān)注

    0

    文章

    608

    瀏覽量

    28285
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    C語(yǔ)言中初始化的局部變量到底是多少

    C語(yǔ)言中,初始化的局部變量到底是多少?
    發(fā)表于 10-21 14:42 ?1866次閱讀

    變量 數(shù)組

    在AVR中,怎么定義一個(gè)變量數(shù)組?使得這個(gè)數(shù)組可在程序中給其賦值例:我在編程中定義了全局變量數(shù)組:volatile unsigned int
    發(fā)表于 05-05 16:29

    數(shù)組中添加變量

    我想把一個(gè)變量的值輸入到一個(gè)一維數(shù)組中,該怎么做呢?例如:數(shù)組的第二個(gè)值就代表輸入的變量值吧
    發(fā)表于 05-17 14:04

    labview的data dashboard中的下拉控件如何定義對(duì)應(yīng)的網(wǎng)絡(luò)變量

    目前遇到的問題是data dashboard中想用下拉控件功能,但是在labview中如果新建一個(gè)字符串數(shù)組網(wǎng)絡(luò)變量的話,是可以搜到,但是僅僅是item string里有,和字符串數(shù)組關(guān)聯(lián)上之后,并不能起到控制的作用,僅僅會(huì)顯示
    發(fā)表于 07-15 07:24

    壓縮的彩條信號(hào)行頻圖

    壓縮的彩條信號(hào)行頻圖
    發(fā)表于 07-31 12:31 ?824次閱讀

    Java數(shù)組不始化的使用方法

    數(shù)組是大多數(shù)編程語(yǔ)言提供的一種復(fù)合結(jié)構(gòu),如果程序需要多個(gè)類型相同的變量時(shí),就可以考慮定義一個(gè)數(shù)組。Java語(yǔ)言的數(shù)組變量是引用類型的
    發(fā)表于 04-03 15:32 ?4次下載

    JAVA教程之一維數(shù)組和二維數(shù)組的介紹和應(yīng)用說明

    聲明一個(gè)數(shù)組就是要確定數(shù)組名、數(shù)組的維數(shù)和數(shù)組元素的數(shù)據(jù)類型。數(shù)組名是符合Java標(biāo)識(shí)符定義規(guī)則的用戶自定義標(biāo)識(shí)符,它是
    發(fā)表于 01-16 11:02 ?0次下載
    JAVA教程之一維<b class='flag-5'>數(shù)組</b>和二維<b class='flag-5'>數(shù)組</b>的介紹和應(yīng)用說明

    指針與數(shù)組的詳細(xì)資料和實(shí)例程序免費(fèi)下載

    指針變量來訪問數(shù)組中任一元素,通常將數(shù)組的首地址稱為數(shù)組的指針,而將指向數(shù)組元素的指針變量稱為指
    發(fā)表于 11-05 17:07 ?4次下載
    指針與<b class='flag-5'>數(shù)組</b>的詳細(xì)資料和實(shí)例程序免費(fèi)下載

    單片機(jī)的常量和變量數(shù)組的詳細(xì)資料說明

    本文檔的主要內(nèi)容詳細(xì)介紹的是單片機(jī)的常量和變量數(shù)組的詳細(xì)資料說明包括了:?jiǎn)纹瑱C(jī)的常量,單片機(jī)的變量,構(gòu)造類型:數(shù)組,構(gòu)造類型:結(jié)構(gòu)體,構(gòu)造類型:指針
    發(fā)表于 12-11 17:36 ?13次下載
    單片機(jī)的常量和<b class='flag-5'>變量</b>與<b class='flag-5'>數(shù)組</b>的詳細(xì)資料說明

    數(shù)組中的變量取值范圍如何進(jìn)行糾正

    本文檔的主要內(nèi)容詳細(xì)介紹的是數(shù)組變量取值范圍如何進(jìn)行糾正。
    發(fā)表于 12-17 17:08 ?4次下載

    網(wǎng)絡(luò)變量壓縮數(shù)組

    數(shù)組的維度定義了數(shù)組可以存儲(chǔ)的元素總數(shù)。壓縮數(shù)組可以用任意數(shù)量的維度聲明,每個(gè)維度存儲(chǔ)指定數(shù)量的元素。聲明
    的頭像 發(fā)表于 05-20 10:14 ?1147次閱讀

    DECL:對(duì)變量、數(shù)組和常數(shù)進(jìn)行聲明

    如果 CHAR 類型數(shù)組的所有數(shù)組元素都擁有相同的字符串,則不必單獨(dú)初始化每個(gè)數(shù)組元素。忽略右側(cè)的數(shù)組下標(biāo)。(對(duì)于一維數(shù)組下標(biāo),不寫下標(biāo)。)
    的頭像 發(fā)表于 07-10 10:27 ?3021次閱讀

    HDLBits: 在線學(xué)習(xí)SystemVerilog(三)-Problem 10-14

    集合中的每個(gè)網(wǎng)絡(luò)變量稱為數(shù)組元素。壓縮數(shù)組的每個(gè)元素的類型、數(shù)據(jù)類型和向量大小都完全相同。每
    的頭像 發(fā)表于 08-24 14:58 ?1187次閱讀

    C語(yǔ)言數(shù)組元素的指針

    C語(yǔ)言調(diào)用函數(shù)時(shí)虛實(shí)結(jié)合的方法都是采用“值傳遞”方式,當(dāng)用變量名作為函數(shù)參數(shù)時(shí)傳遞的是變量的值,當(dāng)用數(shù)組名作為函數(shù)參數(shù)時(shí)。 由于數(shù)組名代表的是
    的頭像 發(fā)表于 03-10 14:45 ?790次閱讀

    PHP中數(shù)組的使用方法!

    PHP中數(shù)組的使用方法! PHP是一種廣泛使用的網(wǎng)絡(luò)編程語(yǔ)言,它的數(shù)組功能非常強(qiáng)大且靈活。數(shù)組是一種數(shù)據(jù)結(jié)構(gòu),它允許我們?cè)趩蝹€(gè)變量中存儲(chǔ)多個(gè)
    的頭像 發(fā)表于 01-12 15:11 ?456次閱讀