pcie数据传输

一 数据传输通道总体设计

  在上传数据时首先将 FPGA 中数据缓存到 DDR3 存储器,然后上位机请求后把数据从DDR3 存储器中取出并通过 PCIE 总线将数据传输到上位机;在下传数据时上位机中的数据首先通过 PCIE 总线下传至 FPGA,FPGA 读取这些数据并存储到DDR3 存储器中。 

  FPGA 逻辑设计主要控制 PCIE 总线的高速数据传输通道过程中的数据传输,数据传输通道在传输过程中对数据量大、带宽高和实时性高的数据,使用 DMA 方式,而对于数据量小且不需要连续传输时,将使用 PIO 方式。

二 FPGA逻辑设计

  FPGA 逻辑设计由 PCIE 接口逻辑和 PCIE DMA 控制逻辑两部分组成, DDR3 存储器模块,DMA 引擎模块和通道仲裁器模块组成 PCIE DMA 控制逻辑;PCIE IP 核模块、寄存器堆模块、发送引擎模块、接收引擎模块和中断引擎模块组成 PCIE 接口逻辑。

 

(1)PCIE接口逻辑设计

  PCIE IP 核调用 Xilinx FPGA 芯片内部的 PCIE 硬核,根寄存器堆模块包括 DMA 数据传输时各通道的状态信息,还有与之相关的寄存器,访问这些寄存器需要通过 PIO 方式。

  PCIE IP 核是 7 系列 FPGA 嵌入式 PCIE 硬核,封装了 PCIE 协议的事务层、数据链路层和物理层的一部分。Number of Lanes 设置了 PCIE 支持的最大通道数,;Link Speed 为 PCIE 最大链路传输速率,本文选择 5.0GT/s的传输速率 

  发送引擎模块和接收引擎模块由 FPGA 编程进行设计,设计过程中产生 TLP包的逻辑和解析 TLP 包的逻辑的读 TLP 请求和写 TLP 请求、读 TLP 解析和写 TLP解析、CPLD 解析,并负责处理 FPGA 逻辑设计与 PCIE IP 核接口之间的数据,其中的数据包括 FPGA 逻辑设计产生的 TLP 以及计算机产生的 TLP。
  中断引擎模块根据 FPGA 逻辑设计的发送引擎和接收引擎状态判断各通道中DMA 传输是否完成,完成后向计算机发起 MSI 中断请求。

(2)PCIE DMA控制逻辑设计

  DDR3 存储器为 PCIE 进行数据传输时方便使用各个通道中的数据从而使用了DDR3 读写接口,FPGA 逻辑设计中的各个模块通过 DDR3 存储器进行访问。DDR3存储器内部根据本设计通道的需求设置了 8 个通道缓存区,从而支持多通道同时访问 DDR3 存储器,通道中的数据由接收引擎通过 PCIE 以 DMA 方式写入 DDR3存储器,或者通过 PCIE 以 DMA 方式从 DDR3 存储器中读出来,再通过通道将数据发送出去。为解决多通道同时访问 DDR3 产生的冲突问题,设计了基于一
种通道轮循的 DDR3 存储器。PCIE 总线作为 FPGA 和 PC 间的传输介质,连接 FPGA 和 PC,基于 PCIE2.0总线在单通道时的传输速率最高可达 5Gbps,当与上位机通信时选用PCIE 接口的通道数为 8,传输速率为40Gbps。

  DDR3 存储器由 FIFO 接口、通道仲裁和 MIG IP 核三部分组成,当多个通道访问时,必须要实时回应,所以需对通道的读、写操作进行仲裁;MIG IP 核由 Xilinx 7 系列 FPGA 自带的 IP 硬核,可
对 DDR3 进行读写访问。通过对 DDR3 存储器的设计可使 DDR3 更加适合多通道高速数据传输系统,便于 DDR3 作为整个高速数据传输时的缓存,达到了大容量缓存的效果。

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

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

相关文章

掌握这4种翻译方式,阅读外语文件不再困难

如果你作为学生需要学习或者研究外国文件,或者出国旅游前也需要了解一些外国文件。如果掌握文件翻译工具,那这些问题就不是问题啦。这里我给你介绍几个效果不错的文件翻译工具吧。 1.福.昕文献翻译网站 这个工具只要在线就能使用,而且在线丝…

SpringBoot 最大连接数及最大并发数是多少

SpringBoot 最大连接数及最大并发数 Spring Boot 是一个基于 Spring 框架的快速开发框架,它本身并不直接管理数据库连接或网络连接的最大连接数和最大并发数。这些参数通常由底层的基础设施和组件来控制,例如: 数据库连接池:Spri…

windows USB 设备驱动开发-USB 客户端驱动程序验证程序

USB 客户端驱动程序验证程序是 USB 3.0 驱动程序堆栈的一项功能,包含在 Windows 8 中。 启用验证程序后,USB 驱动程序堆栈会失败或修改客户端驱动程序执行的某些操作。 这些失败模拟的错误条件,否则可能难以找到,并可能导致以后产…

【Spring Boot】网页五子棋项目中遇到的困难及解决方法

目录 一、HikariPool-1 - Starting异常二、Invalid bound statement (not found)异常三、The driver is automatically registered via the SPI and manual loading of the driver class is generally unnecessary异常四、The server time zone value时区报错异常五、补充知识点…

Python入门基础教程(非常详细)

