Coaxpress

本文介绍了FPGA实现Coaxpress协议开发案例。先介绍了Coaxpress协议,它是高速成像标准,用于多种领域;接着阐述系统组成,包括Device、Host、link等概念及数据传输情况;还说明了协议用K码识别对齐,介绍packet类型;最后展示了协议FPGA实现的调试截图。

加入头条有段时间了,一直想写点什么,这次就从本人的工作开始,介绍一些和FPGA 相关的应用开发案例。第一期介绍一下fpga 实现coaxpress 协议开发。

Coaxpress 协议介绍

介绍Coaxpress 协议之前,先提下JIIA ,日本工业成像协会 (JIIA) 是一家总部设在日本的组织旨在领导工业成像技术创新。JIIA为与工业成像相关的组织推广全球社区,从而促进全球工业成像标准和产品的开发。由于日本工业成像公司占据广泛的市场,JIIA获得了独特的优势,成为了工业成像技术的领先开发商。这些类别包括工业相机、输入设备、图像处理器、图像处理软件、光学仪器、照明设备以及测量和分析机器。

CoaXPress (CXP) 是全球领先的专业和工业成像应用中的高速成像标准,应用包括机器视觉、医学成像、生命科学、广播和国防。

CoaXPress是一个将摄像头连接到桢抓板的接口。它结合了同轴电缆的简易性和最先进的高速串行数据技术,这实现了每根电缆高达12.5 Gbps数据速率,以及同一电缆中的设备控制和电源。CoaXPress是一种点对点可扩展接口。相机和帧抓板之间的物理介质是75 Ω同轴电缆。

系统介绍

1.Coaxpress 系统大概如下:

这里有几个概念,Device/Host/link

Device是相机端,面帧/线阵相机,产生图像数据,通过connection 送到host 端,同时受host 控制

Host 是主控端,接受device的mulit/single link data,,数据率可以达到12.5Gbps,恢复图像数据,另外通过link 下发控制trigger 信号,以及访问device 内部的bootstrap & manufacturer-specific register space ,数据率40.3Mbps/20.83Mbps,再就是通过connection 为device 提供max13W的供电能力。

link 是有单个或者多个connection 组成的数据传输链路,其中每个device 必须有一个master connection,另外的extension connection option。connection 是由两端的接插件BNC/Micro-BNC/DIN1.0/2.3和75Ω的电缆组成,最高速度下可以传输40m

 

coaxpress 链接示意图

2.cxp 里面的high speed 数据一般是由device 这边发起,low speed 数据 由host 这边发起。device 主控芯片FPGA transceiver 输出高速信号经过一个均衡器输出到BNC/micro-BNC,同时这个均衡器输出一个LF_OUT信号给FPGA ,这个LF_OUT 信号就是low speed 信号。这个均衡器一般用的是microchip 的EQCO系列芯片。相应的在host 这边也有一个均衡器,输出高速信号,同时也会接受LF_IN。

 

coaxpress 数据流

3.协议用一组K 码来做识别和对齐,无论高速还是低速信号,如下图。数据传输前都是需要经过8B/10B 编码,以word 为单位组织。

 

K code

4.packet 类型主要有以下几种:

 

coaxpress packet type

  • I/O : host 发起的trigger以及device 返回的ack
  • stream : 图像数据
  • control:host 发起的读写控制命令,Test /heartbeat

我们以一个stream packet 大概介绍下其组成结构,如下图:

 

stream data packet

首先是发送K27.7x4 标识packet 起始,0x01 是表示这是stream data packet. stream ID 是当前传输的stream ID,在multi-streams 中来区别不同的数据。packet Tag 是一个包的循环计数。DsizeP是stream data word length ,后面紧跟着就是数据。同时需要对数据做crc ,附在数据后。最后发K29.7 x4 表示packet 结束。

上面对Coaxpress 数据传输部分做了大概介绍。还有很多细节,比如 热插拔/识别,上电速度协商,支持GenICam等。

协议FPGA实现

下面截几张图show 下自己写的coaxpress 调试:

 

device & host

image header packer

 

上图是device cxp device 发出来的数据以及K_ind,可以看到,没有数据时,发送的BC3C3CB5 idle code 后面7C 是stream marker 01是image header ,这是在一帧开始时发出来的。

 

image line marker

这是image 一行数据发送的过程,在行前面有个line marker

 

host 解析恢复出来的图像数据

上图是host cxp 协议根据transceiver 过来的数据解析,恢复V/H data 信号。

CoaXPress (CXP) 是一种高速串行通信协议,专为机器视觉和工业成像应用设计。CoaXPress 2.0 是该标准的更新版本,提供了更高的数据传输速率、增强的功能和更广泛的兼容性。 ### CoaXPress 2.0 的主要特性 CoaXPress 2.0 支持多通道操作,允许同时传输多个数据流。每个通道可以独立配置,以适应不同的应用需求。这种灵活性使得 CoaXPress 2.0 能够支持从简单的单摄像头设置到复杂的多摄像头系统[^1]。 ### 数据传输速率 CoaXPress 2.0 的最大数据传输速率显著提高,每个通道可达 12.5 Gbps,这比前一代 CoaXPress 1.1 的 6.25 Gbps 提高了一倍。这意味着即使在高分辨率和高帧率的应用场景下,也能保证流畅的数据传输[^1]。 ### 电缆和连接器要求 CoaXPress 2.0 使用同轴电缆进行数据传输,推荐使用的电缆类型包括 75Ω 的 RG-59 或类似的高性能电缆。这些电缆能够支持长距离传输,同时保持信号完整性。对于连接器,通常采用 BNC 或 Micro-BNC 接口,它们提供了可靠的物理连接和良好的电磁干扰防护[^1]。 ### 电源供应 除了数据传输外,CoaXPress 2.0 还支持通过同一根电缆为设备供电(Power over CoaXPress, PoCXP)。这一特性减少了布线需求,简化了系统设计。PoCXP 可以提供高达 13W 的功率,足以满足大多数工业相机和其他外围设备的需求[^1]。 ### 兼容性和扩展性 CoaXPress 2.0 向下兼容 CoaXPress 1.x 版本,这意味着新旧设备可以在同一系统中共存。此外,CoaXPress 2.0 还引入了新的功能,如支持多播传输和改进的错误检测机制,这些都增强了系统的可靠性和效率[^1]。 ### 应用领域 CoaXPress 2.0 广泛应用于需要高速数据传输和高可靠性的工业自动化、医疗成像、安防监控等领域。其高带宽和低延迟特性使其成为实时图像处理和分析的理想选择[^1]。 ### 示例代码 以下是一个简单的 Python 示例,展示如何使用 CoaXPress 2.0 进行数据传输的模拟: ```python class CoaXPressDevice: def __init__(self, channel_count=1, bitrate=12.5e9): self.channel_count = channel_count self.bitrate = bitrate def transmit_data(self, data): print(f"Transmitting {len(data)} bytes of data at {self.bitrate / 1e9} Gbps over {self.channel_count} channels.") # Simulate data transmission return "Data transmitted successfully" # 创建一个 CoaXPress 设备实例 device = CoaXPressDevice(channel_count=4, bitrate=12.5e9) # 模拟传输数据 result = device.transmit_data(b"Sample image data") print(result) ``` ###
评论 7
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值