目录

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帧每秒

CoaXPress 2.0 FPGA HOST IP Core Linux Demo的更多相关文章

  1. dubbo could not get local host ip address will use 127.0.0.1 instead 异常处理

    dubbo could not get local host ip address will use 127.0.0.1 instead 查看hostname localhost:spring wls ...

  2. Professional C# 6 and .NET Core 1.0 - 40 ASP.NET Core

    本文内容为转载,重新排版以供学习研究.如有侵权,请联系作者删除. 转载请注明本文出处:Professional C# 6 and .NET Core 1.0 - 40 ASP.NET Core --- ...

  3. HOSt ip is not allowed to connect to this MySql server, MYSQL添加远程用户或允许远程访问三种方法

    HOSt ip is not allowed to connect to this MySql server 报错:1130-host ... is not allowed to connect to ...

  4. 极度简约 最小 Linux 发行版 Tiny Core Linux 7.1 发布

    感谢Linux Story的投递 Tiny Core Linux 是一个极度简约但是也高度可扩展的 GNU/Linux 发行版,其之精简甚至可以小到只有 10MB 大小,昨天 5月23日刚刚发布的 T ...

  5. asp.net core + mysql + ef core + linux

    asp.net core + mysql + ef core + linux 以前开发网站是针对windows平台,在iis上部署.由于这次需求的目标服务器是linux系统,就尝试用跨平台的.NET ...

  6. Modelsim独立仿真Vivado Clocking Wizard IP Core

    工欲善其事,必先利其器.在使用Vivado自带的仿真软件仿真的时候,相对于更优秀的仿真工具Modelsim,效率低了很多,为了更高效的开发,我尝试着用Vivado级联Modelsim仿真,但是级联后还 ...

  7. IP Core 分类

    IP(Intelligent Property)核是具有知识产权核的集成电路芯核总称,是经过反复验证过的.具有特定功能的宏模块,与芯片制造工艺无关,可以移植到不同的半导体工艺中.到了SOC阶段,IP核 ...

  8. 阅读 RAM-Based Shift Register(ALTSHIFT_TAPS) IP Core User Guide

    阅读 RAM-Based Shift Register(ALTSHIFT_TAPS) IP Core User Guide 说明:本文档自带测试工程: DE_ALTSHIFT_TAPS.zip 1.支 ...

  9. Vivado 2017封装自定义IP Core

    使用Vivado2017.3自定义IP Core.通常情况下,我们做设计采用模块化设计,对于已经设计好的一部分模块功能,就可以直接拿来调用,IP Core就是这样来的,一般来说我们看不到IP Core ...

  10. WSO2 API Manager中host Ip 不正确的问题解决方法

    问题: 根据官方的Quick start的教程,部署完AM后,添加的API的host Ip不正确,为localhost或者服务器上的其他虚拟ip. 安装版本:       WSO2AM 2.6.0 环 ...

随机推荐

  1. 《C和指针》第一章

    1 第一章 C标准库中几个常用的IO函数 int puts(void *str): 从str中提取字符直到遇到第一个'\0'为止,将这些字符串加上'\n'后发送给stdout. int main(vo ...

  2. P1014 [NOIP1999 普及组] Cantor 表

    题目链接:https://www.luogu.com.cn/problem/P1014 有理数可枚举 In 1873 Cantor proved the rational numbers counta ...

  3. 2020-11-06:go中,谈一下调度器。

    福哥答案2020-11-06:·MPG模型:goroutine的并发模型可以归纳为MPG模型:·MPG概念:线程(machine,系统线程,物理线程)-内核(processor)-协程(gorouti ...

  4. L3-017 森森快递

    一.题目: 7-2 森森快递 (30 分) 森森开了一家快递公司,叫森森快递.因为公司刚刚开张,所以业务路线很简单,可以认为是一条直线上的N个城市,这些城市从左到右依次从0到(N−1)编号.由于道路限 ...

  5. drf——5个视图扩展类、9个视图子类、视图集、drf之路由

    5个视图扩展类 # 写5个类(不叫视图类 视图拓展类 需要配合GenericAPIView一起用) 每个类有一个方法 以后想写哪个接口 就继承哪个类即可 from rest_framework.res ...

  6. Python数据类型 - 元祖

    介绍 元祖和列表都是有序数列,列表是用 [ ],元祖使用() 元祖不同的地方在于创建后不能修改   注意:当元祖中只有一个元素的时候,要加上逗号(一个括号会被当成运算符使用) 比如: (123, ) ...

  7. 【QCustomPlot】性能提升之修改源码(版本 V2.x.x)

    说明 使用 QCustomPlot 绘图库的过程中,有时候觉得原生的功能不太够用,比如它没有曲线平滑功能:有时候又觉得更新绘图数据时逐个赋值效率太低,如果能直接操作内存就好了:还有时候希望减轻 CPU ...

  8. Linux 中 3 个文件打包上传和下载相关命令详解

    tar 命令 通过 SSH 访问服务器,难免会要用到压缩,解压缩,打包,解包等,这时候tar 命令就是必不可少的一个功能强大的工具.Linux 中最流行的tar是麻雀虽小,五脏俱全,功能强大. 使用t ...

  9. R 包初学者指南

    由于微信不允许外部链接,你需要点击文章尾部左下角的 "阅读原文",才能访问文中链接. 基于 11 个最常见的用户问题介绍 R 软件包. R 包是由社区开发 (developed b ...

  10. Linux服务器设置虚拟内存

    cd /usrsudo mkdir swapcd swapsudo dd if=/dev/zero of=/usr/swap/swapfile bs=1M count=4096du -sh /usr/ ...