Xilinx系FPGA学习笔记(五)ROM的IP核学习

news2024/11/15 15:51:27

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • ROM IP
    • 分布式ROM生成
      • ROM配置
      • 创建COE文件
    • 块ROM生成
      • 如何快速生成Example Design
  • 两种ROM对比


前言

最近在学习小梅哥的xilinx型FPGA开发板,一边学习一边记录,简化整理一下笔记


ROM IP

在 Memories &Storage Elements 下可以看到有两个与 ROM 相关的 IP,一个是 Distributed Memory Generator,另一个是 Block Memory Generator
在这里插入图片描述

两种生成的 Core所占用的 FPGA 资源不一样

Distributed Memory Generator 生成的 ROM/RAM Core 占用的资源是 LUT(查找表,查找表本质就是一个小的 RAM);
可以生成:Distributed ROM、Distributed Single-Port RAM、Distributed Dual-Port RAM、Distributed Simple Dual-Port RAM

Block Memory Generator 生成的 ROM/RAM Core 占用的资源是 Block Memory(嵌入式的硬件 RAM)

ROM即随机只读存储器,所以一般只能读,我们可以编写COE文件,与生成的ROM进行绑定,这样从ROM读出来的数据就是我们自定义的

这里还有一种URAM,Ultra RAM是一种高性能、低延迟的存储器资源,实现大容量的存储和高带宽的存储访问,暂时还没有涉及该方面

分布式ROM生成

ROM配置

选择Distributed Memory Generator来生成IP核

在这里插入图片描述
Depth:设置 ROM 深度
Data Width:设置数据位宽
Memory Type:选择存储类型,这里选择 ROM
在这里插入图片描述
Input Options:设置是否对输入的地址增加一级寄存器,设置选择 Registered,对输入的地址增加一级寄存器,会发现多了一个CLK

Output Option:设置是否对输出的地址增加一级寄存器,这里选择 Both,输出数据信号 spo 和增加一级寄存器后的输出数据信号 qspo 都从端口引出。下面还有个 SinglePort Output CE 可选配,当勾选后,ROM Core 就会多出一个 qspo_ce 的端口,这个信号是用来控制使能输出寄存器的时钟。

Pipeline Stages:流水线级数,在生成 ROM 模式下,不可配。
在这里插入图片描述

添加 COE 文件位置,可以通过选择路径添加已有的 COE 文件,软件会通过 COE 文件生成 ROM 初始化文件 MIF 文件。
没有也可以直接创建编辑

COE Options:设置 ROM 中初始化数据没有覆盖的区域的数值,比如 ROM 深度 256,添加的 COE 文件中仅初始化了 200 个数据,这里就是统一设置剩下的 56 个数据的数值。Radix是进制

Reset Options:添加输出寄存器复位信号,可添加同步复位或异步复位

ce overrides 设置:
CE Overrides Sync Controls:在选择了输出寄存器同步复位和时钟使能才能启用,启用后,同步控制由时钟使能限定。
Sync Controls Overrides CE:在选择了输出寄存器同步复位和时钟使能才能启用,启用后,同步控制信号会工作,不受时钟使能限定。
前面未勾选时钟使能信号 CE,这里就不可设置,保持默认即可。

在这里插入图片描述
这里的a是输入地址,clk是时钟,qspo_ce是qspo的使能,不要也行,qspo是寄存一级的输出,spo是直接输出,qspo会比spo慢一个时钟周期

创建COE文件

新建行,添加进制和数据信息
在这里插入图片描述
memory_initialization_radix 是 ROM 初始化数值进制设置,对应后面 Value 值可设置 2,10,16,分别表示 2 进制,10 进制,16 进制。

memory_initialization_vector 是 ROM 初始化数据向量,对应后面 Value 值就是填写 ROM 初始化的数据,数据与数据之间通过空格或逗号隔开,数据个数不允许超过设置 ROM 的深度(可以少于设置的深度),数据不允许为负数。

