CXP协议的传输层介绍 8b/10b编码

本文详细介绍了8b/10b编码在高速串行通信中的重要性,包括其目的、编码规则(如D.X.Y和K.X.Y表示法)、控制字符(如K码中的comma)以及在CXP协议中的应用实例。还提到如何实现8b/10b编码,以及确定字节边界的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

8b/10b编码与K码

upconnection 和downconnection均使用8b/10b编码,因此我们先简单回顾一下8b/10b吧

8B/10B编码被广泛应用到高速串行总线,如IEEE1394b、SATA、PCI-Express、Infini-band、FiberChannel、XAUI、RapidIO、USB 3.0、JESD204B、CXP等几乎所有高速串行协议。8B/10B编码将待发送的8位数据转换成10位代码组,其目的是保证直流平衡,避免出现长时间的0或者1,避免有效信号被滤除。

8bit原始数据可以分成两部分:低位的5bit EDCBA(设其十进制数值为X)和高位的3bit HGF(设其十进制数值为Y),可以记为D.X.Y或K.X.Y,其中D.X.Y表示有效数据,K.X.Y表示控制字符。

另外,8B/10B编码中还用到12个控制字符,他们可以作为传输中帧起始、帧结束、传输空闲等状态标识,与数据字符的记法类似,控制字符一般记为K.X.Y。8bit数据有256种,加上12种控制字符,总共有268种。10bit数据有1024种,可以从中选择出一部分表示8bit数据,所选的码型中0和1的个数应尽量相等。8B/10B编码中将K28.1、K28.5和K28.7等作为K码的控制字符,称为“comma”。在任意数据组合中,comma只作为控制字符出现,而在数据负荷部分不会出现,因此可以用comma字符指示帧的开始和结束标志,或始终修正和数据流对齐的控制字符。

DC均衡 DC-balanced

DC banlance表示0和1的个数接近,出于2个目的:1、避免长1长0,这样信号从频谱上看是比较干净的,利于信号的传输;2、保证接收端可以通过数据正确恢复时钟(clock recovery)

不一致性 Disparity

使用 “不一致性(Disparity)”来描述编码中"1"的位数和"0"的位数的差值(1个个数减去0的个数),8b/10b编码仅有"+2"(  "0"比"1"多两个)、"0"( "0"与"1"个数相等)以及"-2"("1"比"0"多两个)这三种状况,这是因为编码由3b/4b 与5b/6b编码组成,他们各自的dispararity都只会有1,0,-1的数值,累加之后就只会有+2,0,-2 三种情形。

运行不一致性 Running Disparity

上述不一致性的说法针对的是一个静态的单10bit编码,会有+2,0,-2三种情形,为了保证DC均衡,我们要保证长时间的累计编码不一致性要接近于0,为了保证这个特性,每个十进制码会对应RD+和RD- 两组编码,RD-对应+2 or 0,RD+ 对应 -2 or 0,Next RD值依赖于Current RD以及当前6B码或者4B码的Disparity。根据Current RD的值,决定5B/4B和 3B/4B编码映射方式,编码映射表如下图所示:

8b/10b编码在CXP 传输层的应用举例

CXP的数据传输全部使用8b/10b编码,每4个10bit编码成为1个word,除了低速数据传输中的trigger触发数据包需要占用6个字符。每个word中对应的4个字符分别成为P0/1/2/3,传输时P0先完成传输,接收端需要先接收对齐控制码来找到正确的边界,然后解析数据。

下表是CXP协议中对于控制码的应用规则。

下图是IDLE word对应的传输,IDLE是CXP处于空闲状态时,总线上必须传输的一组字符,对于高速数据传输来说,每隔99个word应当发送一次IDLE,对于低速传输每隔9999个word应当传输一次IDLE。IDLE对应的K码分别为

根据之前的编码对应表格,我们来分析一下K28.5对应0011111010(因为初始的RD必须是-1), k28.1对应1100000110(RD应该等于+1,从而保证DC平衡)。

