【紫光同创logos2 FPGA PCIe软件栈设计】

基于RK3568与国产FPGA的多通道AD实时采集显示方案全解析 数据采集是工业自动化、电力监控等领域的核心技术,其核心在于将模拟信号精确、实时地转换为数字信号。其原理通常涉及模数转换器(ADC)的采样、量化和编码过程。这项技术的价值在于为上层控制系统提供了感知物理世界的“眼睛”,是实现设备状态监测、过程控制和故障诊断的基础。在应用场景上,从电机控制柜的电压电流监测到环境监测站的多传感器信号采集,都离不开高性能的数据采集系统。本文聚焦于一种高性价比、自主可控的解决方案,该方案巧妙结合了瑞芯微RK3568处理器的强大通用计算能力和国产FPGA在高速并行处理与精确时序控制方面 阅读详情


当前国际形势,美丽国对我们的制裁进一步加剧,高端FPGA“一票难求”,国产FPGA起步较晚,且生态落后,同创logos2芯片虽然硬件资源可达100K,但相关的软件栈及IP发展相对滞后,如高速PCIe接口仅有硬核IP。
基于此背景,自研基于同创logos2的标准pcie开发板,实现gen2*4 pcie接口并适配到国产服务器(海光、龙芯、飞腾);开发app对板卡的基本性能进行测试。

基于同创logos2系列FPGA自研PCIe软件栈

自研PCIe软件栈已适配RHEL,centos,ubuntu(包括中标麒麟、统信UOS、银河麒麟)等,采用标准linux设备模型及分层设计的思想,自下而上可分为驱动层,api层,app层。

  • 驱动层
    驱动层实现标准pcie字符设备注册、提供用户层交互接口;
  • API层
    api层为用户提供友好的调度接口;
  • APP层
    app层实现几个应用demo,进行板卡功能、性能测试。

整体框架如下图所示
logos2 FPGA软件栈架构图

驱动层

驱动层主要实现以下功能:设备初始化,设备operation,设备卸载。设备初始化包括pcie驱动注册,msi中断注册等等;设备operation包括bar读写、dma操作;设备卸载包括pcie设备注销、内核资源释放等。

设备初始化

列举设备初始化过程中使用到的几个接口:

  • pci_register_driver:注册pci设备驱动
  • alloc_chrdev_region:动态申请设备号
  • cdev_init(&device.cdev,&device_fops):初始化字符设备
  • cdev_add:添加字符设备
  • class_create:创建设备类
  • device_create:生成设备节点

pcie驱动注册probe中主要完成以下几点工作:

  • pci_enable_device:使能pcie设备
  • pci_set_master:pcie获取设备总线
  • pci_resource_start系列接口:bar地址映射系列接口
  • pci_alloc_consistent:申请dma一致性内存
  • pci_enable_msi:使能msi
  • request_irq:msi中断注册

Device operation

提供丰富的bar、dma操作接口

Bar相关操作接口:

  • char_open:打开设备操作
  • char_release:释放设备操作
  • char_read:bar读取操作
  • char_write:bar写入操作
  • char_llseek:移位操作
  • char_mmap:重映射操作

DMA相关接口:

  • dma_init:dma初始化操作
  • dma_start:启动dma操作
  • dma_set_desc:设置dma描述符
  • dma_queue:初始化dma队列
  • dma_send:dma数据交互(收发)

【紫光同创PCIE教程】——DMA读写/PIO内存读写TLP解析 对于Mwr的Header,对着协议格式分析,很容易知道第一个Header地址(32bit)是df20_2000,携带数据长度Length(以DW为单位)为1,报文类型[Fmt,Type]=0x40(表明为3DW Mwr),字节使能[last DW BE,first DW BE]=0x0f,其他信息对座入号就行了,特别注意的是TLP是大端格式,[Fmt,Type]=axis_master_tdata[31:24],实际代表的是0Byte的位置,其他DW数据亦如此。主机的3次MWr TLP是什么呢? 阅读详情

相关推荐

【紫光同创PCIE教程】——使用WinDriver驱动紫光PCIE

紫光的logos系列的PGL50H/PGL100H、logos-2全系列都集成gen2×4的PCIE硬核,且官方也提供了例程。紫光的PCIE用起来还是挺方便的,生成IP的同时生成了对应的PCIE example例程。紫光的PCIE IP虽然没有像xilinx那样可以直接使用Block Design设计,但是仔细读一遍官方例程的DMA模块,进而开发自己的东西,还是能够很好用起来紫光的PCIE。对于毫无PCIE知识和经验的小白来说,比如我来说,使用好紫光的PCIE还是有难度的。

