Hello-FPGA CoaXPress 2.0 FPGA DEVICE IP Core Demo
Hello-FPGA CoaXPress 2.0 Device FPGA IP Core Demo
1 说明
本手册针对Helllo-FPGA的CoaXPress
2.0 DEVICE FPGA IP Core demo工程,用于演示IP的使用方法、配置流程。本文的内容适用于所有开发板。
Demo 特点功能如下:
l 代码适用于ZCU102,ZCU106, KCU105, KC705,AXKU040/2,
AX7P, AX19P等使用Xilinx 芯片作为主控制器的评估板;
l 使用VIVADO 2019.1 及其SDK;
l 默认配置为4个LINK,设备发现阶段使用0x38配置,即3.125Gbps,设备采集阶段使用0x48配置,即6.25Gbps,最高支持12.5Gbps;
l 使用MicroBlaze作为link速率控制器,软件代码使用SDK进行开发、调试;
l IP使用网表形式提供,参数无法修改,如需不同stream通道数配置,请联系Info@hello-fpga 或其它Hello-FPGA工程师
文件列表由两大部分构成,即vivado工程和SDK工程文件夹:
Vivado工程文件夹(cxp_device_hardware)
实现cxp device协议的模块存放在library文件夹,以网表的形式提供,其余的模块均以源码形式提供,并放在AXKU042_device.src文件夹中。
Vivado工程文件存放在AXKU042_device文件夹中,直接使用VIVADO 2019.1打开 *.xpr文件即可。
下图展示了cxp_device的总体目录结构。

图 1‑1 工程目录结构
SDK工程文件夹(cxp_device_driver)
下图展示了*.sdk内部目录结构,直接使用Xilinx SDK打开此目录即可。

图 1‑2 SDK工程目录结构
表 1‑1 LINK速率配置
|
速率配置 |
Downlink速率 |
|
0x28 |
1.250 Gbps |
|
0x30 |
2.500 Gbps |
|
0x38 |
3.125 Gbps |
|
0x40 |
5.000 Gbps |
|
0x48 |
6.250 Gbps |
|
0x50 (1) |
10.000 Gbps |
|
0x58 (1) |
12.500 Gbps |
2 设备连接
我们使用Metrox的cxp采集卡(host)+黑金AXKU042开发板(device)为例进行说明:
1、 安装好采集卡软件;
2、 CXP DEVICE FMC子卡 与AXKU042 FMC3 连接,连接好后请使用螺丝进行固定;
3、 CXP DEVICE FMC子卡前面板与cxp采集卡连接,请注意LINK 序号一一对应,使用CXP同轴线缆完成连接;
4、 AXKU042 UART串口与JTAG需要连接到主计算机,其中JTAG负责下载FPGA bitstream与debug,UART负责将demo软件打印信息输出,比如输出当前配置的link速率,串口波特率为115200。

图 2‑1 连接图
3 VIVADO FPGA工程
使用VIVADO 2019.1 打开,如果使用其它版本,可以自行升级。

图 3‑1 VIVADO工程
如下图所示,CPU使用Xilinx的FPGA软核MicroBlaze,在本Demo工程中用于完成link速率配置。CPU与外设之间通过AXI总线进行连接。

图 3‑2 控制器

图 3‑3 pattern generator
Demo使用pattern
generator模块模拟图像数据,产生一路图像流,格式为mono类型,从代码上看像素数据位宽达到了12位,但由于bootstrap里默认设置的像素位宽为8,所以在默认情况下实际传输时是有截位的,在device模块里面对数据截取低8位进行传输。
如果代码有修改,改动后需要将硬件信息导出到SDK,并LAUNCH SDK或者其它方式打开SDK重新编译软件代码。
4 SDK工程
使用2019.1打开,如果使用Vitis,请自行导入代码。SDK如果不能正常打开,请自行导入工程即可。
下图为裸机SDK软件目录,其中AXKU042_CXP_Driver_bsp和AXKU042_CXP_Driver_hw均为系统自动生成bsp包,测试 AXKU042_CXP_Driver应用程序即可。

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