那么具体如何实施8b/10b 编码呢?

1、参考原始专利自主编写;

2、参考 open cores https://opencores.org/projects/8b10b_encdec;VHDL

3、参考 https://github.com/fransschreuder/8b10b_VHDL;VHDL

4、参考 http://asics.chuckbenz.com/#My_open_source_8b10b_encoderdecoder ; Verilog

还有一个问题,具体实施中,如何确定byte的boundry呢?即如何对齐呢?

1、利用K28.5做对齐,在接收端的alignement 对齐逻辑中,反复 滑动bit,直到找到K28.5的10bit pattern;

<think>嗯,用户现在问的是常用的工业相机接口有哪些。我需要先回顾一下之前的历史对话,看看有没有相关的上下文。之前用户问的是关于用CSBD方法设计2.5D缺陷检测软件的构件获取,现在这个问题是关于工业相机的接口,看起来用户可能是在继续开发那个软件的过程中,需要选择合适的硬件接口,所以了解不同接口的特点和适用场景很重要。 首先,我需要确定常见的工业相机接口类型。常见的应该包括USB3.0、GigE、Camera Link、CoaXPress,还有MIPI之类的。可能还有一些其他的比如HSLink或者新兴的USB3 Vision,不过这些可能属于子分类或者标准协议。 接下来,每个接口的关键参数需要列出,比如传输速度、线缆长度、是否支持PoE、多相机同步能力等。比如USB3.0的理论速度是5Gbps,实际可能到400MB/s,适合中速应用;GigE是千兆网,速度1Gbps,但线缆长,适合远距离;Camera Link分不同配置,速度更高,但需要帧抓取器;CoaXPress则速度更快,可能到12.5Gbps,同时支持长距离和PoC(供电)。 然后要考虑用户的应用场景,用户是做2.5D缺陷检测,可能需要高分辨率、高速的图像采集,所以像CoaXPress或Camera Link可能更合适,但也要看预算和系统复杂度。如果用户需要长距离布线,GigE可能更好,而如果是紧凑型设备,USB3 Vision可能更方便。 另外,用户可能还关心接口的兼容性和开发难度。比如USB3 Vision基于USB3.0,有统一的协议开发起来可能更简单;而Camera Link需要专门的硬件支持,可能需要更多的开发资源。 还要注意一些新兴的接口,比如10GigE,或者USB4,但可能在工业领域普及度还不高。同时,是否需要多相机同步,比如在检测系统中多个相机协同工作,这时候接口的多相机同步能力就很重要,像GigE通过PTP协议可以做到,而CoaXPress也有同步机制。 可能用户在选择时还会考虑成本因素,比如GigE的线缆比较便宜,而Camera Link和CoaXPress的硬件成本更高。另外,供电方式,比如PoE或PoC,可以简化布线,减少额外的电源需求。 总结来说,我需要把常见的接口列出,详细说明每个的特点、适用场景、优缺点,帮助用户根据他们的具体需求(如速度、距离、成本、同步需求)做出选择。同时,可能需要补充一些实际应用中的例子,比如在检测系统中,高速应用选哪个,长距离选哪个,方便用户理解。</think>以下是工业相机常用接口的对比解析,包含技术参数、应用场景及选型建议: --- ### 一、主流接口技术对比表 | 接口类型 | 理论带宽 | 有效传输速率 | 线缆长度限制 | 供电能力 | 多相机同步方案 | 典型应用领域 | |-------------------|------------------|-----------------|---------------|----------------|------------------------|-----------------------| | **USB3 Vision** | 5 Gbps | 400 MB/s | ≤5m | USB供电(4.5W) | 软件触发同步 | 实验室检测、桌面设备 | | **GigE Vision** | 1 Gbps/10 Gbps | 120 MB/s(千兆) | ≤100m(光纤) | PoE++(90W) | IEEE 1588 PTP精密时钟 | 产线监控、多机部署 | | **Camera Link** | 2.04-6.8 Gbps | 850 MB/s(Full) | ≤10m | 需独立供电 | RS-422硬件触发 | 高速运动检测(>1000fps) | | **CoaXPress 2.0** | 12.5 Gbps/lane | 1.25 GB/s(4通道)| ≤130m(同轴) | PoC(13W) | CXP-Trigger硬件同步 | 4K/8K高分辨率检测 | | **MIPI CSI-2** | 6 Gbps/lane | 600 MB/s(4通道) | ≤30cm | 需独立供电 | 同步信号线直连 | 嵌入式设备、移动机器人| --- ### 二、接口技术深度解析 #### 1. **USB3 Vision** - **优势** - 即插即用,兼容标准USB接口(物理接口Type-A/B) - 支持UVC协议免驱开发开发成本低 - 典型应用:Basler acA1920-150um(200万像素@150fps) - **局限** - 传输距离短(扩展需中继器) - 抗干扰能力弱(工业环境需电磁屏蔽) #### 2. **GigE Vision** - **关键技术** - **PoE++供电**:通过CAT6A线缆实现90W电力传输 - **Jumbo Frame**:支持9000字节大包传输(提升有效带宽利用率至95%) - **多播协议**:实现1个相机数据同时传输到多个终端 - **性能公式** 最大分辨率计算: $$ \text{像素时钟} = \frac{\text{带宽} \times 8}{10 \times \text{像素位数}} $$ 例如:10GigE传输12bit像素,最高支持$ \frac{10G \times 8}{10 \times 12} \approx 666MP/s $ #### 3. **Camera Link** - **配置模式** | 模式 | 数据通道数 | 最大带宽 | 典型相机型号 | |------------|------------|-----------|--------------------------| | Base | 1 | 2.04 Gbps | FLIR GS3-U3-23S6M-C | | Medium | 2 | 4.08 Gbps | JAI Apex 51.2M | | Full | 3 | 6.8 Gbps | Teledyne Dalsa Spyder3 8k| - **信号编码** 采用LVDS差分传输,时钟嵌入技术(CDR)保障信号完整性 #### 4. **CoaXPress** - **拓扑结构** 支持星型/菊花链连接,单主机可接4台相机(通过同轴交换机扩展) - **传输模型** $$ \text{有效带宽} = N_{通道} \times 12.5Gbps \times \frac{8}{10} \quad (\text{8b/10b编码损耗}) $$ --- ### 三、选型决策树 ```mermaid graph TD A[需求分析] --> B{速度要求?} B -->|>500MB/s| C[CoaXPress/CameraLink] B -->|<500MB/s| D{传输距离?} D -->|>20m| E[GigE Vision] D -->|<20m| F{需要供电集成?} F -->|是| G[USB3 Vision/PoE] F -->|否| H[MIPI CSI-2] ``` --- ### 四、工业现场部署建议 1. **电磁干扰环境** - 优先选择光纤传输的10GigE方案(如FLIR Oryx 10GigE) - 为CoaXPress接口添加磁环滤波器 2. **多相机同步场景** - 采用GigE Vision的IEEE 1588 PTP协议(同步精度<1μs) - 使用Camera Link的硬件触发线实现纳秒级同步 3. **移动设备集成** - 嵌入式系统选用MIPI接口(如NVIDIA Jetson + IMX477传感器) - 需要热插拔时选择USB3 Vision(支持带电插拔) --- ### 五、未来趋势 - **USB4 Vision**:集成Thunderbolt 3协议,带宽达40Gbps - **HSLink**:SMPTE标准,单线传输25Gbps(兼容HDMI物理层) - **AI相机接口**:直接传输推理结果(如GenICam的SFNC扩展协议) 根据具体检测场景的帧率、分辨率、环境复杂度等参数,结合成本预算进行接口选型,建议通过实际带宽测试工具(如FLIR的SpinView)验证系统稳定性。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值