注:Key 和 Value 里面填写内容不区分大小写。

设置完成后保存即可(软件会自动validate验证编写对否)

在这里插入图片描述
IP Source 窗 口 IP Synthesis 下 看 到 有dist_mem_rom_ip.mif 文件,这个文件就是 IP 生成过程中通过我们添加的 coe 文件自动生成的,这点和 quartus 有所不同(quartus 是用户直接添加指定 mif 文件)。有一点比 quartus 好的就是在 ROM Core 建立时 vivado 软件会根据用户添加 coe 文件以及设置 ROM 参数(深度,位宽)对 coe 文件进行校验,如果不符合要求会提示相关错误,可以有效避免初始化文件不匹配的问题。

mif文件可以用matlab来写txt生成一个我们想要的数据,当我们想要更换COE文件的时候,对 rom IP 进行重新的设置
在这里插入图片描述
重新绑定COE文件就行

块ROM生成

使用硬件块 RAM 资源的 ROM IP,点击 Block Memory Generator
在这里插入图片描述
在这里插入图片描述
Interface选项有两种接口,一种是常规接口,一种是AXI 接口
memory type有 ROM 和 RAM 两种类型,ROM 又分为单端口 ROM 和双端口ROM。对于 RAM 而言,有三种可选项,单端口 RAM、简单双端口 RAM 和真双端口 RAM。

单端口 ROM,一个时钟,一个地址通道,一个数据通道。
双端口 ROM,两个时钟,两个地址通道,两个数据通道,可同时在两个时钟域下读取地址 ROM 中的数据。(相当于两个ROM)

Algorithm Options 算法类型:有三种选项可选,最小面积、低功耗、固定原语。(可查手册)

在这里插入图片描述
memory size设置位宽和深度
在这里插入图片描述
端口使能信号类型设置,一个是一直使能,一个是通过一个 ENA 信号管脚控制

Prot A Output Reset Options: 端口 A 输出置位/复位设置,这里置位/复位并不复位RAM 中的数据而是只复位寄存器上的值。

在这里插入图片描述
勾选 Load Init File,加载初始化文件,这里可以加载上面生成的 coe 文件,下面的 Fill Remaining Memory Location 是用来填充初始化文件没有覆盖的地址区域的数值(类似前面介绍的意思)

Latentcy 指的是相对于某个时钟起始位的 1 个或多个时钟后数据才有效,一般以时钟为单位,这里表示的是时钟采集到读数据地址到数据有效的时间间隔
在这里插入图片描述
这里 Latency 等于 3,是因为我们前面配置同时勾选了Primitives Output Register和 Core Output Register,相当于数据打了两拍。

如何快速生成Example Design

在 PROJECT 窗口的 IP Sources 中找到我们生成的 block ROM IP ,右键找到 Open IP Example Design。
在这里插入图片描述
会生成一个新的项目,会用VHDL帮我们写一个测试文件,然后我们自己Run Simulation就行了
在这里插入图片描述

两种ROM对比

在这里插入图片描述
在这里面可以看到具体资源使用情况,包括每个模块使用后的资源情况。
在这里插入图片描述

使用了 29 LUT、8 个触发器、12 个 F7 的选择器、6 个 F8 的选择器、17 个 IO资源(1 个时钟输入,8 个地址输入线,8 个数据输出线)
还有消耗了 Slice 和 Slice LUTs

CLB(Configurable Logic Block,可配置逻辑快)资源:包含了 2 个 Slice,每个 Slice 包含 4 个 6 输入 LUT、进位链、3 个多路复用器和 8 个寄存器,一个 LUT 逻辑容量为 2^6bit,
在这里插入图片描述
Block RAM生成的块 ROM IP,只使用了寄存器和 Block
RAM 资源。没有消耗 LUT 资源。

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2113726.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

JVM、JRE和 JDK:理解Java开发的三大核心组件

