哇塞,实测780MB/s!基于RK3568J与FPGA的PCIe通信案例详解
ARM + FPGA架构有何种优势
近年来,随着中国新基建、中国制造2025的持续推进,单ARM处理器越来越难满足工业现场的功能要求,特别是能源电力、工业控制、智慧医疗等行业通常需要ARM + FPGA架构的处理器平台来实现特定的功能,例如多路/高速AD采集、多路网口、多路串口、多路/高速并行DI/DO、高速数据并行处理等。
到底ARM + FPGA架构有什么优势?
ARM:接口资源丰富、功耗低,擅长多媒体显示、逻辑控制等。
FPGA:擅长多通道或高速AD采集、接口拓展、高速信号传输、高速数据并行处理等。
因此,ARM + FPGA架构能带来性能、功耗等综合比较优势,ARM与FPGA既可各司其职,各自发挥原本架构的独特优势,亦可相互协作处理更复杂的问题。
为何需要ARM + FPGA高速通信
在工业应用场景,一般FPGA作为数据采集前端,常常有大量的数据需要传输给ARM进行处理。如能源电力,会用FPGA作为高速AD或多通道AD采集,然后将产生的大量数据传输给ARM做AD数据存储和处理;又如智慧医疗,FPGA需将采集和处理的高清视频数据传输至ARM,让ARM对高速视频数据进行视频显示、编码或存储。因此,“ARM + FPGA高速通信”是“ARM + FPGA架构”项目成功的关键因素。
创龙科技为满足能源电力、智慧医疗、轨道交通等行业日益增长的国产化需求,率先推出国产化率100%的RK3568J工业核心板,并提供基于RK3568J与FPGA的高速通信案例。
RK3568J + FPGA高速通信案例
下文将为大家介绍基于瑞芯微RK3568J(硬件平台:创龙科技TL3568-EVM评估板)与Xilinx Artix-7(硬件平台:创龙科技TLA7-EVM评估板)的PCIe高速通信案例。
ARM端基于PCIe总线对FPGA BRAM进行读写测试。应用程序通过ioctl函数发送命令开启DMA传输数据后,等待驱动上报input事件;当应用层接收到input事件,说明DMA传输数据完成。
硬件搭建方面,使用M.2 Key M转PCI-E 4X延长线将TL3568-EVM评估板的M.2 PCIe NVMe接口与创龙科技TLA7-EVM评估板的PCIe接口连接,并将TLA7-EVM评估板通过TL-DLC10下载器连接至PC机,硬件连接如下图所示。

按照创龙科技提供的案例用户手册进行操作,我们得出ARM与FPGA基于PCIe通信的实测数据,如下图所示。实测写操作的DMA传输速率为780.77MB/s,读操作的DMA传输速率为563.06MB/s。










