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

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

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

【ZYNQ Ultrascale+ MPSOC FPGA教程】第七章FPGA片內(nèi)ROM測試實驗

FPGA技術(shù)專欄 ? 來源:芯驛電子科技 ? 作者:芯驛電子科技 ? 2021-01-22 09:44 ? 次閱讀

原創(chuàng)教程由芯驛電子科技(上海)有限公司(ALINX)創(chuàng)作,版權(quán)歸本公司所有,如需轉(zhuǎn)載,需授權(quán)并注明出處。

適用于板卡型號:

AXU2CGA/AXU2CGB/AXU3EG/AXU4EV-E/AXU4EV-P/AXU5EV-E/AXU5EV-P /AXU9EG/AXU15EG

實驗Vivado工程為“rom_test”

FPGA本身是SRAM架構(gòu)的,斷電之后,程序就消失,那么如何利用FPGA實現(xiàn)一個ROM呢,我們可以利用FPGA內(nèi)部的RAM資源實現(xiàn)ROM,但不是真正意義上的ROM,而是每次上電都會把初始化的值先寫入RAM。本實驗將為大家介紹如何使用FPGA內(nèi)部的ROM以及程序?qū)υ揜OM的數(shù)據(jù)讀操作。

1.實驗原理

Xilinx在VIVADO里為我們已經(jīng)提供了ROM的IP核, 我們只需通過IP核例化一個ROM,根據(jù)ROM的讀時序來讀取ROM中存儲的數(shù)據(jù)。實驗中會通過VIVADO集成的在線邏輯分析儀ila,我們可以觀察ROM的讀時序和從ROM中讀取的數(shù)據(jù)。

2. 程序設(shè)計

2.1 創(chuàng)建ROM初始化文件

既然是ROM,那么我們就必須提前給它準(zhǔn)備好數(shù)據(jù),然后在FPGA實際運(yùn)行時,我們直接讀取這些ROM中預(yù)存儲好的數(shù)據(jù)就行。Xilinx FPGA的片內(nèi)ROM支持初始化數(shù)據(jù)配置。如下圖所示,我們可以創(chuàng)建一個名為rom_init.coe的文件,注意后綴一定是“.coe”,前面的名稱當(dāng)然可以隨意起。

o4YBAGAKLfCAQS9SAAAeaAKqdSU109.jpg

ROM初始化文件的內(nèi)容格式很簡單, 如下圖所示。第一行為定義數(shù)據(jù)格式, 16代表ROM的數(shù)據(jù)格式為16進(jìn)制。從第3行開始到第34行,是這個32*8bit大小ROM的初始化數(shù)據(jù)。每行數(shù)字后面用逗號,最后一行數(shù)字結(jié)束用分號。

pIYBAGAKLfGAGLywAABzDJPmCic645.jpg

rom_init.coe編寫完成后保存一下, 接下去我們開始設(shè)計和配置ROM IP核。

2.2 添加ROM IP核

在添加ROM IP之前先新建一個rom_test的工程, 然后在工程中添加ROM IP,方法如下:

2.2.1 點(diǎn)擊下圖中IP Catalog,在右側(cè)彈出的界面中搜索rom,找到Block Memory Generator,雙擊打開。

o4YBAGAKLfGARqhIAACKRFXw9HI673.jpg

2.2.2 將Component Name改為rom_ip,在Basic欄目下,將Memory Type改為Single Prot ROM。

pIYBAGAKLfKAYz5fAACEp_zU4jk939.jpg

2.2.3 切換到Port A Options欄目下,將ROM位寬Port A Width改為8,將ROM深度Port A Depth改為32,使能管腳Enable Port Type改為Always,并取消Primitives Output Register

o4YBAGAKLfKAMnRFAABoD0S19b0767.jpg

2.2.4 切換到Other Options欄目下,勾選Load Init File,點(diǎn)擊Browse,選中之前制作好的.coe文件。

o4YBAGAKLfOAEhwEAABan8hTPY8692.jpg

2.2.5 點(diǎn)擊ok,點(diǎn)擊Generate生成ip核。

pIYBAGAKLfOAPHq5AABQlNP5pWc645.jpg

3. ROM測試程序編寫

ROM的程序設(shè)計非常簡單, 在程序中我們只要每個時鐘改變ROM的地址, ROM就會輸出當(dāng)前地址的內(nèi)部存儲數(shù)據(jù),例化ila,用于觀察地址和數(shù)據(jù)的變化。ROM IP的實例化及程序設(shè)計如下:

