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

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

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

Verilog中的二維數(shù)組說(shuō)明

電子工程師 ? 來(lái)源:FPGA設(shè)計(jì)論壇 ? 作者:FPGA設(shè)計(jì)論壇 ? 2020-09-28 11:35 ? 次閱讀

Verilog中的二維數(shù)組

Verilog中提供了兩維數(shù)組來(lái)幫助我們建立內(nèi)存的行為模型。具體來(lái)說(shuō),就是可以將內(nèi)存宣稱(chēng)為一個(gè)reg類(lèi)型的數(shù)組,這個(gè)數(shù)組中的任何一個(gè)單元都可以通過(guò)一個(gè)下標(biāo)去訪(fǎng)問(wèn)。這樣的數(shù)組的定義方式如下:

reg [wordsize : 0] array_name [0 : arraysize];

例如:

reg [7:0] my_memory [0:255];

其中 [7:0] 是內(nèi)存的寬度,而[0:255]則是內(nèi)存的深度(也就是有多少存儲(chǔ)單元),其中寬度為8位,深度為256。地址0對(duì)應(yīng)著數(shù)組中的0存儲(chǔ)單元。

如果要存儲(chǔ)一個(gè)值到某個(gè)單元中去,可以這樣做:

my_memory [address] = data_in;

而如果要從某個(gè)單元讀出值,可以這么做:

data_out = my_memory [address];

但要是只需要讀一位或者多個(gè)位,就要麻煩一點(diǎn),因?yàn)閂erilog不允許讀/寫(xiě)一個(gè)位。這時(shí),就需要使用一個(gè)變量轉(zhuǎn)換一下:(wolf點(diǎn)評(píng):菜鳥(niǎo)易犯的錯(cuò)誤,注意!)

例如:

data_out = my_memory[address];

data_out_it_0 = data_out[0];

這里首先從一個(gè)單元里面讀出數(shù)據(jù),然后再取出讀出的數(shù)據(jù)的某一位的值。

初始化內(nèi)存

初始化內(nèi)存有多種方式,這里介紹的是使用readmemb和readmemb和readmemh系統(tǒng)任務(wù)來(lái)將保存在文件中的數(shù)據(jù)填充到內(nèi)存單元中去。readmemb和readmemb和readmemh是類(lèi)似的,只不過(guò)readmemb用于內(nèi)存的二進(jìn)制表示,而readmemb用于內(nèi)存的二進(jìn)制表示,而readmemh則用于內(nèi)存內(nèi)容的16進(jìn)制表示。這里 以$readmemh系統(tǒng)任務(wù)來(lái)介紹。

語(yǔ)法

$readmemh(“file_name”, mem_array, start_addr, stop_addr);

注意的是:

file_name是包含數(shù)據(jù)的文本文件名,mem_array是要初始化的內(nèi)存單元數(shù)組名,start_addr 和 stop_addr是可選的,指示要初始化單元的起始地址和結(jié)束地址。

下面是一個(gè)簡(jiǎn)單的例子:

module memory ();

reg [7:0] my_memory [0:255];

initial begin

$readmemh(“memory.list”, my_memory);

end

endmodule

這里使用內(nèi)存文件memory.list來(lái)初始化my_memory數(shù)組。

而下面就是一個(gè)內(nèi)存文件的例子。

// Comments are allowed (wolf點(diǎn)評(píng):段注釋也可以,空行空格不影響?。?/p>

CC // This is first address i.e 8‘h00

AA // This is second address i.e 8’h01

@55 // Jump to new address 8‘h55

5A // This is address 8’h55

69 // This is address 8‘h56

對(duì)于內(nèi)存文件,要注意的是下列幾點(diǎn):

a、注釋標(biāo)記//在內(nèi)存文件中是被允許的;

b、使用@符號(hào)將跳到新的目標(biāo)地址,沒(méi)有@符號(hào)就表示地址將順序遞增。

關(guān)于這個(gè)系統(tǒng)任務(wù),有下列常見(jiàn)的用法:

1、順序初始化所有的數(shù)組單元;

這種情況下,可以使用@符號(hào)來(lái)指示地址,也可以不使用它,而只在每一行存放要存放的數(shù)據(jù)。

這樣數(shù)據(jù)將順序按地址遞增存放,從0地址開(kāi)始。

2、只初始化部分的數(shù)組單元;

這種情況下,可以使用@符號(hào)來(lái)指示下一個(gè)要初始化的地址,然后對(duì)該地址單元進(jìn)行初始化。例

如下列的內(nèi)存文件就只初始化8’h00,8‘h01,8’h55和8‘h564個(gè)內(nèi)存地址單元。

// Comments are allowed