图 4‑2 Debug配置,下载并复位
下载程序到开发板后,程序会将打印信息输出到UART串口。
Hello-FPGA CoaXPress 2.0 FPGA DEVICE IP Core Demo的更多相关文章
- 【再话FPGA】在xilinx中PCIe IP Core使用方法
采用Xilinx Virtex-5 XC5VSX50T-FF1136 FPGA或者Xilinx Virtex-5 XC5VSX95T-FF1136的板子.采用ISE13.2环境.步骤:一.建立一个IS ...
- 基于FPGA的SATA3.0主机控制器IP
SATA3.0 Host Controller IP SATA3.0 Host IP不仅实现了SATA协议的PHY(物理层).Link(链路层)和TRN(传输层),并且实现了CMD(命令层)和APP( ...
- [原创]免固件开发USB2.0 FPGA方案 速度40Mbyte/s+
USB 2.0接口,实测速度40Mbyte/s: 一个接口实现两种功能(USB2.0+FPGA配置): 免固件开发: 完整的FPGA代码,即拿即用: FPGA逻辑工程师开发USB接口福音: 平台可移植 ...
- Lattice系列FPGA入门相关0(Lattice与Altera、Xilinx对比及入门)
需求说明:Lattice系统FPGA入门 内容 :Lattice与Altera.Xilinx对比 来自 :时间的诗 1.Lattice与Altera.Xilinx对比 latt ...
- CC1605&CC1604 usb3.0+FPGA 高速视频采集 双目相机测评
CC1605&CC1604 usb3.0+FPGA 高速视频采集 双目相机测评 摄像头配置:ov5640.OV5642.mt9p031.mt9m001c12stm OV5640 xclk:24 ...
- 【FPGA篇章二】FPGA开发流程:详述每一环节的物理含义和实现目标
欢迎大家关注我的微信公众账号,支持程序媛写出更多优秀的文章 FPGA的开发流程是遵循着ASIC的开发流程发展的,发展到目前为止,FPGA的开发流程总体按照下图进行,有些步骤可能由于其在当前项目中的条件 ...
- Android studio3.0打开Device File Explore(文件管理器)的方法(图文教程)
Android studio3.0打开Device File Explore(文件管理器)的方法(图文教程) 看到网上AS3.0新增加的查看手机文件的新功能,全部都是转载的,没有几个人心细的把如何打开 ...
- FPGA的发展史及FPGA 的基础架构
通过了解早期FPGA的发展,理解FPGA究竟是干什么的,FPGA到底在电子设计领域起到了什么样的作用,下面是一张早期的设计过程 早期的设计流程过程中,只有当硬件完成了才能够得到功能的验证,随着集成电路 ...
- caffe运行错误: im2col.cu:61] Check failed: error == cudaSuccess (8 vs. 0) invalid device function
错误: im2col.cu:61] Check failed: error == cudaSuccess (8 vs. 0) invalid device function 原因:由于Makefil ...
- 配置SSD-caffe测试时出现“Check failed: error == cudaSuccess (10 vs. 0) invalid device ordinal”解决方案
这是由于GPU数量不匹配造成的,如果训练自己的数据,那么我们只需要将solver.prototxt文件中的device_id项改为自己的GPU块数,一块就是0,两块就是1,以此类推. 但是SSD配置时 ...
随机推荐
- [转帖]Redis 核心篇:唯快不破的秘密
文章系转载,方便整理和归纳,源文地址:https://z.itpub.net/article/detail/4B5A03BDDBE9A2BC3E080E278FE4D21E 以下文章来源于码哥字节 , ...
- [转帖]精通awk系列(19):awk流程控制之break、continue、next、nextfile、exit语句
https://www.cnblogs.com/f-ck-need-u/ 回到: Linux系列文章 Shell系列文章 Awk系列文章 break和continue break可退出for.wh ...
- # github突破7k star 即时通讯(IM)开源项目OpenIM每周迭代版本发布
v2.0已经重构完毕,架构更清晰,代码更规范,邀请各位参与OpenIM社区建设有兴趣的同学可以加我私聊. 目前侧正在业务开发,已提供更多功能,包括群管理,阅后即焚,朋友圈,标签下发等. web端体验: ...
- Unity Editor开发中查找属性的两种写法对比
从2017开始,在editor脚本中查找属性是这样写的 var m_Script = serializedObject.FindProperty("m_Script"); Seri ...
- 深入浅出Java多线程(二):Java多线程类和接口
引言 大家好,我是你们的老伙计秀才!今天带来的是[深入浅出Java多线程]系列的第二篇内容:Java多线程类和接口.大家觉得有用请点赞,喜欢请关注!秀才在此谢过大家了!!! 在现代计算机系统中,多线程 ...
- 从github上下载代码到本地
相关链接: 码云(gitee)配置SSH密钥 码云gitee创建仓库并用git上传文件 git 上传错误This oplation equires one of the flowi vrsionsot ...
- 20.4 OpenSSL 套接字AES加密传输
在读者了解了加密算法的具体使用流程后,那么我们就可以使用这些加密算法对网络中的数据包进行加密处理,加密算法此处我们先采用AES算法,在网络通信中,只需要在发送数据之前对特定字符串进行加密处理,而在接收 ...
- Django后台输出原生SQL语句
如果需要打印orm翻译后的原生sql语句,只需要在setting最后加上下面代码就行. 1 LOGGING = { 2 'version': 1, 3 'disable_existing_logger ...
- 【C语言进阶】atoi函数的模拟实现【C的深度解剖】超详细的解释和注释
[C语言进阶]atoi函数的模拟实现[C的深度解剖]超详细的解释和注释 那么这里博主先安利一下一些干货满满的专栏啦! 作者: #西城s 这是我的主页:#西城s 在食用这篇博客之前,博主在这里介绍一下其 ...
- ElasticSearch7.3学习(十六)----RestHighLevelClient Java api实现索引的创建、删除、是否存在、关闭、开启
1.写在前面 注意:导入的包区别,不同的包创建索引的方式不同.博主亲身实践,具体体现在createIndexRequest.mapping()里面.读者可自行试验. import org.elasti ...