By GRL Team on Jul 31, 2023

DisplayPort FEC(Forward Error Correction 前向纠错)技术浅谈

   

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),以便识别损坏的状况及其最可能预期的结果。

RS(254, 250)格式_FEC 處理 Data Block_可在原始訊息(信息區塊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 編碼過程

DPTx FEC編碼過程——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。 Interleaved FEC Block for 4-, 2-, and 1-lane Configurations——DisplayPort FEC編碼過程

表1. Interleaved FEC Block for 4-, 2-, and 1-lane Configurations

Interleaved FEC Block Transport for 2- and 4-lane Configurations——DisplayPort FEC編碼過程

图3. Interleaved FEC Block Transport for 2- and 4-lane Configurations

Interleaved FEC Block Transport for 1-lane Configuration——DisplayPort FEC編碼過程图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。 FEC Parity Muxer (1 lane config)_奇偶校驗多工器 (FEC Parity Muxer)

图5. FEC Parity Muxer (1 lane config)

  FEC Parity Muxer (2-and 4-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。 FEC Encoder_Interleaving (1 lane config)

图7. FEC Encoder_Interleaving (1 lane config)

  FEC Encoder_Interleaving (2-and 4-lane config)

图8. FEC Encoder_Interleaving (2-and 4-lane config)

  FEC Encoder Code creation (1 lane config)

图9. FEC Encoder Code creation (1 lane config)

  FEC Encoder Code creation (2-and 4-lane config)

图10. FEC Encoder Code creation (2-and 4-lane config)

  FEC Encoder(1 lane config)

圖11. FEC Encoder(1 lane config)

  FEC 編碼器 (FEC Encoder) _FEC Encoder (2-and 4-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。   DP Rx FEC解碼過程

圖13. DPRx FEC解碼過程

 

FEC_DP測試項目

 

Source FEC測項

主要測試FEC功能是否在不同Lane count及Link speed下是否有開啟且正常運作。 Source FEC測項_FEC_DP測試項目 Sink FEC測項

FEC_DPCD address

FEC_DPCD address_FEC_DP測試項目  

结论

越高的传输速率越容易出现传输错误,更容易产生以下错误:脉冲杂讯、串扰、导致符号间干扰的信号失真。所以DisplayPort如果没有FEC前向纠错,在传输DSC影像压缩时,会更容易受到视觉偏差的影响,无论是声音或是影像。 笔者认为FEC非常适合高速传输中突发性的错误排除,且FEC不需要Source和Sink之间的沟通,可以用于从单个Source同时向多个目标发送数据,节省了重传所需的频宽。但要注意的一点是以DisplayPort FEC,如果每个Block超过2个以上的错误讯息,还是需要重新传输档案,确保档案完整性。  

参考文献

VESA DisplayPort (DP) Standard Version 1.4a, Release 19 April, 2018 

作者

GRL 台湾测试工程师 王嘉鼎 Leo Wang

Published by GRL Team Jul 31, 2023

Related Post