基于双端口RAM的乒乓操作测试

文章目录

  • 前言
  • 一、乒乓操作简介
  • 二、双端口RAM配置
  • 三、RAM控制模块设计
  • 四、乒乓操作验证


前言

  本文将介绍基于双端口RAM的乒乓操作测试,并探索如何在AWC_C4MB开发板上实现这一测试。双端口RAM作为一种性能出色且功能强大的存储器设计,为我们提供了并发访问和数据交互的重要工具。AWC_C4MB开发板作为一款先进的硬件平台,拥有强大的处理能力和丰富的外设资源,通过在该开发板上进行乒乓操作测试,可以更好地理解并发读写操作对系统性能的影响,并找出性能瓶颈和优化策略。开发板实物图如下:

在这里插入图片描述
  在本次测试中,我们将详细介绍如何调用AWC_C4MB开发板的双端口RAM IP核,实现并发的读写操作,通过50MHZ时钟分别向两个不同的RAM里面写入100个数据,然后通过25MHZ时钟连续无间断将数据读出,了解其如何支持高速数据交换和并行处理。

一、乒乓操作简介

  乒乓操作是一种特殊的内存访问模式,通常用于并发读写操作。它在计算机系统中扮演着重要角色,尤其在多处理器系统、实时应用和高性能计算领域。乒乓操作的基本思想是同时进行并发的读和写操作,实现快速的数据交换和共享。它的名称源自于乒乓球比赛中球的来回传递,类似地,在乒乓操作中,数据在不同的访问者之间来回传递和交换。
  以两个缓存器RAM1和RAM2进行乒乓操作为例,初始时刻数据写入端口将数据写入进RAM1内,不进行其它操作,如下图所示:

在这里插入图片描述
  RAM1内数据写入完成后,数据读出端口就可以开始读取出RAM1内数据了,同时数据写入端口继续向RAM2内写入数据,如下图所示:

在这里插入图片描述
  当RAM1内的数据读出完成,RAM2内的数据写入完成,此刻对两个存储器的读写操作进行交换,数据写入端口继续向RAM1内写入数据,数据读出端口开始读出RAM2内的数据,如下图所示:

在这里插入图片描述
  因此,在乒乓操作中,涉及到多个访问者或处理器同时访问内存。通常情况下,一个访问者进行读操作,而另一个访问者同时进行写操作。这种并发的读写操作可以提高内存访问效率,减少等待时间,提高整个系统的性能。

二、双端口RAM配置

  双端口RAM(Dual-Port RAM)是一种具有两个独立数据端口的随机存取存储器(RAM),它可以同时支持两个不同的读写操作。每个端口都可以独立地访问内存单元,无需等待其他端口的操作完成。这使得双端口RAM能够实现高效的并发读写操作,广泛应用于需要同时进行多个数据访问的系统中。双端口RAM示意图如下:

在这里插入图片描述
  在Quartus里面配置双端口RAM IP核,①在IP核目录下输入RAM,②点击RAM:2-PORT,③为双端口RAM IP核指定一个存放路径并命名,本工程给该IP核命名为ram_gen。操作步骤如下图所示:

在这里插入图片描述
  针对弹出的界面:
  ①是选择RAM的端口类型,可以选择单个读端口和单个写端口,也可以选择两个读端口和两个写端口,在本工程中,只需要一个写端口和一个读端口对数据进行写入和读出即可,因此选择第一个选项;
  ②是设定用什么来定义存储器的大小,可以选择按字节定义,也可以选择按比特数定义,这里设定按照字节定义;
  按照下图配置,配置完成后点击Next:

在这里插入图片描述
  针对弹出的界面:
  ①是设置输入的信号深度,本工程写入到RAM内的数据是100个,数据位宽为8,因此选择128即可;
  ②是设置输入输出数据位宽是否相同,这里要设置不相同,因为写入数据时钟是50MHZ,写入的数据位宽设置为8,读时钟为25MHZ,所以读出的数据位宽要为16,才能满足处理速度与处理面积相等的原则,实现数据的无缝传输与处理;
  ③是存储单元类型的选择,这里保持默认设置即可。
  按照下图配置,配置完成后点击Next:

在这里插入图片描述
  针对弹出的界面:
  ①是时钟的设置,可以设置读写端口时钟相同,也可以设置读写端口时钟不相同,也可以设置写入数据时钟和读出数据时钟不相同,这里设置写入和读出数据时钟不相同;
  ②是创建读数据使能信号,这里保持勾选;
  ③是创建端口字节使能信号,这里选择不勾选;
  按照下图配置,配置完成后点击Next:

在这里插入图片描述
  针对弹出的界面:
  ①是设置是否选择对读出的数据进行寄存,如果选择寄存,则在读使能信号有效时,数据会延迟一个时钟周期才输出,反之则在读使能信号有效时,数据马上输出,这里选择不勾选;
  ②是创建时钟使能信号,勾选此选项后,只有当时钟使能信号有效时,时钟才能正常工作,这里选择不勾选;
  ③是创建清零信号,该信号有效时,RAM内的数据清零,这里选择不勾选。
  按照下图配置,配置完成后点击Next:

