目录
Hello-FPGA CoaXPress 2.0 Host FPGA IP Core Linux Demo
图 3‑4 外部PHY接口,用axi lite完成速率配置 9
图 4‑4 basic test udp测试程序 200帧每秒 12
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
下图展示了cxp_host_ps内部的目录结构,直接使用VIVADO 2020.2打开 *.xpr工程文件即可,其中cxp_host_wrapper.xsa文件为预编译并导出的硬件描述文件,用户可以使用该文件创建并编译petalinux工程。
下图展示了petalinux预编译设计内部目录结构,直接使用petalinux配置即可,用户可以修改设备树、ROOTFS或者替换bit文件,也可以重新创建工程。
创建工程指令如下:
petalinux-create -t project -n petalinux --template zynqMP
当前设备树信息如下:
其中,memory 手动制定了4GB地址空间(Z19实际可用8GB),其中把0x8_0800_0000起始地址,长度为0x7000_0000的PS内部保留起来,用于连续的dma传输。用户可以在此基础上增加内容,增加内存范围,但是不要删除内容,可能导致设备无法启动、dma传输错误等故障。
下图为petalinux 应用程序,其中CXP_Core为是输出的动态库工程,cpp_demo则为调用CXP_Core动态库完成相机配置、采集、dma传输、UDP监测的demo程序。
速率配置 | 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 |
设备连接
设备包含:
- Camera,camera 请按照厂商要求连接电源;
- Camera 与CXP HOST FMC子卡连接,请注意LINK 序号一一对应,使用CXP同轴线缆完成连接;
- CXP HOST FMC 与Z19 FMC1连接,连接好后请使用螺丝进行固定;
- Demo使用SD卡启动模式,请将Z19设置为SD卡启动;
- Demo需要连接网络,请将windows udp client 计算机与Z19连接在同一个局域网内
VIVADO FPGA工程
使用VIVADO 2020.2 打开。
如下图所示,CPU使用Xilinx的FPGA硬核处理器PS,CPU与外设之间均通过AXI总线进行连接,其中cxp传输数据直接使用PS内存完成dma 操作。
Demo使用外部PHY,使用AXI lite interface完成速率的动态配置。
下图为均衡器配置IP,均衡器是FMC接口板上的一组芯片,用于均衡高速downlink信号,不同速率会有不同的参数配置,具体配置逻辑请参考软件demo。
按照正常流程编译即可。如果代码有修改,改动后需要将硬件信息导出到SDK。
调试说明
下图为Linux 应用程序工程,其中CXP_Core为配合FPGA工程使用的驱动代码,代码输出动态库,生成后copy到linux 的lib目录即可。
该代码有如下限制:
- 固定使用4个LINK连接;
- PL 外设模块基地址已经在驱动中定义完成,因此FPGA部分不能修改对应的地址分配,修改后运行驱动程序会导致Linux crash.
调试之前需要:
- 连接设备网络,使用ifconfig 查看IP地址;
- 安装dma 驱动,dma驱动已经预先编译好,必要的动态库libDMACore.so已经放到了linux的lib目录,如果要更换SD卡,请一并copy该动态库;安装dma驱动指令为insmode u-dma-buf.ko,需要说明,该内核驱动并没有编译进linux内核,因此demo开机均需安装一次。
- LibCXP_Core动态库已经预先放到了Linux lib 目录,如果要更换SD卡,请一并copy该动态库;
Debug 推荐使用TCF Agent 下载调试程序,调试之前先测试连接是否通畅,待调试程序为cpp_demo,非CXP_Core程序,调试开始后请禁用断点,保证程序按照预期顺利执行。
程序会将打印信息输出到PS UART串口。
cpp_demo程序运行并禁用断点后,可以打开windows 计算机的测试程序basic_test,然后开启测试,并监测ZYNQ CXP设备工作状态,需要注意,该demo 图像不是实时传输的,只是监测图像,受限于网络传输的速度等其它条件。