CoaXPress 2.0 FPGA HOST IP Core Linux Demo

发布时间 2023-07-31 13:04:15作者: Hello-FPGA

 

 

目录

Hello-FPGA CoaXPress 2.0 Host FPGA IP Core Linux Demo 4

1 说明 4

2 设备连接 7

3 VIVADO FPGA工程 7

4 调试说明 10

图 1‑1 资料目录 4

图 1‑2 VIVADO工程目录结构 5

图 1‑3 SDK工程目录结构 5

图 1‑4 设备树信息 6

图 1‑5 petalinux应用程序 6

图 2‑1 ZCU102结构图 7

图 3‑1 VIVADO工程 8

图 3‑2 CPU控制器 8

图 3‑3 CXP IP实例化 9

图 3‑4 外部PHY接口,用axi lite完成速率配置 9

图 3‑5 均衡器芯片配置IP 10

图 3‑6 位宽与协议转换IP 10

图 4‑1 安装内核驱动 11

图 4‑2 CXP Demo SDK 软件工程目录 11

图 4‑3 配置TCF Agent 12

图 4‑4 basic test udp测试程序 200帧每秒 12

表 1‑1 LINK速率配置 7

Hello-FPGA CoaXPress 2.0 Host FPGA IP Core Linux Demo

说明

本手册针对Helllo-FPGA的CoaXPress 2.0 HOST FPGA IP Core demo工程,用于演示IP的使用方法、配置流程。

Demo 特点功能如下:

  • Demo运行了Linux 应用程序,使用UDP通讯,在LINUX上运行UDP Server 程序,通过运行在Windows计算机上的Client程序实现采集的控制、采集图像的监测,达到演示的目的。
  • 当前代码适用于ALINX Z19 评估板,其它ZYNQ评估板请联系我们咨询;
  • 使用VIVADO 2020.2、Petalinux 2020.2、Xilinx SDK2019.1(其它版本请自行升级);
  • VIVADO 工程使用block design形式提供;
  • LINK配置为1个相机,4个LINK,设备发现阶段使用0x38配置,即3.125Gbps,设备采集阶段使用0x48配置,即6.125Gbp,如果相机不支持对应速率,请修改代码后进行测试,请注意当前Z19程序不支持10Gbps和12.5Gbps速率;
  • 使用ZYNQ PS A53作为CPU控制器,搭载Petalinux定制linux系统,软件代码使用SDK进行开发、调试;
  • IP使用网表形式提供,参数无法修改,如需不同LINK配置,请联系Info@hello-fpga ;
  • 其它相关IP使用加密方式提供;

文件列表:

Z19 顶层文件夹

cxp_host_ps 示例FPGA工程

IPLib 工程依赖的IP文件

Z19评估板资料

IP user manual

图 ‑1 资料目录

下图展示了cxp_host_ps内部的目录结构,直接使用VIVADO 2020.2打开 *.xpr工程文件即可,其中cxp_host_wrapper.xsa文件为预编译并导出的硬件描述文件,用户可以使用该文件创建并编译petalinux工程。

图 ‑2 VIVADO工程目录结构

下图展示了petalinux预编译设计内部目录结构,直接使用petalinux配置即可,用户可以修改设备树、ROOTFS或者替换bit文件,也可以重新创建工程。

图 ‑3 SDK工程目录结构

创建工程指令如下:

petalinux-create -t project -n petalinux --template zynqMP

当前设备树信息如下:

其中,memory 手动制定了4GB地址空间(Z19实际可用8GB),其中把0x8_0800_0000起始地址,长度为0x7000_0000的PS内部保留起来,用于连续的dma传输。用户可以在此基础上增加内容,增加内存范围,但是不要删除内容,可能导致设备无法启动、dma传输错误等故障。

图 ‑4 设备树信息

下图为petalinux 应用程序,其中CXP_Core为是输出的动态库工程,cpp_demo则为调用CXP_Core动态库完成相机配置、采集、dma传输、UDP监测的demo程序。

