小梅哥Xilinx FPGA学习笔记19——IP 核使用之 ROM

这篇具有很好参考价值的文章主要介绍了小梅哥Xilinx FPGA学习笔记19——IP 核使用之 ROM。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一:章节导读

二:ROM IP 核配置

2.1 创建 ROM 初始化文件

2.3 ROM IP 核配置步骤

三: ROM核的仿真与调用

3.1 三角波的产生

3.2 仿真验证结果

3.3 正弦波的产生

3.4 仿真验证结果文章来源地址https://www.toymoban.com/news/detail-779059.html


一:章节导读

       ROM 是只读存储器( Read-Only Memory )的简称,是一种只能读出事先所存数据的固态半导体存储器。 其特性是一旦储存资料就无法再将之改变或删除,且资料不会因为电源关闭而消失。而事 实上在 FPGA 中通过 IP 核生成的 ROM RAM ,调用的都是 FPGA 内部的 RAM 资源,掉电内容都会丢失(这也很容易解释, FPGA 芯片内部本来 就没有掉电非易失存储器单元)。用 IP 核生成的 ROM 模块只是提前添加了数据文件 .coe 格式),在 FPGA 运行时通过数据文件给 ROM 模块初始化,才使得 ROM 模块像个 “真正”的掉电非易失存储器;也正是这个原因, ROM 模块的内容必须提前在数据文件中 写死,无法在电路中修改。 
       Xilinx 推出的 ROM IP 核分为两种类型:单端口 ROM Single-Port Rom )和双端口
ROM Dual-Port ROM )。对于单端口 ROM 提供一个读地址端口和一个读数据端口,只能
进行读操作;双端口 ROM 与单端口 ROM 类似,区别是其提供两个读地址端口和两个读数
据端口,基本上可以看做两个单口 RAM 拼接而成。下面是 ROM 不同配置模式存储器的接
口信号图,如下图 所示。
小梅哥Xilinx FPGA学习笔记19——IP 核使用之 ROM,小梅哥Xilinx ZYNQ 7000系列学习笔记,fpga开发,学习,笔记
小梅哥Xilinx FPGA学习笔记19——IP 核使用之 ROM,小梅哥Xilinx ZYNQ 7000系列学习笔记,fpga开发,学习,笔记
       在 FPGA 的开发过程中,片上存储器的灵活运用是一项非常重要的开发能力。FPGA 最常用的片上存储器控制器包括 ROM,RAM 和 FIFO。本章将实现一组固定的数据(三角波形表)存储在 FPGA 中使用 IP 核构建的 ROM 中,开发板上电后,系统开始从 ROM 中读出数据,并将数据直接通过并 口输出。

二:ROM IP 核配置

2.1 创建 ROM 初始化文件

       ROM 作为只读存储器,在进行 IP 核设置时需要指定初始化文件,即写入存储器中的 数据,数据要以规定的格式才能正确写入 ROM ,这种格式就是 coe 文件。 coe Vivado 定的一种文件格式,文件格式示意图,具体见下图
小梅哥Xilinx FPGA学习笔记19——IP 核使用之 ROM,小梅哥Xilinx ZYNQ 7000系列学习笔记,fpga开发,学习,笔记
       如上图 所示,该文件的格式较为简单,第一行是定义数据的格式,其中 16 表示 数据格式为 16 进制,也可将数据格式定义为二进制和八进制,只需将 16 改为 2 8 可。其中第 3 到第 18 行是 16*8bit 大小 ROM 的初始化数据。

2.3 ROM IP 核配置步骤

       首先点击1 箭头所指的 IP Catalog ,点击后会出现 IP Catalog 页面;我们在 IP 核的搜索 框中搜索 block ,根据筛序,我们双击箭头 3 所指的 RAM & ROM 核“ Block Memory Generator ”。双击之后会出现如下图 所示的配置界面。