MYMINIEYE的博客 3097

【紫光同创PCIE教程】——使用官方驱动在Windows下进行DMA读写操作/PIO读写操作

紫光同创官方主推的是在linux系统下开发驱动和上层软件,相应地,官方提供了在linux一个基于GTK+2.0的PCIE测试平台,该平台能够很好去操作官方生成的例程。官方也提供了一个Windows的驱动例程,该例程能够完成PCIE的DMA读写操作和PIO内存读写操作,但是该驱动并未完全适配IP生成的官方例程,官方提供另一份的FPGA的工程与之适配。最后简单声明一下,更改驱动只是适配紫光同创IP生成的例程,把IP自带例程的DMA机制通信成功起来,当然也可以去更改IP生成例程DMA的逻辑设计来适配原来的驱动。

MYMINIEYE的博客 2892

告别算力焦虑:用RK3588的6TOPs NPU和FPGA,给你的图像处理项目插上翅膀

本文探讨了如何利用RK3588的6TOPs NPU和FPGA构建高性能图像处理方案,有效解决工业质检和安防监控领域的算力焦虑。通过异构计算架构,开发者能够实现多路高清视频流的实时分析,显著降低BOM成本并提升能效比。文章详细介绍了硬件设计、软件优化及实测性能,为边缘计算设备提供了性价比极高的解决方案。

weixin_30836759的博客 357

FPGA优质开源项目 – PCIE通信

本文介绍一个FPGA开源项目:PCIE通信。该工程围绕Vivado软件中提供的PCIE通信IP核XDMA IP建立。本文主要介绍一下XDMA IP核的使用和Vivado工程的源代码结构。文章末尾有该工程源码获取方式,有需要的小伙伴可自取。希望小伙伴们点赞、分享支持一下~

cjx_csdn的博客 8339

保姆级教程:在紫光同创Titan2 FPGA上实现PCIe DMA,实测带宽接近理论极限

本文详细介绍了在紫光同创Titan2 FPGA上实现PCIe DMA性能调优的全过程,通过参数优化和架构设计,实测带宽达到6.91GB/s,接近理论极限。涵盖开发环境搭建、PCIe IP核定制、DMA引擎设计、驱动开发及性能调优等关键步骤,为FPGA开发者提供实用指南。

weixin_30954817的博客 321

【信息科学与工程学】计算机科学与自动化——第一百五十九篇 并行计算开发设计01

编号编程语言(含版本)+开发框架应用场景机制+用法+详细设计+详细配置编译器(版本+内核+底层机制+优化方法+阶段)底层实现·说明·缺陷+优势的·解决方案及数学建模引入版本国产化/信创/商用CPU/GPU/DPU芯片适配及指令集列表和指令调用和时序图关联知识&标准1高性能科学计算、深度学习训练与推理、图像处理、物理模拟、金融风险分析SIMT模型,kernel函数并行执行海量线程。用法:定义__global__

weixin_49199313的博客 238

紫光FPGA开发:PCIe接口与远程升级功能详解及优化建议

内容概要:本文详细介绍了紫光FPGA开发中PCIe接口及其相关功能,特别是DMA模块将AXI4-Stream接口转换为RAM读写接口的技术细节。文中涵盖了对PCIe不同代际和lane宽度的支持情况,以及DMA引擎的状态机控制逻辑。此外,还探讨了远程升级过程中可能遇到的问题及解决方法,如flash操作时序带来的IO状态跳变问题,并提供了具体的硬件抽象层实现方法。最后给出了关于AXI桥接时DMA引擎watermark设置的实际测试建议。 适合人群:从事FPGA开发的专业技术人员,尤其是对PCIe接口和远程升级有需求的研发人员。 使用场景及目标:①理解并掌握紫光FPGA中PCIe接口的工作原理和技术细节;②学习如何有效实施和优化远程升级流程;③获取针对特定应用场景下的性能调优技巧。 其他说明:文章不仅提供了理论性的介绍,还有基于实践经验的具体案例分享,有助于读者更好地理解和应用于实际项目中。

软件项目管理期末复习(看这一篇就够了)

