RM新时代网站-首页

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

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

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

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

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

Verilog中的二維數(shù)組

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

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

例如:

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

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

如果要存儲一個值到某個單元中去,可以這樣做:

my_memory [address] = data_in;

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

data_out = my_memory [address];

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

例如:

data_out = my_memory[address];

data_out_it_0 = data_out[0];

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

初始化內(nèi)存

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

語法

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

注意的是:

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

下面是一個簡單的例子:

module memory ();

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

initial begin

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

end

endmodule

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

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

// Comments are allowed (wolf點(diǎn)評:段注釋也可以,空行空格不影響!)

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

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

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

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

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

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

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

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

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

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

如下列的內(nèi)存文件就只初始化8’h00,8‘h01,8’h55和8‘h564個內(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ū)間的一部分單元。

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

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

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

CC

AA

55

5A

69

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

    關(guān)注

    28

    文章

    1351

    瀏覽量

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

    關(guān)注

    1

    文章

    417

    瀏覽量

    25939

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

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

收藏 人收藏

    評論

    相關(guān)推薦

    二維內(nèi)嵌掃碼模組用于自助儲物柜,快速掃描各種一二維條碼

    隨著科技的飛速發(fā)展,自助儲物柜已成為我們?nèi)粘I?b class='flag-5'>中不可或缺的一部分,為公眾提供了極大的便利。而這一切的背后,離不開二維內(nèi)嵌掃碼模組的強(qiáng)大支持。本文將深入探討二維內(nèi)嵌掃碼模組在自助儲物柜
    的頭像 發(fā)表于 12-04 15:56 ?94次閱讀
    <b class='flag-5'>二維</b>內(nèi)嵌掃碼模組用于自助儲物柜,快速掃描各種一<b class='flag-5'>維</b><b class='flag-5'>二維</b>條碼

    指針數(shù)組二維數(shù)組有沒有區(qū)別

    指針數(shù)組二維數(shù)組有沒有區(qū)別?比如這樣的兩個代碼。 int main(){ char *s1[] = { "hello", "world", "total" }; char s2[][6
    的頭像 發(fā)表于 11-24 11:12 ?139次閱讀

    工業(yè)二維碼讀碼器在電子制造業(yè)的應(yīng)用

    工業(yè)二維碼讀碼器在電子制造業(yè)的應(yīng)用主要體現(xiàn)在以下幾個方面:▲生產(chǎn)追溯管理工業(yè)二維碼讀碼器通過對電子產(chǎn)品上的二維碼進(jìn)行快速掃描,實(shí)現(xiàn)了高效、準(zhǔn)確的生產(chǎn)追溯管理。每件電子產(chǎn)品上都會有一個
    的頭像 發(fā)表于 11-13 16:19 ?180次閱讀
    工業(yè)<b class='flag-5'>二維</b>碼讀碼器在電子制造業(yè)<b class='flag-5'>中</b>的應(yīng)用

    二維碼識讀設(shè)備有哪些類型

    隨著二維碼應(yīng)用的日益普及,各類二維碼識讀設(shè)備也應(yīng)運(yùn)而生。這些設(shè)備不僅極大地方便了我們的日常生活,也為企業(yè)提供了更加高效便捷的服務(wù)。那么,你知道二維碼識讀設(shè)備都有哪些類型嗎?讓我們一起來了解一下。據(jù)
    的頭像 發(fā)表于 11-05 16:10 ?167次閱讀
    <b class='flag-5'>二維</b>碼識讀設(shè)備有哪些類型

    labview按行讀取二維數(shù)組之后再按讀取順序重新組成二維數(shù)組如何實(shí)現(xiàn)?

    labview用了index Array按索引一行行讀取二維數(shù)組之后想再按讀取順序重新組成一個二維數(shù)組如何實(shí)現(xiàn),即第一次讀取的作為第一行,第
    發(fā)表于 10-25 21:06

    請問labview是否無法向matlab傳遞3數(shù)組

    經(jīng)過一些測試,發(fā)現(xiàn)在matlab script只能傳二維數(shù)組,利用打包.net庫,好像還是只能傳遞二維數(shù)組。 是不是從底層就不支持,這兩種
    發(fā)表于 10-22 20:14

    二維掃描PDA用于倉庫管理

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

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

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

    Labview生成二維

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

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

    二維碼閱讀設(shè)備集成至閘機(jī)系統(tǒng),主要功能是通過掃描用戶的二維碼通行證來實(shí)施園區(qū)出入口的自動收費(fèi)。此技術(shù)憑借二維碼的便利性及掃描設(shè)備的高效性,極大地提高了收費(fèi)效率和精確度,減少了由于人
    的頭像 發(fā)表于 06-05 14:46 ?348次閱讀
    <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。通過PDOA算法,可實(shí)現(xiàn)單基站二維平面的實(shí)時人員定位,增強(qiáng)對危險區(qū)域的管控,有效預(yù)防安全事故發(fā)生。面對突發(fā)情況,能做到及時報警響應(yīng)
    的頭像 發(fā)表于 06-04 14:53 ?923次閱讀
    技術(shù)|<b class='flag-5'>二維</b>PDOA平面定位方案

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

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

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

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

    怎么在Framewin里顯示二維碼?

    各位前輩好,剛剛開始使用STemWin?,F(xiàn)在一個Framewin里顯示二維碼,在Framewin初始化里調(diào)用二維碼函數(shù)沒有反應(yīng)。請問需要怎么調(diào)用?
    發(fā)表于 04-16 08:27

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

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