0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【ZYNQ Ultrascale+ MPSOC FPGA教程】第七章FPGA片内ROM测试实验

FPGA技术专栏 来源:芯驿电子科技 作者:芯驿电子科技 2021-01-22 09:44 次阅读

原创教程由芯驿电子科技(上海)有限公司(ALINX)创作,版权归本公司所有,如需转载,需授权并注明出处。

适用于板卡型号:

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

实验Vivado工程为“rom_test”

FPGA本身是SRAM架构的,断电之后,程序就消失,那么如何利用FPGA实现一个ROM呢,我们可以利用FPGA内部的RAM资源实现ROM,但不是真正意义上的ROM,而是每次上电都会把初始化的值先写入RAM。本实验将为大家介绍如何使用FPGA内部的ROM以及程序对该ROM的数据读操作。

1.实验原理

Xilinx在VIVADO里为我们已经提供了ROM的IP核, 我们只需通过IP核例化一个ROM,根据ROM的读时序来读取ROM中存储的数据。实验中会通过VIVADO集成的在线逻辑分析仪ila,我们可以观察ROM的读时序和从ROM中读取的数据。

2. 程序设计

2.1 创建ROM初始化文件

既然是ROM,那么我们就必须提前给它准备好数据,然后在FPGA实际运行时,我们直接读取这些ROM中预存储好的数据就行。Xilinx FPGA的片内ROM支持初始化数据配置。如下图所示,我们可以创建一个名为rom_init.coe的文件,注意后缀一定是“.coe”,前面的名称当然可以随意起。

o4YBAGAKLfCAQS9SAAAeaAKqdSU109.jpg

ROM初始化文件的内容格式很简单, 如下图所示。第一行为定义数据格式, 16代表ROM的数据格式为16进制。从第3行开始到第34行,是这个32*8bit大小ROM的初始化数据。每行数字后面用逗号,最后一行数字结束用分号。

pIYBAGAKLfGAGLywAABzDJPmCic645.jpg

rom_init.coe编写完成后保存一下, 接下去我们开始设计和配置ROM IP核。

2.2 添加ROM IP核

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

2.2.1 点击下图中IP Catalog,在右侧弹出的界面中搜索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,点击Browse,选中之前制作好的.coe文件。

o4YBAGAKLfOAEhwEAABan8hTPY8692.jpg

2.2.5 点击ok,点击Generate生成ip核。

pIYBAGAKLfOAPHq5AABQlNP5pWc645.jpg

3. ROM测试程序编写

ROM的程序设计非常简单, 在程序中我们只要每个时钟改变ROM的地址, ROM就会输出当前地址的内部存储数据,例化ila,用于观察地址和数据的变化。ROM IP的实例化及程序设计如下:

