FPGA中的乒乓操作

  • 为什么不直接选用一个缓存更大的FIFO而选用乒乓操作
  • 为什么乒乓操作可以实现低速处理高速数据
  • 乒乓操作适用哪些场景

一、乒乓操作结构

首先先介绍一下乒乓操作的原理,其结构如下:

在这里插入图片描述

输入选择单元负责将数据送到数据缓冲模块,然后输出选择单元负责读取数据缓冲模块的数据,实现在向数据缓冲模块1写入数据的同时,读取数据缓冲模块2的数据;在向数据缓冲模块2写入数据的同时,读取数据缓冲模块1的数据,以此来让数据不简单的流入后续模块。

需要注意的点是,相邻两次存入数据缓冲模块的数量需要是一致的,这样才能够实现读写操作的对齐,即在一个缓冲模块刚写完的时候另一个缓冲模块刚好读空。

二、为什么不用缓存更大的FIFO而选用乒乓操作

选用乒乓操作而不选用缓存更大的FIFO,个人认为原因主要有以下几点:

  • 除真双口RAM外,其他FIFO不能同时读写,在某一时刻只能读或写,而真双口RAM在写入位宽大于54,深度大于512时资源是简单双口RAM的两倍,面积也会增大;详细可见下面文章:

    为何有时简单双口RAM是真双口RAM资源的一半-CSDN博客

  • 改变数据的输出顺序时,由于FIFO为先入先出,对于一个FIFO无法实现非顺序输出数据;然而可以通过两个FIFO来回交替,乒乓操作实现。

除此之外,个人觉得二者没有太大的区别。

总结来说,乒乓操作提供了一种通过两个或多个缓冲区交替工作来提高数据处理速率和吞吐量的方法,尤其适用于速率匹配和无缝数据流处理。而FIFO是一种更简单、更通用的缓冲技术,适用于广泛的数据存储和流控制需求。选择哪种技术取决于具体的应用场景和设计要求

三、乒乓操作如何实现低速处理高速数据

之前看到别的文章说,如果数据输入频率为10M,两个RAM的读取频率为5M,从整体上看是10M,个人认为这种说法是不正确的,这并不是低速处理高速数据的本质,因为在任何一个时刻只有一个RAM能被读。

之所以能够实现低速处理高速数据,其本质是因为在RAM的两侧读写位宽是不一样的,数据处理侧的RAM数据位宽是写入位宽的两倍,这样即使频率只有输入侧的一半依然能够以10M的数据速率处理。只要RAM两端的频率和位宽的乘积相等即可。

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

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

相关文章

面试题vue+uniapp(个人理解-面试口头答述)未编辑完整....

1.vue2和vue3的区别(vue3与vue2的区别(你不知道细节全在这)_vue2和vue3区别-CSDN博客)参考 Vue3 在组合式(Composition )API,中使用生命周期钩子时需要先引入,而 Vue2 在选项API&am…

使用迭代最近点 (ICP) 算法在 Open3D 中对齐点云

一、Open3D 简介及其功能 Open3D 是一个现代库,它提供了用于处理 3D 数据的各种工具。在其功能中,它提供了高效的数据结构和算法来处理点云、网格等,使其成为在计算机视觉、机器人和图形领域工作的研究人员和从业人员的不错选择。Open3D 的特…

2024 年最新安装MAC-vue教学包括常见错误

花了一上午时间终于将 vue 的工程文件安装好了,本教材是傻瓜式操作,按着教程一步一步操作最后就可以看到页面了。 安装Node 1.在线地址: https://nodejs.org/en 2、点击 Download Node.js下载即可,下载完成后,傻瓜式的…

primeflex Display盒模型显示相关样式实战案例

01 Display盒子模式相关样式 基础样式 ClassPropertieshiddendisplay: none;blockdisplay: block;inlinedisplay: inline;inline-blockdisplay: inline-block;flexdisplay: flex;inline-flexdisplay: inline-flex; 样式说明: hidden:隐藏&#xff0c…

c# 学习教程

打印语句 折叠代码 变量 整形 浮点型 特殊类型

林业调查具体是做些什么?

林业调查是对森林资源进行系统的信息收集和处理的过程。 林业调查涵盖了对林木、林地以及林区内生长的动植物及其环境条件的全面评估,旨在及时掌握森林资源的数量、质量和生长消亡的动态规律。这种调查不仅关注森林本身,还包括与之相关的自然环境和经济…

企业级win10电脑下同时存在Python3.11.7Python3.6.6,其中Python3.6.6是后装的【过程与踩坑复盘】