哇塞,实测780MB/s!基于RK3568J与FPGA的PCIe通信案例详解的更多相关文章
- 基于python中staticmethod和classmethod的区别(详解)
例子 ? 1 2 3 4 5 6 7 8 9 10 11 12 13 class A(object): def foo(self,x): print "executing foo ...
- 基于Python对象引用、可变性和垃圾回收详解
基于Python对象引用.可变性和垃圾回收详解 下面小编就为大家带来一篇基于Python对象引用.可变性和垃圾回收详解.小编觉得挺不错的,现在就分享给大家,也给大家做个参考. 变量不是盒子 在示例所示 ...
- 基于Docker搭建Maven私服Nexus,Nexus详解
备注:首先在linux环境安装Java环境和Docker,私服需要的服务器性能和硬盘存储要高一点,内存不足可能到时启动失败,这里以4核8GLinux服务器做演示 一:基于Docker安装nexus3 ...
- 基于PBOC电子钱包的圈存过程详解
基于pboc的电子钱包的圈存过程,供智能卡行业的开发人员参考 一. 圈存 首先终端和卡片有一个共同的密钥叫做圈存密钥:LoadKey (Load即圈存的意思,unLoad,是圈提的意思) 假设Lo ...
- 基于pytorch实现HighWay Networks之Highway Networks详解
(一)简述---承接上文---基于pytorch实现HighWay Networks之Train Deep Networks 上文已经介绍过Highway Netwotrks提出的目的就是解决深层神经 ...
- 基于 Web 的远程 Terminal 模拟器安装使用详解
http://lzw.me/a/shellinabox.html 一.Shellinabox 简介 Shellinabox 是一个基于 web 的终端模拟器,采用 C 语言编写,使用 Ajax 与后端 ...
- 基于PHP+Ajax实现表单验证的详解
一,利用键盘响应,在不刷新本页面的情况下验证表单输入是否合法 用户通过onkeydown和onkeyup事件来触发响应事件.使用方法和onclick事件类似.onkeydown表示当键盘上的键被按下时 ...
- 基于C语言EOF与getchar()的使用详解
转自:http://www.jb51.net/article/36848.htm 大师级经典的著作,要字斟句酌的去读,去理解.以前在看K&R的The C Programming Langu ...
- 资深实践篇 | 基于Kubernetes 1.61的Kubernetes Scheduler 调度详解
欢迎大家前往腾讯云技术社区,获取更多腾讯海量技术实践干货哦~ 作者:腾讯云容器服务团队 源码为 k8s v1.6.1 版本,github 上对应的 commit id 为 b0b7a323cc5a4a ...
- 基于 CentOS Mysql 安装与主从同步配置详解
CentOS Mysql 安装 Mysql (Master/Slave) 主从同步 1.为什么要使用主从同步 1.如果主服务器出现问题,可以快速切换到从服务器提供的服务 2.可以在从服务器上执行查询操 ...
随机推荐
- Ryght 在 Hugging Face 专家助力下赋能医疗保健和生命科学之旅
本文是 Ryght 团队的客座博文. Ryght 是何方神圣? Ryght 的使命是构建一个专为医疗保健和生命科学领域量身定制的企业级生成式人工智能平台.最近,公司正式公开了 Ryght 预览版 平台 ...
- 02 python爬虫-bs4
目录 步骤 代码 结果 new.csv 图片 步骤 爬取主页面中的文章详情的url和图片地址 下载图片 并请求加文章详情中的页面内容 爬取文章详情中的标题.作者.发布时间 代码 import requ ...
- 【题解】[NOIP2001 普及组] 装箱问题
[NOIP2001 普及组] 装箱问题 这是一道动态规划题. 那就先定义状态吧(这里用的是一维滚动数组). \(f[j]\) 代表当我有 \(j\) 这么多容量可以用时,能装的最大重量是多少. 好,状 ...
- text/event-stream协议
客户端接收 text/event-stream html <!DOCTYPE html> <html> <head> <meta charset=" ...
- Laravel 模块化开发模块 – Caffienate
Laravel多模块配置 1. 安装对应版本"caffeinated/modules" composer require caffeinated/modules 相应版本号 L ...
- Swoole 源码分析之 WebSocket 模块
首发原文链接:Swoole 源码分析之 WebSocket 模块 大家好,我是码农先森. Swoole 源码分析之 WebSocket 模块 引言 WebSocket 是一种在单个 TCP 连接上进行 ...
- Javascript---时间加秒数得到新的时间
<script> // 当前时间:curTime var curTime = new Date("2023-12-10 17:32:46"); // 当前时间加上XXX ...
- Django——自定义前端上传文件
from django.db import models class Mytb(models.Model): file = models.FileField(upload_to='uploads/') ...
- 『手撕Vue-CLI』下载指定模板
开篇 经上篇文章的介绍,实现了获取下载目录地址,接下来实现下载指定模板的功能. 背景 通过很多章节过后,已经可以拿到模板名称,模板版本号,下载目录地址,这些信息都是为了下载指定模板做准备的. 实现 如 ...
- 8个实用的Java Streams API
分享8个开箱即用的API,方便日常处理集合. 1. 快速过滤空值:Stream.ofNullable 该方法是在 Java 9 中引入的,有助于过滤集合中的所有空值,从而可能使我们避免空指针异常. 在 ...