FPGA片内RAM读写测试实验 1

简介: FPGA片内RAM读写测试实验

前言

本节讲述一下 FPGA 片内 RAM 的仿真与测试,我们也知道 RAM 是随机存储器,顾名思义是一种存储数据的一种模块,说到随机呢,也就是我们可以任意的访问它里面的一些地址空间里面的数据。

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

一、创建及配置工程

1、创建工程

新建一个 ram_test 的工程

2、添加 RAM IP核

①、 点击下图中 IP Catalog ,在右侧弹出的界面中搜索 ram ,找到 Block Memory Generator,双击打开。


②、Basic 选项栏按照下图进行配置

  • Interface Type:接口类型,选择 Native
  • 在 XILINX 的 FPGA 上想要实现一个存储器,一般有两种方式:第一种是自己使用 FPGA 的逻辑资源自己设计;第二种是使用 XILINX 专用的 Block Memory Generator(BMG)。针对 BRAM 的资源形式,XILINX 提供了两种接口类型:Native 和 AXI4。这两种核的主要特点如下表。

Memory Type:存储器类型,选择 Simple Dual Port RAM

  • Native 端口的内存类型共有五种,区别如下表

Simple Dual Port RAM 的写时序如下

  • 当写使能有效时(高电平),在时钟的上升沿将指定数据写入到指定地址


Simple Dual Port RAM 的读时序如下

  • 读的时候是有一定延时的,如果在同一个时钟下面我们去采集这个有效的输出数据的时候,我们是需要在下一个周期才能采集到它的一个有效的数据

③、Port A Option 选项栏按照下图进行配置

按照这样设置,也就是说可以存储 512 个 16 位数据

  • Port A Width(数据宽度):端口 A 的宽度,这里我们设置 16 位宽
  • Port A Depth(RAM 里可以存放多少个数据):端口 A 的深度,我们这里设置 512
  • Enable Port Type:Always Enable,保持一直使能,这样我们就不需要去控制它了

④、Port B Option 选项栏按照下图进行配置

Port B Width(数据宽度):端口 B 的宽度,这里我们设置 16 位宽

Enable Port Type:Always Enable(端口 B 的使能保持一直开启)

Primitives Output Register(基元输出寄存器):取消勾选,其功能是在输出数据加上寄存器,可以有效改善时序 ,但读出的数据会落后地址两个周期。 很多情况下,不使能这项功能,保持数据落后地址一个周期。

关于其它更多的设置可以参照 XILINX 的官方文档《Block Memory Generator v8.4 LogiCORE IP Product Guide》⑤、Other Options 保持默认配置即可

  • Load Init File 是我们可以初始化一些文件放在 RAM 里面,也就是说 FPGA 上电之后会把你预先存好的这些数据加载到 RAM 里面

⑥、点击 OK,再点击 Generate,生成 RAM IP

目录
相关文章
|
3月前
|
NoSQL Linux Android开发
内核实验(三):编写简单Linux内核模块,使用Qemu加载ko做测试
本文介绍了如何在QEMU中挂载虚拟分区、创建和编译简单的Linux内核模块,并在QEMU虚拟机中加载和测试这些内核模块,包括创建虚拟分区、编写内核模块代码、编译、部署以及在QEMU中的加载和测试过程。
174 0
内核实验(三):编写简单Linux内核模块,使用Qemu加载ko做测试
|
3月前
|
SQL 缓存 关系型数据库
MySQL配置简单优化与读写测试
MySQL配置简单优化与读写测试
|
5月前
|
算法 计算机视觉 异构计算
基于FPGA的图像一维FFT变换IFFT逆变换verilog实现,包含tb测试文件和MATLAB辅助验证
```markdown ## FPGA 仿真与 MATLAB 显示 - 图像处理的 FFT/IFFT FPGA 实现在 Vivado 2019.2 中仿真,结果通过 MATLAB 2022a 展示 - 核心代码片段:`Ddddddddddddddd` - 理论:FPGA 实现的一维 FFT/IFFT,加速数字信号处理,适用于高计算需求的图像应用,如压缩、滤波和识别 ```
|
5月前
|
XML Java 测试技术
《手把手教你》系列技巧篇(六十七)-java+ selenium自动化测试 - 读写excel文件 - 中篇(详细教程)
【6月更文挑战第8天】本文介绍了Java中操作Excel的工具,包括POI和JXL。POI支持处理Office 2003及以下的OLE2格式(.xls)和2007以上的OOXML格式(.xlsx)。而JXL只能处理2003版本的Excel文件。文章详细讲解了如何下载和使用JXL库,并给出了一个简单的Java代码示例,展示如何读取2003版Excel文件中的数据。在实际项目中,由于JXL对新版本Excel的支持限制,通常推荐使用POI。
66 5
|
5月前
|
Java 测试技术 Apache
《手把手教你》系列技巧篇(六十八)-java+ selenium自动化测试 - 读写excel文件 - 下篇(详细教程)
【6月更文挑战第9天】本文介绍了如何使用Java处理Excel文件中的不同数据类型,包括日期、数字、布尔值和标签(常规字符串)。文章提供了两个示例,分别使用JXL库和Apache POI库来读取Excel文件。
47 1
|
5月前
|
算法 计算机视觉 异构计算
基于FPGA的图像直方图均衡化处理verilog实现,包含tb测试文件和MATLAB辅助验证
摘要: 在FPGA上实现了图像直方图均衡化算法,通过MATLAB2022a与Vivado2019.2进行仿真和验证。核心程序涉及灰度直方图计算、累积分布及映射变换。算法旨在提升图像全局对比度,尤其适合低对比度图像。FPGA利用可编程增益器和查表技术加速硬件处理,实现像素灰度的均匀重分布,提升视觉效果。![image preview](https://ucc.alicdn.com/pic/developer-ecology/3tnl7rfrqv6tw_a075525027db4afbb9c0529921fd0152.png)
|
5月前
|
Java 测试技术 Apache
《手把手教你》系列技巧篇(六十六)-java+ selenium自动化测试 - 读写excel文件 - 上篇(详细教程)
【6月更文挑战第7天】本文介绍了在Java自动化测试中如何操作Excel数据。文章提到了当测试数据存储在Excel文件时,可以使用Apache的POI库来读写Excel。POI提供了对OLE2(.xls)和OOXML(.xlsx)格式的支持,比JXL库功能更全面。文章还详细讲解了如何下载和添加POI库到项目中,以及准备测试用的Excel文件。最后,给出了一个简单的Java代码示例,演示如何读取Excel文件的内容。
48 1
|
4月前
|
异构计算
FPGA进阶(3):SDRAM读写控制器的设计与验证(二)
FPGA进阶(3):SDRAM读写控制器的设计与验证(二)
33 0
|
4月前
|
异构计算 内存技术
FPGA进阶(3):SDRAM读写控制器的设计与验证(一)
FPGA进阶(3):SDRAM读写控制器的设计与验证
94 0
|
6月前
|
算法 计算机视觉 异构计算
基于肤色模型的人脸识别FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于肤色检测算法的摘要:使用MATLAB 2022a和Vivado 2019.2进行测试和仿真,涉及图像预处理、RGB到YCbCr转换、肤色模型(基于阈值或概率)以及人脸检测。核心程序展示了如何读取图像数据并输入到FPGA处理,通过`tops`模块进行中值滤波、颜色空间转换及人脸检测,最终结果输出到"face.txt"。

热门文章

最新文章