软件项目管理考试复习 🔶🔶🔶🔶🔶加了🔶的是考点 第一章软件项目管理概述 1.1.1项目及其特征 项目定义:🔶 项目就是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力; 是以一套独特而互相联系的任务为前提,有效地利用资源,在一段时间内满足一系列特定目标的多项相关工作的总称。 日常运作和项目的区别: 项目是一次性的,而日常运作是重复进行的。 项目是以目标为导向的,日常运作是通过效率和有效性体现的。 项目是通过项目经理及其团队工作完成的,日常运作是职能式的线性管理。 项目存在大量的变更管理,

qq_50886857的博客 3万+

【Matlab/Unity】跨平台UDP通信实战:从数据发送到实时可视化

本文详细介绍了Matlab与Unity之间通过UDP协议实现跨平台通信的实战方法,涵盖数据发送、接收和实时可视化全流程。针对科研仿真和工业设计场景,提供优化代码示例和性能对比数据,帮助开发者解决低延迟传输、线程安全等关键问题,显著提升跨平台协作效率。

weixin_29044713的博客 148

Android T GPS 定位流程

Gps 定位

好记性不如烂笔头 1349

在Qt中使用EtherCAT-SOEM的初始化中,状态机卡在PreOp->Save-Op过程中,出现State=0x12, Error=0x001e错误的解决办法

1.在调试EtherCAT软件过程中,一直出现配置从站进不了Save_op状态,通过下函数检查从站状态: //使用的从站编号为1 只有1个从站 ec_slave[1].state = EC_STATE_SAFE_OP; ec_writestate(1); //设置到安全模式 ec_statecheck(1, EC_STATE_SAFE_OP, EC_TIMEOUTSTATE * 4); printf("Slave %d State=0x%2.2x StatusCode=0x%4

zeal_for_rov的博客 6813

华为OD机试新系统真题【字符串压缩编码】

华为OD机试 新系统真题【字符串压缩编码】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【字符串压缩编码】多语言题解

qq_45776114的博客 344

基于深度学习的野生菌菇检测识别分类系统(YOLOv8 + UI界面 + 数据集)

随着深度学习技术的迅猛发展,计算机视觉领域的应用得到了广泛的关注。野生菌菇的检测与识别是一个复杂而又有趣的问题,涉及到物体检测、图像分类以及自然语言处理等技术。本文将介绍如何基于YOLOv8模型,结合自定义UI界面与数据集,构建一个高效且精确的野生菌菇检测识别分类系统。首先,我们将介绍YOLOv8的原理与特点,然后详细描述如何构建和训练野生菌菇识别模型,并介绍如何为该系统设计UI界面,最终形成一个完整的系统。本文内容包括代码实现、模型训练及数据集准备等,旨在为有类似需求的开发者提供参考和帮助。目录摘要目录。

YOLO 1545

基于 STM32 单片机的实验室多参数安全监测系统设计与实现

本系统以 STM32F103C8T6 单片机为核心,集成温湿度监测、烟雾检测、气体泄漏报警、人体移动监测等功能模块,通过 OLED 显示屏实时显示数据,并支持 Wi-Fi 远程传输。系统可对实验室异常环境参数(如高温、烟雾、燃气泄漏)及非法入侵实时报警,保障实验室安全。本文从硬件选型、电路设计到软件实现提供了完整的实验室安全监测系统方案,可根据实际需求调整传感器类型和通信方式,适用于科研、教学等场景的环境安全防护。:可增加继电器模块控制通风设备或切断电源,集成 ZigBee 组网实现多实验室联动监测。

weixin_42300449的博客 1280

英伟达(NVIDIA) 显卡型号、计算能力(CC)、CUDA版本、PyTorch版本 对照表

本文全面梳理NVIDIA显卡型号与其计算能力(CC)的对应关系,并详解各代CUDA版本对不同架构的支持与弃用情况,帮助用户判断硬件兼容性。同时,结合PyTorch官方发布版本,整理其支持的CUDA版本清单,指导开发者合理选择深度学习环境配置。涵盖从Jetson嵌入式设备到H100、Blackwell等最新旗舰显卡,是一份实用的AI开发环境搭建参考指南。

寒水馨 · 轻量级技术文档 · hanshuixin.org 4864

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: ESP32定时器加低功耗demo
下一篇: 视频压缩标准简史:从1929到2020
牟奇
博客等级 码龄10年 38粉丝 7原创
评论 11
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值