背景: 需要迁移原始服务器的上的Python3.6.6Flask项目到一个新服务器上, 新服务器上本身存在一个Python3.11.7, 所以这涉及到了一个电脑需要装多个Python版本的问题 过程: 1-确定新电脑版本【比如是32还是64位】 前面开发人员存留了两个…

算法练习第26天|46.全排列、47全排列II

46.全排列 46. 全排列 - 力扣(LeetCode)https://leetcode.cn/problems/permutations/description/ 题目描述: 给定一个不含重复数字的数组 nums ,返回其 所有可能的全排列 。你可以 按任意顺序 返回答案。 示例 1:…

STM32 | 超声波实战

​01、上节回顾 STM32 | HC-SR04 超声波测距模块 | DHT11数字温湿度传感器(第七天)STM32 | 数字温湿度传感器DHT11STM32 | HC-SR04 超声波测距模块STM32 | DHT11数字温湿度传感器实战02、超声波图示 03、超声波头文件 #ifndef __SR04_H#define __SR04_H​#include "stm…

在鸿蒙中身份校验的手势密码的实现

在harmony中它提供了默认的组件PatternLock(); 这个就能直接显示九宫格密码验证 并且他有两个主要的回调事件 .onDotConnect密码输入选中宫格圆点时触发该回调 .onPatternComplete:密码输入结束时触发该回调 //如代码实现 PatternLock().sideLength(32…

OceanBase 内存研究(OceanBase 3.2.4.5)

内存结构 从官网的结构图可以看出,一台observer可使用的总内存(memory_limit)包括 系统内存(system_memory) 和 租户内存(sys租户与普通租户) 系统内存 系统内存system_memory 属于 observer 的内部内存,允许其它租户共享使用该内存资源 (root10.0.0.…

vmware 正版免费下载

Broadcom 已经收购了 vmware 并且对普通用户提供免费服务. 那么我们怎么去获取这个玩意呢, 注册完之后打开就是这么个狗屎 , 根本不知道在哪里下载,注册的时候还不能用国内邮箱更是超级狗屎 转到 dashboard 搜索 workstation Pro你会搜索到这么一个奇怪的网址然后…

SSM与Mamba模型学习

transformer的缺陷 自注意力机制的计算范围只限于窗口内,不能直接处理窗口外的元素,不能照顾到整个序列。 由于计算复杂度随着窗口的长度呈几何平方式增长,所以不能一味地增加窗口长度来解决。 Transformer本质上是通过位置编码将序列数据空…

AI在线UI代码生成,不需要敲一行代码,聊聊天,上传图片,就能生成前端页面的开发神器

ioDraw的在线UI代码生成器是一款开发神器,它可以让您在无需编写一行代码的情况下创建前端页面。 主要优势: 1、极简操作:只需聊天或上传图片,即可生成响应式的Tailwind CSS代码。 2、节省时间:自动生成代码可以节省大…

微信小程序-页面配置

一、页面配置文件的作用 小程序中,每个页面都有自己的.json配置文件,用来对当前页面的窗口外观、页面效果等进行配置 二、页面配置和全局配置的关系 小程序中,app.json中的window节点,可以全局配置小程序中每个页面的窗口表现 …

FastDFS分布式文件系统——上传本地文件

目录 安装FastDFS FastDFS 使用Java客户端上传本地文件到FastDFS服务器上 pom.xml fastdfs_conf配置文件 FastDFS 测试 安装FastDFS 1、用FastDFS一步步搭建文件管理系统 - bojiangzhou - 博客园 (cnblogs.com)2、FastDFS文件上传功能封装 - 动力节点 (bjpowernode.com)…

Keras深度学习框架实战(2):估计模型训练所需的样本量

1、模型训练样本量评估概述 1.1 样本量评估的意义 预估模型需要的样本量对于机器学习项目的成功至关重要,以下是几个主要原因: 防止过拟合与欠拟合: 过拟合:当模型在训练数据上表现极好,但在未见过的测试数据上表现糟…

5步3分钟0基础搭建,轻松搭建《雾锁王国》私人服务器

继《幻兽帕鲁》游戏爆火之后,与它同类型的《雾锁王国》也是强力刷屏,不分伯仲,在 Steam 上的评分一直稳定在“特别好评”,让小伙伴们很“上头”。就在两者游戏玩家反响爆火的同时,官方服务器人数爆满,卡顿频…

C语言Linux进度条模拟

在Linux字符界面中,使用yum、apt下载东西时会有一个图形化的进度条,可以告诉我们任务的执行进度。 我们也可以通过C语言实现一个类似的进度条,并且可以做得更加美观。以后我们自己写的程序需要显示进度时就可以去调用我们自己实现的进度条。 …