小梅哥Xilinx FPGA学习笔记19——IP 核使用之 ROM,小梅哥Xilinx ZYNQ 7000系列学习笔记,fpga开发,学习,笔记
小梅哥Xilinx FPGA学习笔记19——IP 核使用之 ROM,小梅哥Xilinx ZYNQ 7000系列学习笔记,fpga开发,学习,笔记
1 中我们输入 IP 核的命名,后面实例化 IP 核的时候都是使用的该名字,这里所取 的名字最好是和该 IP 核相关,因为本节我们主要讲解 ROM ,所以给该 IP 核取名为 rom_256x8 rom 是我们调用的 IP 核, 256 是调用的 IP 核容量, 8 是调用的 IP 核数据位 宽。这里这样命名是为了方便识别我们创建的 IP 核类型及资源量)。
2 我们按默认选中“ Native
3 中选择存储器类型,可供选择的类型有: Single Port RAM (单端口 RAM )、 Simple Dual Port RAM (简单双口 RAM )、 True Dual Port RAM (真双口 RAM )、 Singl Port ROM (单端口 ROM )、 Doul Port ROM (双端口 ROM )。这里我们选择“ Single Port Rom ”单端口 ROM
4 Algorithm 一栏中可选择用于实现内存的算法,其中 Minimum Area 为最小面积 算法; Low Power 为低功耗算法; Fixed Primitives 为固定单元算法。这里我们按默认选择 Minimum Area 即可。 设置完之后切换到“ Potr A Options ”页面。
小梅哥Xilinx FPGA学习笔记19——IP 核使用之 ROM,小梅哥Xilinx ZYNQ 7000系列学习笔记,fpga开发,学习,笔记
1 中是设置存储数据的位宽,这里我们设置为 8 位;
2 中是设置数据深度,所谓深度其实就是个数的选择,即设置的 ROM 可以存储多 少个 8 位宽的数据,这里我们设置为 256 ;这样我们设置的 ROM 和最大能存储的数据即为 256 x 8bit 。(注意:设置的容量需大于我们需要写入的数据文件的数据量)
3 中选择是否创建端口使能信号,这里我们不创建,选择“ Always Enabled ”始终 使能。
4 是选择是否创建输出端口寄存器,若创建了择输出数据则会延后一个时钟输出这里我们不创建。
5 是选择是否生产复位信号,这里我们不创建。
设置完之后切换到“ Other Options ”页面。
小梅哥Xilinx FPGA学习笔记19——IP 核使用之 ROM,小梅哥Xilinx ZYNQ 7000系列学习笔记,fpga开发,学习,笔记
       如下图所示,1 中选项是加载数据文件,即我们前面讲到的 ROM 初始化文件, 由于 ROM 是只读存储器,所以我们必须添加 ROM 初始化文件才行。勾选上“ Load Init File ”点击 Browse 进行添加 .coe 初始化文件,文件格式我们之前已经讲解,大家可根据自 己想存入的数据进行生成该文件。该页面其余按默认设置即可。
设置完之后切换到“ Summary ”页面。
小梅哥Xilinx FPGA学习笔记19——IP 核使用之 ROM,小梅哥Xilinx ZYNQ 7000系列学习笔记,fpga开发,学习,笔记
       如下图所示,在“ Summary ”页面,从“ IP Symbol ”窗口可以看到我们最终创建 ROM 核的端口信号。点击“ OK ”完成 ROM 的创建设置。
小梅哥Xilinx FPGA学习笔记19——IP 核使用之 ROM,小梅哥Xilinx ZYNQ 7000系列学习笔记,fpga开发,学习,笔记
       创建之后接下来跳出如下图所示界面,我们点击“ Generate ”。
小梅哥Xilinx FPGA学习笔记19——IP 核使用之 ROM,小梅哥Xilinx ZYNQ 7000系列学习笔记,fpga开发,学习,笔记
       接下来出现如下图所示界面,我们点击“ OK ”完成生成。
小梅哥Xilinx FPGA学习笔记19——IP 核使用之 ROM,小梅哥Xilinx ZYNQ 7000系列学习笔记,fpga开发,学习,笔记
       如下图所示,生成之后可以在工程中看到我们正常的 IP 核,双击 IP 核可进入配置 界面,对 IP 核的相关参数进行更改。
小梅哥Xilinx FPGA学习笔记19——IP 核使用之 ROM,小梅哥Xilinx ZYNQ 7000系列学习笔记,fpga开发,学习,笔记

三: ROM核的仿真与调用

3.1 三角波的产生

使用小梅哥生成的三角波的.coe文件然后进行仿真验证,代码如下
`timescale 1ns / 1ps
module blk_mem_gen_0_tb();

`define CLK_PERIOD 20
reg clk;
reg [7:0]addr;
integer i = 0;

initial clk = 1;
always #(`CLK_PERIOD/2) clk = ~clk;

wire [7:0]dout;

blk_mem_gen_0 rom (
  .clka(clk),    // input wire clka
  .addra(addr),  // input wire [7 : 0] addra
  .douta(dout)  // output wire [7 : 0] douta
); 
initial begin
    addr = 0;
    #21;
    for(i=0;i<2560;i=i+1)begin
    #`CLK_PERIOD;
    addr = addr + 1'b1;
    end
    #(`CLK_PERIOD * 50);
    $stop; 
end

endmodule

3.2 仿真验证结果

小梅哥Xilinx FPGA学习笔记19——IP 核使用之 ROM,小梅哥Xilinx ZYNQ 7000系列学习笔记,fpga开发,学习,笔记

3.3 正弦波的产生

使用小梅哥的精灵软件生成的正弦波的.coe文件然后进行仿真验证。代码同 3.2节

3.4 仿真验证结果

小梅哥Xilinx FPGA学习笔记19——IP 核使用之 ROM,小梅哥Xilinx ZYNQ 7000系列学习笔记,fpga开发,学习,笔记
     
至此rom IP调用仿真完毕