Java是一门跨平台的编程语言,它的成功离不开背后强大的运行环境与开发工具的支持。在Java的生态中,JVM(Java虚拟机)、JRE(Java运行时环境)和JDK(Java开发工具包)是三个至关重要的核心…

致远个性化之--获取明细表中相同类型的数据汇总,并赋值对应明细行中

需求 由于在近期的项目中,有预算、费用管控等需求,而且在报销填报时,费用明细项可能会有重复相同的费用类型发生多项,而相同的费用类型是多项时,要求按照汇总后的费用管控。 具体示例图如下: 邮寄费发生了两…

有希带你深入理解指针(4)

目录 前言🥰1.回调函数😺1.1回调函数的概念😋 2.qsort使用🤯2.1什么是qsort👻2.2 qsort函数的使用🧐 3.模拟实现qsort😎 前言🥰 本篇文章是对指针知识的进一步讲解,如果…

无人机飞手执照:模拟训练技术详解

随着无人机技术的飞速发展,其在航拍、农业、物流、救援等多个领域的应用日益广泛,对无人机飞手的技能与安全意识要求也随之提高。为了确保无人机操作的安全性与效率,获取无人机飞手执照成为专业从业者不可或缺的步骤。模拟训练作为执照考取过…

第一个搭建SpringBoot项目(连接mysql)

首先新建项目找到Spring Initializr 我使用的URL是https://start.spring.io这里最低的JDK版本是17,而且当网速不好的时候可能会显示超时,这里可以选用阿里云的镜像https://start.aliyun.com可以更快一些但是里面还是有一些区别的 我们这里选择Java语言&a…

【OpenCV3】图像的翻转、图像的旋转、仿射变换之图像平移、仿射变换之获取变换矩阵、透视变换

1 图像的放大与缩小 2 图像的翻转 3 图像的旋转 4 仿射变换之图像平移 5 仿射变换之获取变换矩阵 6 透视变换 1 图像的放大与缩小 resize(src, dsize[, dst[, fx[, fy[, interpolation]]]]) src: 要缩放的图片dsize: 缩放之后的图片大小, 元组和列表表示均可.dst: 可选参数, 缩…

AIGC大模型智能抠图(清除背景):Sanster/IOPaint,python(2)

AIGC大模型智能抠图(清除背景):Sanster/IOPaint,python(2) 在文章(1)的基础上,尝试用大模型扣除图中的某些主要景物。 1、首先,安装插件: pip i…

Qt项目使用Inno Setup打包(关于打包中文乱码的解决)

​ 关于打包好的文件乱码解决方法 打包好的文件中文乱码,就是编码格式出现了问题,更改一下中文脚本编码格式,在官网Inno Setup Translations下载好中文脚本 点击下载,然后另存为 得到ChineseSimplified.isl.txt文件后&#…

使用3DUNet训练自己的数据集(pytorch)— 医疗影像分割

代码:lee-zq/3DUNet-Pytorch: 3DUNet implemented with pytorch (github.com) 文章<cicek16miccai.pdf (uni-freiburg.de)3D U-Net: Learning Dense Volumetric Segmentation

贷款利率高低跟什么有关?仅凭身份证就能贷到款?额度是多少?

在金融的广阔舞台上&#xff0c;借款人的“信用基石”——即其综合资质&#xff0c;是决定贷款利率高低的决定性因素。这并非偶然&#xff0c;而是银行基于详尽的风险评估与收益预期所做出的精准判断。 需明确的是&#xff0c;贷款的易得性并不意味着无门槛的放任。它更像是设置…

【动手学深度学习】04 数据操作 + 数据预处理(个人向笔记)

数据操作 N维数组是机器学习和神经网络的主要数据结构其中 2-d 矩阵中每一行表示每一行表示一个样本 当维度来到三维的时候则可以表示成一张图片&#xff0c;再加一维就可以变成多张图片&#xff0c;再加一维则可以变成一个视频 访问元素 冒号表示从冒号左边的元素到冒号右…

