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

目录
相关文章
|
15天前
|
机器学习/深度学习 算法 异构计算
m基于FPGA的多通道FIR滤波器verilog实现,包含testbench测试文件
本文介绍了使用VIVADO 2019.2仿真的多通道FIR滤波器设计。展示了系统RTL结构图,并简述了FIR滤波器的基本理论,包括单通道和多通道的概念、常见结构及设计方法,如窗函数法、频率采样法、优化算法和机器学习方法。此外,还提供了Verilog核心程序代码,用于实现4通道滤波器模块,包含时钟、复位信号及输入输出接口的定义。
28 7
|
1月前
|
芯片 异构计算
【FPGA】高云FPGA之数字钟实验->HC595驱动数码管(一)
【FPGA】高云FPGA之数字钟实验->HC595驱动数码管
|
1月前
|
芯片 异构计算
【FPGA】高云FPGA之数字钟实验->HC595驱动数码管(三)
【FPGA】高云FPGA之数字钟实验->HC595驱动数码管
|
2月前
|
传感器 算法 计算机视觉
基于肤色模型和中值滤波的手部检测算法FPGA实现,包括tb测试文件和MATLAB辅助验证
该内容是关于一个基于肤色模型和中值滤波的手部检测算法的描述,包括算法的运行效果图和所使用的软件版本(matlab2022a, vivado2019.2)。算法分为肤色分割和中值滤波两步,其中肤色模型在YCbCr色彩空间定义,中值滤波用于去除噪声。提供了一段核心程序代码,用于处理图像数据并在FPGA上实现。最终,检测结果输出到"hand.txt"文件。
|
2月前
|
算法 异构计算
m基于FPGA的电子钟verilog实现,可设置闹钟,包含testbench测试文件
该文介绍了基于FPGA的电子钟设计,利用Vivado2019.2平台进行开发并展示测试结果。电子钟设计采用Verilog硬件描述语言,核心包括振荡器、分频器和计数器。时间显示为2个十进制格式,闹钟功能通过存储器和比较器实现,当当前时间等于设定时间时触发。文中给出了Verilog核心程序示例,展示了时钟信号、设置信号及输出的交互。
34 2
|
1月前
|
异构计算
FPGA片内ROM测试实验(二)
FPGA片内ROM测试实验
19 1
|
4天前
|
算法 异构计算
基于直方图的图像曝光量分析FPGA实现,包含tb测试文件和MATLAB辅助验证
该内容包括了算法的运行效果展示、软件版本信息、理论概述和核心程序代码。在正常图像中,`checkb`位于`f192b`和`f250b`之间,而多度曝光图像中`checkb`超出此范围,判断为曝光过度。使用的软件为Vivado 2019.2和MATLAB 2022a。理论依据未详细给出,但提及主要方法。提供的Verilog代码段用于处理图像数据,包括读取文件、时钟控制及图像histogram计算等,其中模块`im_hist`似乎是关键部分。
|
7天前
|
算法 TensorFlow 算法框架/工具
基于直方图的图像阈值计算和分割算法FPGA实现,包含tb测试文件和MATLAB辅助验证
这是一个关于图像处理的算法实现摘要,主要包括四部分:展示了四张算法运行的效果图;提到了使用的软件版本为VIVADO 2019.2和matlab 2022a;介绍了算法理论,即基于直方图的图像阈值分割,通过灰度直方图分布选取阈值来区分图像区域;并提供了部分Verilog代码,该代码读取图像数据,进行处理,并输出结果到"result.txt"以供MATLAB显示图像分割效果。
|
12天前
|
算法 计算机视觉 异构计算
基于FPGA的图像累积直方图verilog实现,包含tb测试文件和MATLAB辅助验证
该内容展示了FPGA实现图像累积直方图的算法。使用Vivado2019.2和matlab2022a,通过FPGA的并行处理能力优化图像处理。算法基于像素值累加分布,计算图像中像素值小于等于特定值的像素个数。核心代码为`test_image`模块,读取二进制图像文件并传递给`im_hist`单元,生成直方图和累积直方图。
|
21天前
|
算法 计算机视觉 异构计算
基于直方图相似性的图像分类算法FPGA实现,包括tb测试文件和MATLAB辅助验证
该内容包含了一段关于图像处理算法的摘要,主要包括: 1. 展示了MATLAB和FPGA的测试结果图像,显示了图像读取完成的标志和相似性指标,其中图1与图2有较强相似性,图1与图3相似性较弱。 2. 算法使用的是vivado 2019.2和matlab 2022A版本。 3. 算法原理涉及图像直方图统计和直方图相似性度量,通过计算直方图的差异来衡量图像相似度,FPGA实现包括图像采集、直方图计算、比较和分类决策步骤。 4. 提供了一个部分核心Verilog程序,用于读取图像数据并在FPGA上进行直方图相似性计算。