在这里插入图片描述
  针对弹出的界面:
  该界面是设置是否初始化RAM,即向RAM内初始时存入数据,这里设置不提前存入。按照下图配置,完成后点击一直点击Next:

在这里插入图片描述
  跳转到下图时,选择生成例化模板,配置完成后点击Finish。
在这里插入图片描述

三、RAM控制模块设计

  首先设计一个数据生成模块,在50MHZ工作时钟下,复位信号无效时,每个时钟周期生成一个待写入的数据,并产生数据写入使能信号。RAM控制模块则是对写入到两个FIFO里面的信号进行定义,根据设计需要绘制的信号波形图如下图所示:

在这里插入图片描述
  对照上述信号波形图编写代码,即可实现基于双端口RAM的乒乓操作。

四、乒乓操作验证

在这里插入图片描述
  如图,读出的数据为rd_data,根据波形图可知已经实现数据无缓冲读出,基于双端口RAM的乒乓操作测试成功。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何与 Boot Barn 建立 EDI 连接?

Boot Barn 专注于提供各种高品质的靴子、鞋类和西部服饰。其经营范围广泛,为广大顾客提供最新潮流和经典款式的选择。 Boot Barn 的使命是成为顾客在西部风格时尚领域的首选购物地点。多年来,Boot Barn 凭借卓越的服务和优质的产品赢得了众多客户的信赖和…

OpenSource - 一站式API服务

文章目录 概述功能模块运行启动Docker启动功能预览首页接口开发接口属性请求参数在线预览应用创建接口列表数据库类型限流熔断接口申请申请审批 概述 Crabc是低代码开发平台,企业级API发布管理系统,采用SpringBoot、JWT、Mybatis等框架和SPI插件机制实现…

网络安全进阶学习第十一课——MySQL手工注入(2)

文章目录 一、UA注入1、原理2、靶场演示:1)一旦页面出现如下现状,就可以使用UA注入2)BP抓包3)修改User-Agent 二、referer注入1、原理2、靶场演示:1)使用BP抓包2)修改Referer 三、DN…

ImagXpress .NET Standard Crack

ImagXpress .NET Standard Crack ImagXpress SDK可让您快速将图像功能添加到Windows应用程序中。您可以快速开发需要复杂成像任务的应用程序,用于文档成像、照片处理或医疗应用程序,同时专注于您的程序的独特需求。ImagXpress是开发涉及图像的专业应用程…

解决word打字卡顿问题的方法

❤ 2023.8.5 ❤ 最近整理论文,本来我是wps死忠粉,奈何wps不支持latex公式。。。 无奈用起了word,但是谁想字数稍微多了一点,word就卡得欲仙欲死,打个字过去2s才显示出来,删除的时候都不知道自己删了几个字…

物理量时空属性内禀律

一、物理量时空属性内禀律: 1、物理量具有内在的时空属性,对所有表达式具有时空强制性。 2、物理量时空属性的计算等级较表达式低1个数学等级。 二、物理量时空属性的表示: 空间直线L的时空属性表示为: d(L)(1s,0t) &#xff…

什么是OCR?OCR技术详解

光学字符识别(Optical Character Recognition)简称为“OCR”。ORC是指对包含文本资料的图像文件进行分析识别处理,获取文字及版面信息的技术。 一般包括以下几个过程: 1.图像输入 针对不同格式的图像,有着不同的存储格式和压缩方式。目前&…

eeglab(自用)

目录 1.加载、显示数据 2.绘制脑电头皮图 3.绘制通道光谱图 4.预处理工具 5.ICA去除伪迹 5. 提取数据epoch 1.加载、显示数据 观察事件值(Event values):该数据集中包含2400个事件,每个事件指定了EEG.event结构的字段Type(类型)、position(位置)和…

【LeetCode】27. 移除元素

题目大概意思是剔除nums数组中出现的所有val值。可以用快慢双指针法来做。 快的指针在前面遍历找值不为val的元素的下标,慢的负责接收值不为val的元素,并及时更新数组。 class Solution {public int removeElement(int[] nums, int val) {//快慢指针法in…

我的创作纪念日——256天

机缘 最开始我写博客没有什么特别的原因,主要是因为以下几点: 练习自己的语言组织能力 记录自己学习生活中学到的知识 为和我同一个学习阶段的朋友提供帮助 事实上最开始我根本不指望我的博客有多少人看,主要是想找一个好的保存 Markdown 笔…

Windows环境下VSCode安装PlatformIO Cero报错ERROR: HTTP error 403 while getting

安装PlatformIO插件成功,初始化失败 错误信息判断问题尝试访问https://pypi.tuna.tsinghua.edu.cn/simple/platformio/成功点击文件后报错如下: 解决问题- 换源 ( Windows下有两个地方需要更改)cmd命令行Pip文件 总结:…

架构训练营学习笔记:5-1 计算架构模式之多级缓存架构

序 本节主要是计算架构。 多级缓存架构 缓存与缓冲:通常场景是读缓存,写缓冲。 缓存技术的本质:空间换时间,因此缓存架构属于高性能计算 架构。 缓存设计框架 主要考虑存什么?存多久?存哪里?如…