Granite River Labs, GRL Leo Wang 王嘉鼎
前向纠错(FEC)是一种纠错技术,用于检测和纠正传输数据中有限数量的错误,而无需重新传送。现实包括广播、无线电传输、卫星传输、电缆数据传输,以及影像传输。任何有杂讯和不能容忍重传延迟的地方,FEC 都是错误处理的首选解决方案。
FEC 为 DP v1.4新增功能,使用RS(254:250)编码方式,符号大小为10 bits,能够纠正每个 FEC 区块(包含254个 RS 符号)最多2个 RS 符号的错误,是一种可添加到 Main-Link PHY 层的子逻辑块功能,发生在8b/10b 编码之后,因为 FEC 是 Main-Link PHY 层逻辑子块功能,且与 Link symbols 的内容无关,所以 FEC 适用于 SST 模式、MST 模式、未压缩的影像传输及 DSC 影像压缩传输。
FEC編碼方式_RS(254, 250)
Reed Solomon 是一种前向错误更正的编码,对校正过的资料产生的有效多项式。编码过程首先在多个点上对这些多项式求出冗余,然后将其传输或者储存。当接收器正确地收到足够的数值后,它就可以恢复原来的多项式,即使接收到的多项式上有很多数值被干扰失真。
DisplayPort 使用 Reed Solomon (254, 250)编码,以 Block 呈现,FEC 一次处理一个 Data Block。而使用 Reed Solomon (254,250),可以在原始讯息(信息区块k)中添加额外的奇偶校验码,从而传输(代码区块n),以便识别损坏的状况及其最可能预期的结果。
图1. RS(254, 250)格式
- 信息区块k:该区块包含特定数量的符号。在 DisplayPort FEC中,k是250个symbols。
- 代码区块n:包括信息区块和FEC奇偶校验码。在DisplayPort FEC中,n是254个symbols。
- 纠错因子t:是可以纠正符号错误的数量。奇偶校验符号数量的一半。在DisplayPort中,t为2,因为每个区块可以纠正两个符号错误。
DisplayPort FEC 編碼過程
图2. DP Tx FEC编码过程
发送端会将冗余纠错码与数据一起发送。接收端根据附加的冗余位置执行必要的检查。如果发现数据没有错误,就会执行生成实际的纠错码。然后再将数据传递到上层之前删除冗余码,最后传送至接收端。另外,HDCP加密及加扰皆不会有FEC程序。 为了提高对DPRx决策反馈等化器(Decision feedback equalizer, DFE)突发错误的传输免疫力,DisplayPort FEC使用双向交错的编码方式。双向交错会因lane数的不同而有不同的配置如表1: 对于1个通道配置: DPTx需组合两个FEC区块才能进行双向交错,每个区块有254个RS符号,形成一个由 512个8b/10b编码组成的交错FEC块,。而每128个交错FEC区块会插入1个FEC奇偶校验标记,如图3。 对于 2 和 4 通道配置: DPTx生成由256个8b/10b编码的交错FEC区块。对于 2 和 4 通道配置,而每256个交错FEC区块会插入1个FEC奇偶校验标记,如图4。表1. Interleaved FEC Block for 4-, 2-, and 1-lane Configurations
图3. Interleaved FEC Block Transport for 2- and 4-lane Configurations
图4. Interleaved FEC Block Transport for 1-lane Configuration
FEC编码主要分为两个部分,奇偶校验多工器 (FEC Parity Muxer)和FEC编码器 (FEC Encoder):奇偶校验多工器 (FEC Parity Muxer)
奇偶校验多工器主要用途为插入奇偶校验的标记(FEC Parity Marker)在每一个FEC Block中, 让每个Block都有FEC的标记, 并插入FEC编码启动程序(FEC_DECODE_EN/FEC_DECODE_DIS), 最后插入奇偶校验临时占位符号, 临时占位的符号会在之后FEC编码时使用,如图5,图6。图5. FEC Parity Muxer (1 lane config)
图6. FEC Parity Muxer (2-and 4-lane config)
FEC 编码器 (FEC Encoder)
FEC 编码器其主要目的是进行 FEC 编码,先删除奇偶校验多工器插入的 FEC 奇偶校验占位符号后,将通道内的所有符号进行交错,计算并加入奇偶校验码,其后将奇偶校验码也进行交错,如图7,图8。完成奇偶校验码交错后,将4个奇偶校验码计算出5个奇偶校验位元组(bytes)并加入视差调整位元(Disparity Adjustment),如图9,图10。最后将编码后的奇偶校验码放至原本多工器插入的占位符号位置中,完成 FEC 标码,如图11,图12。图7. FEC Encoder_Interleaving (1 lane config)
图8. FEC Encoder_Interleaving (2-and 4-lane config)
图9. FEC Encoder Code creation (1 lane config)
图10. FEC Encoder Code creation (2-and 4-lane config)
圖11. FEC Encoder(1 lane config)
圖12. FEC Encoder (2-and 4-lane config)
DPRx
DPRx其FEC行為與Tx相反,當啟動FEC解碼時,Main-Link PHY層邏輯子塊會先把FEC奇偶校驗碼及視差調整解碼移除,經由8b/10b Decoding後,將先前移除之空位插入奇偶校驗佔位符號,完成解碼的動作,HDCP加密及加擾皆不會有FEC程序,如圖13。圖13. DPRx FEC解碼過程