巨魔商店2安装教程,支持最新iOS 17.0的所有型号

支持iOS15.0到16.6.1、16.7 RC (20H18)和17.0的所有iPhone/iPad。 工具下载地址&#xff1a; https://wwi.lanzoup.com/b0knd3q5g 密码:czhi Windows安装教程&#xff1a; 1&#xff0c;电脑必须安装ITunes&#xff0c;关闭查找我的 iPhone&#xff0c;手机上必须要有提示&…

python imshow报错怎么解决

实例如下所示&#xff1a; import matplotlib.pyplot as plt plt.imshow(img) #控制台打印出图像对象的信息&#xff0c;而图像没有显示 解决方法&#xff1a; #引入pylab解决 import matplotlib.pyplot as plt import pylab plt.imshow(img) pylab.show()

MES管理系统助力企业车间管理可视化

MES管理系统作为连接计划层与现场自动化系统的桥梁&#xff0c;在助力企业车间管理可视化方面发挥着重要作用。以下是MES管理系统如何助力企业车间管理可视化的详细阐述&#xff1a; 一、MES管理系统的概述 MES&#xff08;制造执行系统&#xff09;是一种用于生产车间的实时信…

点云数据常见的坐标系有哪些,如何进行转换?

文章目录 一、点云坐标系分类1. 世界坐标系2. 相机坐标系3. 极坐标系4. 笛卡尔坐标系(直角坐标系):5. 传感器坐标系6. 地理坐标系二、坐标系转换方法1. 地理坐标系与投影坐标系之间的转换2. 投影坐标系与局部坐标系之间的转换3. 局部坐标系与3D模型坐标系之间的转换4. 相机坐…

访问修饰符public、protected、private,基于C++

一、基本概念 公有&#xff08;public&#xff09;成员 公有成员在程序中类的外部是可访问的。您可以不使用任何成员函数来设置和获取公有变量的值&#xff0c; 私有&#xff08;private&#xff09;成员 私有成员变量或函数在类的外部是不可访问的&#xff0c;甚至是不…

部落冲突:精通五个流派,部落战传奇杯横着走,但前提是能精通!

部落冲突&#xff1a;精通五个流派&#xff0c;部落战传奇杯横着走&#xff0c;但前提是能精通&#xff01; 在部落冲突当中有很多的流派&#xff0c;每个流派都有着属于自己的特点&#xff0c;但是速途同归的每个流派的最终目的都是用来打部落战和传奇杯&#xff0c;日常打资…

MAT:一款针对MSSQL服务器的安全检测与审计工具

关于MAT MAT是一款针对MSSQL服务器的安全检测与审计工具&#xff0c;该工具使用C#开发&#xff0c;可以帮助广大研究人员快速识别和发现MSSQL 服务器中的安全问题&#xff0c;并实现安全检测与审计目的。 功能介绍 1、执行自动检查并识别安全问题&#xff1b; 2、允许通过 Win…

驾驭冰雪 安全无忧,韩泰高性能冬季轮胎新品上市

- 韩泰轮胎推出冬季轮胎新产品Winter i*cept iZ3和SUV专用的Winter i*cept iZ3 X - 新轮胎采用了V型花纹&#xff0c;冰雪路面安全性极佳&#xff0c;而且具有操控性好、续航里程长的优点 - 新轮胎在位于北极圈以北300km的韩泰轮胎芬兰伊瓦洛测试场进行了严苛测试&#xff0c…

将用户证书导入到系统证书

现在大部分app已经不信任用户证书,通过传统charles安装证书抓包的方式已经不行,今天就来说一个将系统证书移动到系统目录的方法,系统证书的目录只有可读权限,有时候挂在目录会不成功 我们先下载如下模块 GitHub - ys1231/MoveCertificate: 支持Android7-14移动证书&#xff0…