`timescale1ns/1psmodulerom_test(
	inputsys_clk,	//25MHz时钟	inputrst_n		//复位,低电平有效);wire[7:0]rom_data;	//ROM读出数据reg	[4:0]rom_addr;//ROM输入地址//产生ROM地址读取数据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. 仿真

仿真结果如下,符合预期,与RAM的读取数据一样,数据也是滞后于地址一个周期。

o4YBAGAKLfSAMfv3AABGMSTzZtk268.jpg

5. 板上验证

以地址0为触发条件,可以看到读取的数据与仿真一致。

pIYBAGAKLfSAEmgqAACBlLEGVlw436.jpg

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1626

    文章

    21669

    浏览量

    601873
  • ROM
    ROM
    +关注

    关注

    4

    文章

    562

    浏览量

    85676
  • RAM
    RAM
    +关注

    关注

    8

    文章

    1367

    浏览量

    114533
  • Zynq
    +关注

    关注

    9

    文章

    608

    浏览量

    47128
  • MPSoC
    +关注

    关注

    0

    文章

    198

    浏览量

    24252
收藏 人收藏

    评论

    相关推荐

    ZYNQ Ultrascale+ MPSOC FPGA教程】第六FPGARAM读写测试实验

    RAM是FPGA中常用的基础模块,可广泛用于缓存数据的情况,同样它也是ROM,FIFO的基础。本实验将为大家介绍如何使用FPGA内部的RAM以及程序对该RAM的数据读写操作。
    的头像 发表于 01-22 09:43 5187次阅读
    【<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'>内</b>RAM读写<b class='flag-5'>测试</b><b class='flag-5'>实验</b>

    如何利用ZYNQ MPSoC玩DOOM?

    Doom 来演示和测试系统。神马?!你不知道 DOOM??(CS 你总知道吧 -__-||)如何针对 Zynq UltraScale+ MPSoC 通过 QEMU 在 Xen 上运行
    发表于 10-09 06:21

    如何调试Zynq UltraScale+ MPSoC VCU DDR控制器

      如何调试Zynq UltraScale+ MPSoC VCU DDR控制器  Zynq UltraScale+
    发表于 01-07 16:02

    如何调试Zynq UltraScale+ MPSoC VCU DDR控制器

    如何调试 Zynq UltraScale+ MPSoC VCU DDR 控制器?
    发表于 01-22 06:29

    ZYNQ Ultrascale+ MPSOC FPGA教程

    ZYNQ Ultrascale+ MPSOC FPGA教程
    发表于 02-02 07:53

    基于Zynq UltraScale+ MPSoC上运行 Xen 管理程序

    熟悉运行在赛灵思 Zynq UltraScale+ MPSoC 上的 Xen 管理程序。 赛灵思和 DornerWorks 的系统软件团队在赛灵思的 Zynq®
    发表于 11-16 20:17 3471次阅读
    基于<b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>上运行 Xen 管理程序

    Zynq UltraScale+ MPSoC的发售消息

    Zynq®UltraScale+MPSoC,现已开始发售。视频向您重点介绍了Xilinx UltraScale +产品组合的第一位成员
    的头像 发表于 11-27 06:47 3573次阅读

    如何调试 Zynq UltraScale+ MPSoC VCU DDR 控制器?

    Zynq UltraScale+ MPSoC VCU DDR 控制器是一款专用 DDR 控制器,只支持在 Zynq UltraScale+
    发表于 02-23 06:00 15次下载
    如何调试 <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b> VCU DDR 控制器?

    ZYNQ Ultrascale+ MPSOC FPGA教程】第七章 FPGAROM测试实验

    FPGA本身是SRAM架构的,断电之后,程序就消失,那么如何利用FPGA实现一个ROM呢,我们可以利用FPGA内部的RAM资源实现ROM,但
    发表于 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'>内</b><b class='flag-5'>ROM</b><b class='flag-5'>测试</b><b class='flag-5'>实验</b>

    ZYNQ Ultrascale+ MPSOC FPGA教程】第六 FPGARAM读写测试实验

    RAM是FPGA中常用的基础模块,可广泛用于缓存数据的情况,同样它也是ROM,FIFO的基础。本实验将为大家介绍如何使用FPGA内部的RAM以及程序对该RAM的数据读写操作。
    发表于 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'>内</b>RAM读写<b class='flag-5'>测试</b><b class='flag-5'>实验</b>

    米尔电子zynq ultrascale+ mpsoc底板外设资源清单分享

    米尔电子推出的国内首款zynq ultrascale+ mpsoc平台核心板(及开发板):MYC-CZU3EG吸引了人工智能、工业控制、嵌入式视觉、ADAS、算法加速、云计算、有线/无线通信等
    发表于 01-07 15:20 3次下载
    米尔电子<b class='flag-5'>zynq</b> <b class='flag-5'>ultrascale+</b> <b class='flag-5'>mpsoc</b>底板外设资源清单分享

    ZYNQ Ultrascale+ MPSoC系列FPGA芯片设计

    基于 Xilinx 公司ZYNQ Ultrascale+ MPSoC系列 FPGA 芯片设计,应用于工厂自动化、机器视觉、工业质检等工业领域
    发表于 11-02 14:35 1555次阅读

    Zynq UltraScale+ MPSoC中的隔离方法

    电子发烧友网站提供《Zynq UltraScale+ MPSoC中的隔离方法.pdf》资料免费下载
    发表于 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的隔离设计示例

    电子发烧友网站提供《Zynq UltraScale+ MPSoC的隔离设计示例.pdf》资料免费下载
    发表于 09-13 11:28 3次下载
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>的隔离设计示例

    Zynq UltraScale+ MPSoC验证数据手册

    电子发烧友网站提供《Zynq UltraScale+ MPSoC验证数据手册.pdf》资料免费下载
    发表于 09-15 10:13 0次下载
    <b class='flag-5'>Zynq</b> <b class='flag-5'>UltraScale+</b> <b class='flag-5'>MPSoC</b>验证数据手册