到了这里,关于小梅哥Xilinx FPGA学习笔记19——IP 核使用之 ROM的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • FPGA_学习_17_IP核_ROM(无延迟-立即输出)

    由于项目中关于厂商提供的温度-偏压曲线数据已经被同事放在ROM表了,我这边可用直接调用。 今天在仿真的时候,发现他的ROM表用的IP核是及时输出的,就是你地址给进去,对应地址的ROM数据就立马输出,没有延迟。 我打开他的IP核配置一看,他用的是 Distributed Memory Genera

    2024年02月11日
    浏览(29)
  • FPGA原理与结构——ROM IP的使用与测试

    系列文章目录:FPGA原理与结构(0)——目录与传送门         本文介绍 Block Memory Generator v8.4 IP核 实现ROM,在学习一个IP核的使用之前,首先需要对于IP核的具体参数和原理有一个基本的了解,具体可以参考: FPGA原理与结构——块RAM(Block RAM,BRAM) https://blog.csdn.net/appl

    2024年02月11日
    浏览(21)
  • FPGA_ZYNQ (PS端)开发流程(Xilinx软件工具介绍)

            针对不同的应用领域,Xilinx 公司设计开发了各种逻辑资源规模和集成各 种外设功能的Zynq SOC器件,包括专为成本优化的Zynq-7000平台,面向高性 能实时计算应用领域的 Zynq UltraScale+ MPSoC,面向射频通信的 ZynqUltraScale+ RFSoC,以及具备高度可扩展特性的自适应加速平台

    2024年01月16日
    浏览(52)
  • xilinx FPGA 除法器ip核(divider)的学习和仿真(Vivado)

    在设计中,经常出现除法运算, 实现方法 : 1、移位操作 2、取模取余 3、调用除法器IP核 4、查找表 简单学习除法器IP。 网上很多IP翻译文档,不详细介绍,记录几个重要的点: 1、三种算法模式(不同模式所消耗的资源类型不同) 2、分清除数和被除数;余数模式的选择 3、延

    2024年04月28日
    浏览(62)
  • 从零开始学ZYNQ(FPGA)笔记二 | 认识学习内容

    目录 1. 认识FPGA 什么是FPGA FPGA的编程过程  2. 认识ARM 什么是ARM ARM与FPGA的区别 ARM与Linux 3. 认识ZYNQ ZYNQ与FPGA的区别 ZYNQ的\\\"ARM\\\"和\\\"FPGA\\\" 关于PL 关于PS 4. 学习用板载资源 5. 总结         FPGA是一种集成电路,它可以在制造后由客户或设计者根据需要配置电路功能 。FPGA的内部由可

    2024年02月08日
    浏览(40)
  • xilinx FPGA FIFO IP核的使用(VHDL&ISE)

    1.新建工程和ip核文件 下图显示了一个典型的写操作。拉高WR_EN,导致在WR_CLK的下一个上升边缘发生写入操作。因为FIFO未满,所以WR_ACK输出1,确认成功的写入操作。当只有一个附加的单词可以写入FIFO时,FIFO会拉高ALMOST_FULL标志。当ALMOST_FULL拉高之后,一个附加的写入将导致

    2024年02月03日
    浏览(40)
  • Xilinx Zynq-7000系列FPGA任意尺寸图像缩放,提供两套工程源码和技术支持

    Xilinx Zynq-7000系列FPGA任意尺寸图像缩放,提供两套工程源码和技术支持 没玩过图像缩放都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。 目前市面上主流的FPGA图像缩放方案如下: 1:Xilinx的HLS方案,该方案简单,易于实现,但只能用于Xilinx自家

    2024年02月03日
    浏览(37)
  • 如何创建 Xilinx BRAM 或 ROM 初始化文件(.COE)并实现初始化数据在 FPGA 上的载入

    如何创建 Xilinx BRAM 或 ROM 初始化文件(.COE)并实现初始化数据在 FPGA 上的载入 在 FPGA 开发中,初始化数据是一个非常重要的内容,它决定了电路从上电开始的初始状态,对于保证正确性和可靠性有着至关重要的作用。其中,BRAM(Block RAM)和 ROM(Read-Only Memory)是两种常见的

    2024年02月09日
    浏览(31)
  • Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持

    Xilinx Zynq-7000系列FPGA多路视频处理:图像缩放+视频拼接显示,提供工程源码和技术支持 没玩过图像缩放和视频拼接都不好意思说自己玩儿过FPGA,这是CSDN某大佬说过的一句话,鄙人深信不疑。。。本文使用Xilinx Zynq7000系列FPGA Zynq7020实现HLS图像缩放+视频拼接,输入视频源采用

    2024年02月04日
    浏览(42)
  • FPGA(基于xilinx)中PCIe介绍以及IP核XDMA的使用

    例如:第一章 PCIe简介以及IP核的使用 PCIe 总线架构与以太网的 OSI 模型类似,是一种分层协议架构, 分为事务层(Transaction Layer)、 数据链路层(Data Link Layer) 和物理层(Physical Layer)。 这些层中的每一层都分为两部分:一部分处理出站(要发送的)信息,另一部分处理入站(接收

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包