`timescale1ns/1psmodulerom_test(
	inputsys_clk,	//25MHz時鐘	inputrst_n		//復(fù)位,低電平有效);wire[7:0]rom_data;	//ROM讀出數(shù)據(jù)reg	[4:0]rom_addr;//ROM輸入地址//產(chǎn)生ROM地址讀取數(shù)據(jù)always@(posedgesys_clkornegedgerst_n)beginif(!rst_n)
rom_addr<=10'd0;else
????????rom_addr?<=?rom_addr+1'b1;end//實例化ROMrom_ip?rom_ip_inst(.clka???(sys_clk????),//inoput?clka.addra??(rom_addr???),//input?[4:0]?addra.douta??(rom_data???)//output?[7:0]?douta);//實例化邏輯分析儀ila_0?ila_m0(.clk????(sys_clk),.probe0?(rom_addr),
	.probe1?(rom_data));endmodule

綁定引腳

##################Compress Bitstream############################
set_property BITSTREAM.GENERAL.COMPRESS TRUE [current_design]set_property PACKAGE_PIN AB11 [get_ports sys_clk]set_property IOSTANDARD LVCMOS33 [get_ports sys_clk]create_clock -period 40.000 -name sys_clk -waveform {0.000 20.000} [get_ports sys_clk]set_property IOSTANDARD LVCMOS33 [get_ports {rst_n}]set_property PACKAGE_PIN W13 [get_ports {rst_n}]

4. 仿真

仿真結(jié)果如下,符合預(yù)期,與RAM的讀取數(shù)據(jù)一樣,數(shù)據(jù)也是滯后于地址一個周期。

o4YBAGAKLfSAMfv3AABGMSTzZtk268.jpg

5. 板上驗證

以地址0為觸發(fā)條件,可以看到讀取的數(shù)據(jù)與仿真一致。

pIYBAGAKLfSAEmgqAACBlLEGVlw436.jpg

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

    關(guān)注

    1625

    文章

    21620

    瀏覽量

    601232
  • ROM
    ROM
    +關(guān)注

    關(guān)注

    4

    文章

    562

    瀏覽量

    85623
  • RAM
    RAM
    +關(guān)注

    關(guān)注

    8

    文章

    1354

    瀏覽量

    114441
  • Zynq
    +關(guān)注

    關(guān)注

    9

    文章

    607

    瀏覽量

    47101
  • MPSoC
    +關(guān)注

    關(guān)注

    0

    文章

    196

    瀏覽量

    24230
收藏 人收藏

    評論

    相關(guān)推薦

    ZYNQ Ultrascale+ MPSOC FPGA教程】第六FPGA內(nèi)RAM讀寫測試實驗

    RAM是FPGA中常用的基礎(chǔ)模塊,可廣泛用于緩存數(shù)據(jù)的情況,同樣它也是ROM,F(xiàn)IFO的基礎(chǔ)。本實驗將為大家介紹如何使用FPGA內(nèi)部的RAM以及程序?qū)υ揜AM的數(shù)據(jù)讀寫操作。
    的頭像 發(fā)表于 01-22 09:43 ?5169次閱讀
    【<b class='flag-5'>ZYNQ</b> <b class='flag-5'>Ultrascale+</b> <b class='flag-5'>MPSOC</b> <b class='flag-5'>FPGA</b>教程】第六<b class='flag-5'>章</b><b class='flag-5'>FPGA</b><b class='flag-5'>片</b><b class='flag-5'>內(nèi)</b>RAM讀寫<b class='flag-5'>測試</b><b class='flag-5'>實驗</b>

    如何利用ZYNQ MPSoC玩DOOM?

    Doom 來演示和測試系統(tǒng)。神馬?!你不知道 DOOM??(CS 你總知道吧 -__-||)如何針對 Zynq UltraScale+ MPSoC 通過 QEMU 在 Xen 上運(yùn)行
    發(fā)表于 10-09 06:21

    如何調(diào)試Zynq UltraScale+ MPSoC VCU DDR控制器

      如何調(diào)試Zynq UltraScale+ MPSoC VCU DDR控制器  Zynq UltraScale+
    發(fā)表于 01-07 16:02

    如何調(diào)試Zynq UltraScale+ MPSoC VCU DDR控制器

    如何調(diào)試 Zynq UltraScale+ MPSoC VCU DDR 控制器?
    發(fā)表于 01-22 06:29

    ZYNQ Ultrascale+ MPSOC FPGA教程

    ZYNQ Ultrascale+ MPSOC FPGA教程
    發(fā)表于 02-02 07:53

    基于Zynq UltraScale+ MPSoC上運(yùn)行 Xen 管理程序

    熟悉運(yùn)行在賽靈思 Zynq UltraScale+ MPSoC 上的 Xen 管理程序。 賽靈思和 DornerWorks 的系統(tǒng)軟件團(tuán)隊在賽靈思的 Zynq?
    發(fā)表于 11-16 20:17 ?3453次閱讀
    基于<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>上運(yùn)行 Xen 管理程序

    Zynq UltraScale+ MPSoC的發(fā)售消息

    Zynq?UltraScale+?MPSoC,現(xiàn)已開始發(fā)售。視頻向您重點(diǎn)介紹了Xilinx UltraScale +產(chǎn)品組合的第一位成員
    的頭像 發(fā)表于 11-27 06:47 ?3558次閱讀

    如何調(diào)試 Zynq UltraScale+ MPSoC VCU DDR 控制器?

    Zynq UltraScale+ MPSoC VCU DDR 控制器是一款專用 DDR 控制器,只支持在 Zynq UltraScale+
    發(fā)表于 02-23 06:00 ?15次下載
    如何調(diào)試 <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b> VCU DDR 控制器?

    ZYNQ Ultrascale+ MPSOC FPGA教程】第七章 FPGA內(nèi)ROM測試實驗

    FPGA本身是SRAM架構(gòu)的,斷電之后,程序就消失,那么如何利用FPGA實現(xiàn)一個ROM呢,我們可以利用FPGA內(nèi)部的RAM資源實現(xiàn)ROM,但
    發(fā)表于 02-26 06:22 ?3次下載
    【<b class='flag-5'>ZYNQ</b> <b class='flag-5'>Ultrascale+</b> <b class='flag-5'>MPSOC</b> <b class='flag-5'>FPGA</b>教程】<b class='flag-5'>第七章</b> <b class='flag-5'>FPGA</b><b class='flag-5'>片</b><b class='flag-5'>內(nèi)</b><b class='flag-5'>ROM</b><b class='flag-5'>測試</b><b class='flag-5'>實驗</b>

    ZYNQ Ultrascale+ MPSOC FPGA教程】第六 FPGA內(nèi)RAM讀寫測試實驗

    RAM是FPGA中常用的基礎(chǔ)模塊,可廣泛用于緩存數(shù)據(jù)的情況,同樣它也是ROM,F(xiàn)IFO的基礎(chǔ)。本實驗將為大家介紹如何使用FPGA內(nèi)部的RAM以及程序?qū)υ揜AM的數(shù)據(jù)讀寫操作。
    發(fā)表于 03-15 06:09 ?14次下載
    【<b class='flag-5'>ZYNQ</b> <b class='flag-5'>Ultrascale+</b> <b class='flag-5'>MPSOC</b> <b class='flag-5'>FPGA</b>教程】第六<b class='flag-5'>章</b> <b class='flag-5'>FPGA</b><b class='flag-5'>片</b><b class='flag-5'>內(nèi)</b>RAM讀寫<b class='flag-5'>測試</b><b class='flag-5'>實驗</b>

    米爾電子zynq ultrascale+ mpsoc底板外設(shè)資源清單分享

    米爾電子推出的國內(nèi)首款zynq ultrascale+ mpsoc平臺核心板(及開發(fā)板):MYC-CZU3EG吸引了人工智能、工業(yè)控制、嵌入式視覺、ADAS、算法加速、云計算、有線/無線通信等
    發(fā)表于 01-07 15:20 ?3次下載
    米爾電子<b class='flag-5'>zynq</b> <b class='flag-5'>ultrascale+</b> <b class='flag-5'>mpsoc</b>底板外設(shè)資源清單分享

    ZYNQ Ultrascale+ MPSoC系列FPGA芯片設(shè)計

    基于 Xilinx 公司ZYNQ Ultrascale+ MPSoC系列 FPGA 芯片設(shè)計,應(yīng)用于工廠自動化、機(jī)器視覺、工業(yè)質(zhì)檢等工業(yè)領(lǐng)域
    發(fā)表于 11-02 14:35 ?1544次閱讀

    Zynq UltraScale+ MPSoC中的隔離方法

    電子發(fā)燒友網(wǎng)站提供《Zynq UltraScale+ MPSoC中的隔離方法.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 17:11 ?1次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>中的隔離方法

    Zynq UltraScale+ MPSoC的隔離設(shè)計示例

    電子發(fā)燒友網(wǎng)站提供《Zynq UltraScale+ MPSoC的隔離設(shè)計示例.pdf》資料免費(fèi)下載
    發(fā)表于 09-13 11:28 ?3次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>的隔離設(shè)計示例

    Zynq UltraScale+ MPSoC驗證數(shù)據(jù)手冊

    電子發(fā)燒友網(wǎng)站提供《Zynq UltraScale+ MPSoC驗證數(shù)據(jù)手冊.pdf》資料免費(fèi)下載
    發(fā)表于 09-15 10:13 ?0次下載
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>驗證數(shù)據(jù)手冊