FPGA中(zhōng)的(de)二(èr)維數組其实不(bù)是(shì)真(zhēn)正(zhèng)意(yì)義上(shàng)的(de)數組,而(ér)是(shì)由(yóu)多(duō)个(gè)寄存器組成(chéng)的(de)ROM或(huò)RAM。
具體(tǐ)来(lái)说(shuō),就(jiù)是(shì)可(kě)以(yǐ)将內(nèi)存宣稱为(wèi)一(yī)个(gè)reg類(lèi)型的(de)數組,这(zhè)个(gè)數組中(zhōng)的(de)任何一(yī)个(gè)單元(yuán)都可(kě)以(yǐ)通(tòng)过(guò)一(yī)个(gè)下(xià)标(biāo)去(qù)訪問(wèn)。
这(zhè)樣(yàng)的(de)數組定(dìng)義方(fāng)式如(rú)下(xià):
reg [wordsize : 0] memory_name [0 : memorysize];
其中(zhōng)[wordsize : 0]是(shì)內(nèi)存的(de)宽(kuān)度(dù),而(ér) [0 : memorysize]則是(shì)內(nèi)存的(de)深度(dù)(也(yě)就(jiù)是(shì)有(yǒu)多(duō)少(shǎo)存儲單元(yuán))。
如(rú)果(guǒ)要(yào)存儲一(yī)个(gè)值到(dào)某个(gè)單元(yuán)中(zhōng)去(qù),可(kě)以(yǐ)这(zhè)樣(yàng)做:
memory_name [address] = data_in;
如(rú)果(guǒ)要(yào)读(dú)取(qǔ)每个(gè)單元(yuán)的(de)值,可(kě)以(yǐ)这(zhè)麼(me)做:
data_out = memory_name [address];
由(yóu)于(yú)Verilog不(bù)允许读(dú)/写一(yī)个(gè)位,所(suǒ)以(yǐ)需要(yào)读(dú)写一(yī)位或(huò)者(zhě)多(duō)个(gè)位时(shí)的(de)操作要(yào)麻(má)煩點(diǎn):
data_out = memory_name [address];
data_out_0 = data_out [0];
这(zhè)里(lǐ)首先(xiān)從一(yī)个(gè)單元(yuán)读(dú)出(chū)數據(jù),然後(hòu)再取(qǔ)出(chū)數據(jù)的(de)某一(yī)位的(de)值。
初始化(huà)內(nèi)存
初始化(huà)內(nèi)存有(yǒu)多(duō)種(zhǒng)方(fāng)式,这(zhè)里(lǐ)介紹的(de)是(shì)使用(yòng)$readmemb和(hé)$readmemh系(xì)統任务来(lái)講保存在(zài)文(wén)件(jiàn)中(zhōng)得數據(jù)填充到(dào)內(nèi)存單元(yuán)中(zhōng)去(qù)。
$readmemb和(hé)$readmemh是(shì)類(lèi)似得,只(zhī)不(bù)过(guò)$readmemb用(yòng)于(yú)內(nèi)存得二(èr)進(jìn)制表(biǎo)示,
$readmemh用(yòng)于(yú)內(nèi)存內(nèi)容得十(shí)六(liù)進(jìn)制表(biǎo)示。这(zhè)里(lǐ)以(yǐ)$readmemh系(xì)統任务来(lái)介紹
注意(yì)的(de)是(shì):file_name是(shì)包(bāo)含數據(jù)的(de)文(wén)本(běn)文(wén)件(jiàn)名,mem_array是(shì)要(yào)初始化(huà)的(de)內(nèi)存單元(yuán)數組名,
start_addr 和(hé) stop_addr是(shì)可(kě)選的(de),指示要(yào)初始化(huà)單元(yuán)的(de)起始地(dì)址和(hé)結束(shù)地(dì)址。
如(rú)果(guǒ)对(duì)寄存器組進(jìn)行在(zài)複位得时(shí)候進(jìn)行置0,可(kě)以(yǐ)參考如(rú)何往寄存器組中(zhōng)写入(rù)數據(jù)
温(wēn)馨提(tí)示:明(míng)德揚2023推出(chū)了(le)全(quán)新課程——邏輯設計(jì)基本(běn)功修煉課,降低学習FPGA門(mén)檻的(de)同(tóng)时(shí),增加了(le)学習的(de)趣味性(xìng),并組織了(le)考試赢積分(fēn)活動(dòng)
http://www.minyingyiyuan.com/ffkc/415.html
(點(diǎn)擊→了(le)解(jiě)課程詳情(qíng)☝)感(gǎn)興趣請聯系(xì)易老(lǎo)师(shī):13112063618(微信(xìn)同(tóng)步)
明(míng)德揚除了(le)培訓学習還(huán)有(yǒu)項目承接業务,擅长的(de)項目主(zhǔ)要(yào)包(bāo)括的(de)方(fāng)向(xiàng)有(yǒu)以(yǐ)下(xià)幾(jǐ)个(gè)方(fāng)面(miàn):
1. MIPI視頻拼接
2. SLVS-EC轉(zhuǎn)MIPI接口(kǒu)(IMX472 IMX492)
3. PCIE采集系(xì)統
4. 图(tú)像項目
5. 高(gāo)速多(duō)通(tòng)道(dào)ADDA系(xì)統
6. 基于(yú)FPGA板卡(kǎ)研發(fà)
7. 多(duō)通(tòng)道(dào)高(gāo)靈敏電(diàn)荷放(fàng)大器
8. 射頻前(qián)端
需要(yào)了(le)解(jiě)相關(guān)信(xìn)息可(kě)以(yǐ)聯系(xì):易老(lǎo)师(shī)13112063618(微信(xìn)同(tóng)号(hào))