一、需求
要实现高速AD/DA的数据采集,并发送到高性能arm核进行数据处理;
方案RK3399+pcie+FPGA+AD/DA。
二、器件介绍
一、RK3399
RK3399是一款低功耗、高性能处理器,用于计算、个人移动互联网设备和其他智能设备应用。基于Big.Little架构,它将双核Cortex-A72和四核Cortex-A53与单独的NEON协处理器集成在一起。
许多嵌入式功能强大的硬件引擎为高端应用程序提供了优化的性能。RK3399支持多格式视频解码器,包括H.264/H.265/VP9,可达4Kx2K@60fps,特别是,H.264/H265解码器支持10比特编码,并且还通过以下方式支持H.264/MVC/VP8编码器:1080p@30fps、高质量JPEG编码器/解码器以及特殊图像预处理器和后处理器。
嵌入式3D GPU使RK3399与OpenGL ES1.1/2.0/3.0/3.1/3.2、OpenCL 1.2和DirectX 11.1完全兼容。带有MMU的特殊2D硬件引擎将最大化显示性能并提供非常平滑的操作。
RK3399具有高性能双通道外部存储器接口(DDR3/DDR3L/LPDRDR3/LPDDR4),能够维持苛刻的存储器带宽,还提供了一整套外围接口,支持非常灵活的应用。
二、FPGA
纯FPGA的选择,主要用于前端高速AD/DA的逻辑操作,Xilinx的7系列目前还是有很多的优势;同时也集成PCIe 硬核,在与RK3399配合方面,相当合适。
充足的差分对也可以满足前端AD/DA的接口设计。
三、PCIe
一、为什么是PCIe
RK3399有不少专用的高速接口,比如MIPI、千兆网络、USB3.0、Type-C、EDP等;但如果是板上器件间的内部通讯,专用接口受到协议的限制、及各种PHY,灵活性就差很多。比如高速AD/DA的数据,FPGA采集完要传输到ARM进行数据处理,数据格式是私有的,并不能满足MIPI,那要去套用MIPI的数据格式,就存在各种问题了。最终只能选择PCIe,在便捷性和速率上得到满足。
RK3399 PCIe特性如下:
RK3399中的一个PCIe端口
与PCI Express基本规范2.1版兼容
操作模式:(RC)
最大链路宽度为4,单个双向链路接口
支持每个方向每车道2.5GT/s串行数据传输速率
支持模块内的DMA,2个通道,2个RAM分区,2K字节深度
支持可调整大小的BAR功能
在端点模式下支持单个物理PCI功能
支持传统中断、MSI和MSI-X中断
支持出站和入站地址转换
支持物理功能附带的8个虚拟功能
支持PCI Express活动状态电源管理(ASPM)状态L0和L1
支持L1电源管理
支持PCI功能电源状态D0、D1和D3以及相应的链路电源状态L0、L1和L2
二、PCIe驱动调试
正确生成FPGA固件后,加载RK3399驱动后,便可看到PCIe设备,并进行调用。
root@rk3399:/# lspci -vvv
00:00.0 Class 0604: 1d87:0100
01:00.0 Class 0700: 10ee:9021
root@rk3399:/# lspci -m
00:00.0 "Class 0604" "1d87" "0100" "0000" "0000"
01:00.0 "Class 0700" "10ee" "9021" "10ee" "0007"
root@rk3399:/# lspci -k
00:00.0 Class 0604: 1d87:0100 pcieport
01:00.0 Class 0700: 10ee:9021
root@rk3399:/sys/bus/pci/devices# ls
0000:00:00.0 0000:01:00.0
三、硬件调试
通过官方开发板转接验证正常,最终集成一体板。
标签:AD,FPGA,PCIe,RK3399,Class,00.0 From: https://blog.51cto.com/u_15812463/6149482