图 ‑5 petalinux应用程序

表 ‑1 LINK速率配置

速率配置

Downlink速率

最大速率

0x28

1.250 Gbps

1.000 Gbps

0x30

2.500 Gbps

2.000 Gbps

0x38

3.125 Gbps

2.500 Gbps

0x40

5.000 Gbps

4.000 Gbps

0x48

6.250 Gbps

5.000 Gbps

0x50 (1)

10.000 Gbps

8.000 Gbps

0x58 (1)

12.500 Gbps

10.000 Gbp

设备连接

设备包含:

  1. Camera,camera 请按照厂商要求连接电源;
  2. Camera 与CXP HOST FMC子卡连接,请注意LINK 序号一一对应,使用CXP同轴线缆完成连接;
  3. CXP HOST FMC 与Z19 FMC1连接,连接好后请使用螺丝进行固定;
  4. Demo使用SD卡启动模式,请将Z19设置为SD卡启动;
  5. Demo需要连接网络,请将windows udp client 计算机与Z19连接在同一个局域网内;
  6. Z图片包含 游戏机, 电子, 电路

描述已自动生成

图 ‑1 ZCU102结构图

VIVADO FPGA工程

使用VIVADO 2020.2 打开。

图 ‑1 VIVADO工程

如下图所示,CPU使用Xilinx的FPGA硬核处理器PS,CPU与外设之间均通过AXI总线进行连接,其中cxp传输数据直接使用PS内存完成dma 操作。

图 ‑2 CPU控制器

图 ‑3 CXP IP实例化

Demo使用外部PHY,使用AXI lite interface完成速率的动态配置。

图 ‑4 外部PHY接口,用axi lite完成速率配置

下图为均衡器配置IP,均衡器是FMC接口板上的一组芯片,用于均衡高速downlink信号,不同速率会有不同的参数配置,具体配置逻辑请参考软件demo。

图示

低可信度描述已自动生成

图 ‑5 均衡器芯片配置IP

图 ‑6 位宽与协议转换IP

 

按照正常流程编译即可。如果代码有修改,改动后需要将硬件信息导出到SDK。

调试说明

下图为Linux 应用程序工程,其中CXP_Core为配合FPGA工程使用的驱动代码,代码输出动态库,生成后copy到linux 的lib目录即可。

该代码有如下限制:

  1. 固定使用4个LINK连接;
  2. PL 外设模块基地址已经在驱动中定义完成,因此FPGA部分不能修改对应的地址分配,修改后运行驱动程序会导致Linux crash.

调试之前需要:

  1. 连接设备网络,使用ifconfig 查看IP地址;
  2. 安装dma 驱动,dma驱动已经预先编译好,必要的动态库libDMACore.so已经放到了linux的lib目录,如果要更换SD卡,请一并copy该动态库;安装dma驱动指令为insmode u-dma-buf.ko,需要说明,该内核驱动并没有编译进linux内核,因此demo开机均需安装一次。

文本

描述已自动生成

图 ‑1 安装内核驱动

  1. LibCXP_Core动态库已经预先放到了Linux lib 目录,如果要更换SD卡,请一并copy该动态库;

图 ‑2 CXP Demo SDK 软件工程目录

Debug 推荐使用TCF Agent 下载调试程序,调试之前先测试连接是否通畅,待调试程序为cpp_demo,非CXP_Core程序,调试开始后请禁用断点,保证程序按照预期顺利执行。

图形用户界面, 文本, 应用程序, 电子邮件

描述已自动生成

图 ‑3 配置TCF Agent

程序会将打印信息输出到PS UART串口。

cpp_demo程序运行并禁用断点后,可以打开windows 计算机的测试程序basic_test,然后开启测试,并监测ZYNQ CXP设备工作状态,需要注意,该demo 图像不是实时传输的,只是监测图像,受限于网络传输的速度等其它条件。

图形用户界面

描述已自动生成

图 ‑4 basic test udp测试程序 200帧每秒