现在找工作真的越来越难了!今年更是难上加难 前几天在网上刷到这样一条热搜: #23岁找工作因年龄大被HR拒绝了# 是这个世界疯了还是我疯了? 合着只想要有20年以上工作经验的应届毕业生是吧 这好像就是现在的就业市场现状:“35岁…

【iOS】——探究isKindOfClass和isMemberOfClass底层实现

isKindOfClass 判断该对象是否为传入的类或其子类的实例 // 类方法实现,用于检查一个类是否属于另一个类或其父类链上的任何类。(BOOL)isKindOfClass:(Class)cls {// 从当前类开始,tcls将沿着元类的继承链向上遍历。for (Class tcls self->ISA(); …

MQTT micro-ROS:构建高效的机器人应用

什么是 micro-ROS? 在之前的 MQTT & FreeRTOS:打造你的远程控制实时应用 中,我们介绍了如何在 FreeRTOS 中构建你的 MQTT 应用。 FreeRTOS 主要应用在对实时性要求较高的场景中,但这类 RTOS 专注于提供实时任务调度和同步机…

【SD】 Stable Diffusion(SD)原理详解与ComfyUI使用 2

Stable Diffusion(SD)原理详解与ComfyUI使用 Stable Diffusion(SD)原理详解与ComfyUI使用1. SD整体结构2. Clip(文本编码器)3. Unit(生成模型)4. VAE(变分自编码器&#…

关于对CSDN的谴责

关于对CSDN的谴责 如果不是心血来潮登了一次旧帐号我是万万不会想到,所有的文章都被设置成了仅VIP可见。 CSDN你的VIP有多不受人待见您不知道吗?为什么要把我用于你开通VIP刷绩效的工具? 这种东西不应该首先经过同意再开启吗?默认…

粘弹性和机械塑性等力学行为如何影响细胞行为?

组织和细胞外基质(ECM)是细胞生存和功能的关键组成部分,它们不仅提供细胞生长和迁移的结构支撑,还通过其力学特性影响着细胞的形态、功能和行为。组织和ECM并非简单的材料,它们展现出复杂且多样的力学行为,…

2024最新教程,在docker中安装kali,并配置ssh连接

docker的基本使用:搭建高效攻防靶场vulfocus与Docker仓库管理实战:从听说到入门 拉取kali官方镜像 docker pull kalilinux/kali-rolling 启动一个kali镜像,将容器中的22端口映射到主机100端口,方便ssh直接连接 docker run -it…

任务2:python+InternStudio 关卡

任务地址 https://github.com/InternLM/Tutorial/blob/camp3/docs/L0/Python/task.md 文档 https://github.com/InternLM/Tutorial/tree/camp3/docs/L0/Python 任务 Python实现wordcount import re import collectionstext """ Got this panda plush to…

【BUG】已解决:ModuleNotFoundError: No module named‘ pip‘

已解决:ModuleNotFoundError: No module named‘ pip‘ 目录 已解决:ModuleNotFoundError: No module named‘ pip‘ 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰…

爬虫(二)——爬虫的伪装

前言 本文是爬虫系列的第二篇文章,主要讲解关于爬虫的简单伪装,以及如何爬取B站的视频。建议先看完上一篇文章,再来看这一篇文章。要注意的是,本文介绍的方法只能爬取免费视频,会员视频是无法爬取的哦。 爬虫的伪装 …

LeetCode-day21-1186. 删除一次得到子数组最大和

LeetCode-day21-1186. 删除一次得到子数组最大和 题目描述示例示例1:示例2:示例3: 思路代码 题目描述 给你一个整数数组,返回它的某个 非空 子数组(连续元素)在执行一次可选的删除操作后,所能得…

Springcloud之gateway的使用详解

官网地址&#xff1a;https://docs.spring.io/spring-cloud-gateway/docs/4.0.4/reference/html/ 1.网关入门 helloword 网关不依赖start-web 导入的pom&#xff1a; <!--gateway--> <dependency><groupIdorg.springframework.cloud</groupId><arti…

JAVA零基础学习2(算术逻辑三元运算符、原码反码补码、标准的类如何描写)

JAVA零基础学习2&#xff08;算术逻辑三元运算符、原码反码补码、标准的类如何描写&#xff09; 算术运算符算术运算符自增和自减运算符算术运算符的优先级示例代码 逻辑运算符三元运算符示例代码示例1&#xff1a;简单的条件判断示例2&#xff1a;嵌套的三元运算符 原码反码补…

贪吃蛇超精讲(C语言)

前言 如果你还是个萌新小白&#xff0c;那么该项目的攻克过程一定会十分艰难。虽然作者已经将文章尽可能写的逻辑清晰&#xff0c;内容详细。但所谓“纸上得来终觉浅”&#xff0c;在讲到陌生结构和函数时&#xff0c;大家请一定自己动手去敲一遍代码&#xff0c;这很重要&…

一次Golang单体架构中的复杂长函数的重构实践和思考

在现代应用程序开发中&#xff0c;信息流&#xff08;Feed&#xff09;是许多平台核心功能的一部分。信息流往往会聚合大量的数据&#xff0c;构建这样一个信息流列表是一个复杂的任务。需要从多个微服务和数据库中获取大量数据&#xff0c;包括用户、频道、标签、等级、用户状…

【Langchain大语言模型开发教程】基于文档问答

&#x1f517; LangChain for LLM Application Development - DeepLearning.AI Embedding&#xff1a; https://huggingface.co/BAAI/bge-large-en-v1.5/tree/main 学习目标 1、Embedding and Vector Store 2、RetrievalQA 引包、加载环境变量 import osfrom dotenv import…