CC // This is first address i.e 8’h00

AA // This is second address i.e 8‘h01

@55 // Jump to new address 8’h55

5A // This is address 8‘h55

69 // This is address 8’h56

3、只初始化數(shù)組的地址區(qū)間的一部分單元。

這個(gè)時(shí)候,還可以使用$readmemh任務(wù)的start_addr 和 stop_addr選項(xiàng)來(lái)指定初始化的范圍。

例如,只初始化100到104這5個(gè)單元,就可以這么做:

內(nèi)存文件memory.list定義為:

CC

AA

55

5A

69

聲明:本文內(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)投訴
  • Verilog
    +關(guān)注

    關(guān)注

    28

    文章

    1333

    瀏覽量

    109739
  • 數(shù)組
    +關(guān)注

    關(guān)注

    1

    文章

    411

    瀏覽量

    25835

原文標(biāo)題:Verilog中的二維數(shù)組及其初始化

文章出處:【微信號(hào):gh_9d70b445f494,微信公眾號(hào):FPGA設(shè)計(jì)論壇】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    二維掃描PDA用于倉(cāng)庫(kù)管理

    在現(xiàn)代物流與倉(cāng)儲(chǔ)行業(yè)的快速發(fā)展二維掃描PDA作為一項(xiàng)革命性技術(shù),正逐步成為倉(cāng)庫(kù)管理的核心工具。其卓越的信息化與自動(dòng)化能力,不僅重塑了倉(cāng)庫(kù)作業(yè)流程,更在提升工作效率、確保管理精度方面展現(xiàn)出無(wú)可比擬
    的頭像 發(fā)表于 09-10 14:22 ?75次閱讀
    <b class='flag-5'>二維</b>掃描PDA用于倉(cāng)庫(kù)管理

    FPC軟板二維碼標(biāo)識(shí)功能?簡(jiǎn)直是黑科技!

    現(xiàn)在的黑科技是越來(lái)越多了,板子上印個(gè)二維碼用手機(jī)掃一下就能將 將二維碼變成你的電子產(chǎn)品說(shuō)明書(shū),用來(lái)介紹產(chǎn)品功能;呈現(xiàn)教學(xué)視頻, 個(gè)人覺(jué)得圖文二維碼的功能十分豐富,不僅擁有產(chǎn)品溯源與出入
    發(fā)表于 08-07 17:46

    Labview生成二維

    ?Labview 的一個(gè)Demo,生成二維碼。
    發(fā)表于 08-01 17:12 ?4次下載

    二維碼掃碼器/二維碼讀取設(shè)備嵌入園區(qū)閘機(jī)系統(tǒng)的應(yīng)用

    二維碼閱讀設(shè)備集成至閘機(jī)系統(tǒng),主要功能是通過(guò)掃描用戶(hù)的二維碼通行證來(lái)實(shí)施園區(qū)出入口的自動(dòng)收費(fèi)。此技術(shù)憑借二維碼的便利性及掃描設(shè)備的高效性,極大地提高了收費(fèi)效率和精確度,減少了由于人
    的頭像 發(fā)表于 06-05 14:46 ?202次閱讀
    <b class='flag-5'>二維</b>碼掃碼器/<b class='flag-5'>二維</b>碼讀取設(shè)備嵌入園區(qū)閘機(jī)系統(tǒng)<b class='flag-5'>中</b>的應(yīng)用

    技術(shù)|二維PDOA平面定位方案

    一、方案概述二維平面定位系統(tǒng),采用UWB定位技術(shù),精度可到30cm。通過(guò)PDOA算法,可實(shí)現(xiàn)單基站二維平面的實(shí)時(shí)人員定位,增強(qiáng)對(duì)危險(xiǎn)區(qū)域的管控,有效預(yù)防安全事故發(fā)生。面對(duì)突發(fā)情況,能做到及時(shí)報(bào)警響應(yīng)
    的頭像 發(fā)表于 06-04 14:53 ?571次閱讀
    技術(shù)|<b class='flag-5'>二維</b>PDOA平面定位方案

    二維PDMA可以使用描述符鏈嗎?

    我正在嘗試使用二維描述符連鎖。 編寫(xiě)了一些二維描述符鏈的代碼。 但我有一些疑問(wèn),比如 1.二維 PDMA 可以使用描述符鏈嗎? 2.如果 1 是,請(qǐng)附上一些代碼 我們是否可以使用 2 個(gè)結(jié)構(gòu)或只使用 1 個(gè)結(jié)構(gòu)即可。
    發(fā)表于 05-31 08:16

    數(shù)組的轉(zhuǎn)換到二維數(shù)組后的行列增減問(wèn)題

    請(qǐng)大佬指點(diǎn),如VI,兩個(gè)求助點(diǎn): 1、一數(shù)組大小,在停止Vi前把數(shù)組大小增加到4,在循環(huán)外設(shè)置了一數(shù)組的行數(shù)為0了,為啥再次運(yùn)行VI后,
    發(fā)表于 05-11 00:25

    遠(yuǎn)距離二維碼掃描器如何選擇?看看以下三款遠(yuǎn)距離二維碼掃碼模塊

    隨著二維碼相關(guān)技術(shù)及硬件的普及與低成本化,二維條碼掃描設(shè)備的應(yīng)用被人們廣為熟知,應(yīng)用的行業(yè)也眾多。然而,在某些場(chǎng)景,由于需要遠(yuǎn)距離掃描二維碼(條碼遠(yuǎn)距離識(shí)別),傳統(tǒng)的掃碼設(shè)備已經(jīng)無(wú)法
    的頭像 發(fā)表于 03-21 15:41 ?546次閱讀
    遠(yuǎn)距離<b class='flag-5'>二維</b>碼掃描器如何選擇?看看以下三款遠(yuǎn)距離<b class='flag-5'>二維</b>碼掃碼模塊

    二維材料增強(qiáng)光纖

    材料可用于涂覆其他材料,以增強(qiáng)其功能并更好地利用其光學(xué)特性。來(lái)自中國(guó)科學(xué)院和北京大學(xué)的劉忠范研究小組在最近發(fā)表的《自然納米技術(shù)》雜志上描述了他們?nèi)绾卧鰪?qiáng)二維材料非線(xiàn)性特性在光纖的應(yīng)用。他們的方法可應(yīng)用于廣泛的材料和光纖設(shè)計(jì),為
    的頭像 發(fā)表于 12-01 06:34 ?280次閱讀

    將一數(shù)組轉(zhuǎn)為二維python

    將一數(shù)組轉(zhuǎn)為二維數(shù)組是一個(gè)常見(jiàn)的問(wèn)題,特別是在處理數(shù)據(jù)時(shí)。一數(shù)組是由一個(gè)連續(xù)的數(shù)據(jù)塊組成,而
    的頭像 發(fā)表于 11-23 14:54 ?4145次閱讀

    研究二維材料中的鐵電性

    。石墨烯、過(guò)渡金屬硫?qū)倩锖推渌?b class='flag-5'>二維材料已被證明具有獨(dú)特的物理特性,這使得它們對(duì)開(kāi)發(fā)新型增強(qiáng)型電氣和光電器件具有吸引力。在過(guò)去的十年,研究人員還開(kāi)始構(gòu)建二維材料的層狀結(jié)構(gòu)(有時(shí)稱(chēng)為
    的頭像 發(fā)表于 11-22 06:29 ?389次閱讀
    研究<b class='flag-5'>二維</b>材料中的鐵電性

    python如何定義二維數(shù)組

    在Python,可以通過(guò)使用列表嵌套的方式來(lái)定義二維數(shù)組。具體步驟如下: Step 1: 創(chuàng)建一個(gè)空的二維列表 要?jiǎng)?chuàng)建一個(gè)空的二維
    的頭像 發(fā)表于 11-21 15:12 ?1370次閱讀

    python怎么創(chuàng)建二維數(shù)組

    如何創(chuàng)建二維數(shù)組在Python是一個(gè)常見(jiàn)的問(wèn)題。在Python,我們可以使用嵌套的列表(list of lists)或者使用NumPy庫(kù)來(lái)創(chuàng)建
    的頭像 發(fā)表于 11-21 15:10 ?3207次閱讀

    數(shù)組如何用下標(biāo)表示指針

    比如題目中聲明的這個(gè),就是由4個(gè)5行3列的二維數(shù)組組成。把這些二維數(shù)組編個(gè)號(hào),就是 0 1 2 3。
    的頭像 發(fā)表于 11-14 10:38 ?624次閱讀
    三<b class='flag-5'>維</b><b class='flag-5'>數(shù)組</b>如何用下標(biāo)表示指針

    制造二維TMD晶體管面臨的挑戰(zhàn)

    學(xué)術(shù)界和工業(yè)界已經(jīng)提出將二維(2D)過(guò)渡金屬摻雜化合物(TMD)半導(dǎo)體作為未來(lái)取代物理柵極長(zhǎng)度小于10納米的硅晶體管的一種選擇。在這篇評(píng)論,我們分享了基于堆疊二維TMD納米帶制造互
    的頭像 發(fā)表于 11-07 09:55 ?1106次閱讀
    制造<b class='flag-5'>二維</b>TMD晶體管面臨的挑戰(zhàn)