基于AMD AU15P FPGA的SLVS-EC桥PCIe计划方案分享

铁佛  金牌会员 | 2025-3-10 06:34:07 | 显示全部楼层 | 阅读模式
打印 上一主题 下一主题

主题 983|帖子 983|积分 2949

作者:Hello,Panda
各位FPGAer周末舒畅,今天熊猫君分享一个基于AMD AU15P FPGA的SLVS-EC桥PCIe计划方案。

一、方案配景
先说方案的应用配景:众所周知,较为上层的如基于AI的呆板视觉应用,大多基于高端的专用SoC、AI专用盘算卡等,好比说英伟达(NVIDIA)的一系列高端器件;国内的海思(Hisilicon)、瑞星微(RockChip)等。在工业和科研应用范畴,一些超高速或超大面阵的图像传感器因输出图像必要极大带宽的缘故,常常采用SLVS-EC接口输出,为办理专用芯片无法直接支持SLVS-EC输入的问题,这个SLVS-EC桥接到PCIe的计划方案便应运而生。
二、FPGA选型
桥接型的方案,除了必要实现基本功能外,还要求功耗低、面积小且成本不要太高。那么咱们先看这些SLVS-EC输出的图像传感器,大多都是基于SLVS-EC Spec 2.0规范,8-Lanes输出,Lane速率4.752Gbps。那么对桥接FPGA的基本要求是:
(1)8对高速Serdes实现8-Lanes 4.752Gbps SLVS-EC数据吸收;
(2)至少PCIe Gen3 x4输出采集到的数据;
(3)PCIe采用Stream模式对主控的控制要求太高(重要是熊猫君在这种几乎满带宽环境下没怎么调好过,以是不敢推荐Stream模式),因此采用Memory Map模式,因此必要至少32位宽的DDR缓存。
那么,可以或许同时满足12对高速Serdes,可接DDR缓存,封装小且功耗低的器件,截止本文发布,好像只有AU15P用起来刚刚好。其资源如下图所示:12对Serdes,PCIe用去4对,另有8对可用来接入SLVS-EC,170K的逻辑、144个RAM36K,实现PCIE、SVLS-EC和DDR控制器能用上65%~75%,也是刚刚好。器件选用SBVB484(19mm×19mm)封装,全功能运行功耗3W左右,均比较符合。

当然,如果是图像传感器是4-LANEs SVLS-EC输出,也可以支持两颗Sensor同时接入。
三、软件计划
本文以接入两颗4-Lanes SLVS-EC图像传感器为例,描述软件计划架构。

如图所示:
(1)SoC设置和控制Sensor时序,FPGA吸收SLVS-EC接口数据并可经PCIE接口输出,相当于是数据透传;
(2)SoC通过PCIe接口(XDMA)控制FPGA各模块和读取FPGA各模块的状态,FPGA相当于是SoC的一个外设;
(3)XDMA设置为AXI Memory Mapped模式,SoC在收到XDMA给出的数据停止后读取图像数据。
1、SLVS-EC吸收模块
SLVS-EC吸收模块的计划框图如下:

SLVS-EC的物理层支持1-Lane/2-Lanes/4-Lanes/8-Lanes 的 SLVS-EC 数据通道输入。SLVS-EC 核心组件由 RX 协议剖析状态机、packet Parser 和字节到像素的转换等模块构成,实现如Packet Header、Packet Footer等链路层功能和链路层协议管理等功能。支持的数据格式有 RAW8、RAW10、RAW12、RAW14、RAW16。
2、XDMA设置
通过AMD官方IP XMDMA实现PCIe传输。Vivado下关键设置如下图:



如上图所示,因为接入的是2组SLVS-EC相机,因此用户停止请求设置为2个,每个相机的数据对应一个独立的停止。同理,DMA H2C/C2H也设置为独立的2个。M_AXI_LITE接口用于设置FPGA和读取状态。
3、主控读取
对PCIe主控而言,Linux系统下面直接编译AMD提供的官方驱动即可,不过必要注意的是,不同版本的Linux内核头文件可能有些许差异,根据编译信息处理即可,下图是在Ubuntu 2022.4上利用QT取PCIe图表现效果。

今天的分享到此结束了,盼望对大家有所启发。大家有更好的计划想法,有问题,有需求均可与熊猫君接洽一起学习、讨论、进步。

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册

x
回复

使用道具 举报

0 个回复

倒序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

铁佛

金牌会员
这个人很懒什么都没写!
快速回复 返回顶部 返回列表