By GRL Team on 9월 22, 2023

DisplayPort FEC (Forward Error Correction) 기술에 대한 소개

Granite River Labs, GRL
Leo Wang 

FEC(Forward Error Correction)는 재전송 없이 전송된 데이터에서 제한된 수의 오류를 감지하고 수정하는 데 사용되는 오류 수정 기술입니다. 실제로 방송, 무선 전송, 위성 전송, 케이블 데이터 전송, 이미지 전송이 이에 해당됩니다. 노이즈가 있고 재전송 지연이 용납될 수 없는 곳이라면 FEC가 오류 처리를 위한 최고의 솔루션입니다.

FEC는 10비트 심볼 크기의 RS(254:250) 인코딩을 사용하는 DP v1.4의 새로운 기능으로, FEC 블록당 최대 2개의 RS 심볼(254개의 RS 심볼 포함)의 오류를 수정할 수 있으며, 메인 링크 PHY 계층에 추가할 수 있는 서브 로직 블록 기능으로 8b/10b 인코딩 이후에 발생하며, FEC는 다음과 같은 이유로 다음과 같습니다. FEC는 메인 링크 PHY 계층의 로직 하위 블록 기능으로 링크 기호의 내용과는 관련이 없으므로 SST 모드, MST 모드, 비압축 비디오 전송, DSC 비디오 압축 전송에 적용할 수 있습니다.

FEC 코딩 방식_RS(254, 250)

Reed Solomon은 수정된 데이터에 대해 효과적인 다항식을 생성하는 순방향 오류 정정 코드입니다. 코딩 프로세스는 먼저 여러 지점에서 이러한 다항식의 중복성을 결정한 다음 이를 전송하거나 저장합니다. 수신기가 충분한 값을 올바르게 수신하면 수신된 다항식 값 중 다수가 간섭으로 인해 왜곡된 경우에도 원래 다항식을 복구할 수 있습니다.

DisplayPort는 블록으로 표시되는 리드 솔로몬(254, 250) 인코딩을 사용하며, FEC는 한 번에 하나의 데이터 블록을 처리합니다. 리드 솔로몬(254,250)을 사용하여 원본 메시지(메시지 블록 k)에 추가 패리티 코드를 추가한 다음 전송(코드 블록 n)하여 손상된 상태를 식별할 수 있습니다. 손상된 상태와 가장 가능성이 높은 예상 결과를 식별할 수 있습니다.

 

RS(254, 250)格式_FEC 處理 Data Block_可在原始訊息(信息區塊k)中添加額外奇偶校驗碼_傳輸(代碼區塊n)

그림 1. RS(254, 250) 형식

  • 정보 블록 k: 이 블록에는 특정 개수의 기호를 포함합니다. DisplayPort FEC에서 k는 250개 기호입니다. 
  • 코드 블록 n: 이 블록에는 메시지 블록과 FEC 패리티 코드를 포함합니다. DisplayPort FEC에서 n은 254개 기호입니다.
  • 오류 수정 계수 t: 수정될 수 있는 기호 오류의 수입니다. 패리티 기호 수의 절반입니다. DisplayPort에서는 각 블록이 두 개의 기호 오류를 수정할 수 있으므로 t는 2입니다.

 

DisplayPort FEC 코딩 프로세스

 

DPTx FEC編碼過程——DisplayPort FEC編碼過程

그림 2. DPTx FEC 인코딩 프로세스

송신측에서는 데이터와 함께 중복 오류 수정 코드를 보냅니다. 수신측에서는 추가 중복 위치를 기반으로 필요한 검사를 수행합니다. 데이터에 오류가 없는 것으로 확인되면 실제 오류 정정 코드 생성이 수행됩니다. 그런 다음 데이터가 상위 계층으로 전달되기 전에 중복 코드가 제거되고 최종적으로 수신단으로 전송됩니다. 또한 HDCP 암호화 및 스크램블링에는 FEC 절차가 없습니다.

DPRx 결정 피드백 이퀄라이저(Decision feedback equalizer, DFE) 의 갑작스러운 오류에 대한 전송 내성을 향상시키기 위해 DisplayPort FEC는 양방향 인터리브 인코딩 방법을 사용합니다. 양방향 인터리빙은 표 1에 표시된 대로 레인 수에 따라 다르게 구성됩니다.

1레인 구성의 경우: DPTx는 양방향 인터리빙을 위해 2개의 FEC 블록을 결합해야 하며, 각 블록에는 254개의 RS 기호가 있어 512개의 8b/10b 코드로 구성된 인터리빙된 FEC 블록을 형성합니다. 그림 3에 표시된 것처럼 인터리브된 128개의 FEC 블록마다 하나의 FEC 패리티 마커가 삽입됩니다.

2채널 및 4채널 구성의 경우: DPTx는 256개의 8b/10b 인코딩된 인터리브 FEC 블록을 생성합니다. 2채널 및 4채널 구성의 경우 그림 4에 표시된 것처럼 인터리브된 FEC 블록 256개마다 1개의 FEC 패리티 마크가 삽입됩니다.

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

표1. 4레인, 2레인, 1레인 구성을 위한 인터리브 FEC 블록

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

그림3. 2레인 및 4레인 구성을 위한 인터리브 FEC 블록 전송

Interleaved FEC Block Transport for 1-lane Configuration——DisplayPort FEC編碼過程그림4. 1레인 구성을 위한 인터리브 FEC 블록 전송n

FEC 인코딩은 크게 FEC 패리티 믹서와 FEC 인코더의 두 부분으로 나뉩니다.

 

FEC 패리티 믹서 (FEC Parity Muxer)

FEC 패리티 믹서의 주요 목적은 그림 5와 그림 6과 같이 각 FEC 블록에 FEC 패리티 마커를 삽입하여 각 블록에 FEC 마커가 있고 FEC 코딩 이니시에이터(FEC_DECODE_EN/FEC_DECODE_DIS)를 삽입한 다음 패리티 임시 점유 심볼을 삽입하여 후속 FEC 코딩에 사용하는 것입니다. 임시 자리 표시자 기호는 그림 5와 그림 6에 표시된 것처럼 후속 FEC 인코딩에 사용됩니다.

FEC Parity Muxer (1 lane config)_奇偶校驗多工器 (FEC Parity Muxer)

그림5. FEC 패리티 멀티플렉서(1레인 구성)

 

FEC Parity Muxer (2-and 4-lane config)

그림6. FEC 패리티 멀티플렉서(2레인 및 4레인 구성))

 

FEC 인코더  (FEC Encoder) 

FEC 인코더의 주요 목적은 패리티 멀티플렉서에 의해 삽입 된 FEC 패리티 플레이스 홀더 기호를 삭제 한 후 채널의 모든 기호를 인터리브하고 패리티 코드를 계산 및 추가 한 다음 그림 7 및 8과 같이 패리티 코드를 인터리브하는 것입니다. 패리티 코드 인터리빙을 완료 한 후 그림 9 및 10과 같이 4 개의 패리티 코드에서 5 개의 패리티 바이트를 계산하고 Disparity Adjustment 비트를 추가합니다. 그리고 그림 9와 그림 10에서와 같이 디스패리티 조정 비트를 추가하고 마지막으로 인코딩 된 패리티 검사 코드를 원래 멀티플렉서에 의해 삽입 된 플레이스 홀더 위치에 넣어 그림 11과 그림 12에서와 같이 FEC 코드를 완성합니다.



FEC Encoder_Interleaving (1 lane config)

그림7. FEC Encoder_Interleaving (1레인 구성)



FEC Encoder_Interleaving (2-and 4-lane config)

그림8. FEC Encoder_Interleaving (2레인 및 4레인 구성)

 

FEC Encoder Code creation (1 lane config)

그림9. FEC 인코더 코드 생성 (1레인 구성)

 

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

그림10. FEC 인코더 코드 생성 (2레인 및 4레인 구성)

 

FEC Encoder(1 lane config)

그림11. FEC 인코더 (1레인 구성)

 

FEC 編碼器 (FEC Encoder) _FEC Encoder (2-and 4-lane config)

그림12. FEC 인코더 (2레인 및 4레인 구성)

 

DPRx

DPRx의 FEC 동작은 Tx의 동작과 반대이며, FEC 디코딩이 활성화되면 메인 링크 PHY 계층 로직 하위 블록이 FEC 패리티 코드와 시차 디코딩을 제거한 다음 8b/10b 디코딩 후 이전에 제거된 공간에 패리티 자리 표시자를 삽입하여 디코딩 작업을 완료하고 HDCP 암호화 및 스크램블링을 위한 FEC 절차가 없습니다. 

 

DP Rx FEC解碼過程

그림13. DPRx FEC解碼過程

 

FEC_DP테스트 프로젝트

Source FEC 항목

주로 FEC 기능이 켜져 있는지, 다양한 차선 수 및 링크 속도에서 정상적으로 작동하는지 테스트합니다.

Source FEC測項_FEC_DP測試項目

Sink FEC 항목

FEC_DPCD 주소

FEC_DPCD address_FEC_DP測試項目

결론

전송 속도가 높을수록 전송 오류가 발생하기 쉽고 임펄스 노이즈, 누화 및 기호 간 간섭으로 이어지는 신호 왜곡과 같은 오류가 발생하기 쉽습니다. 따라서 DisplayPort에 FEC 순방향 오류 수정 기능이 없으면 사운드든 이미지든 DSC 이미지 압축을 전송할 때 시각적 편차가 발생하기 더 쉽습니다.

저자는 FEC가 고속 전송에서 갑작스러운 오류를 제거하는 데 매우 적합하다고 생각하며 FEC는 Source와 Sink 간의 통신이 필요하지 않으며 단일 Source에서 여러 대상으로 동시에 데이터를 전송하여 비용을 절약하는 데 사용할 수 있습니다. 그러나 DisplayPort FEC를 사용하면 블록당 오류 메시지가 2개 이상인 경우 파일 무결성을 보장하기 위해 파일을 재전송해야 한다는 점에 유의해야 합니다.

 

References

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

 

Author

Leo Wang, Test Engineer, GRL Taiwan

Published by GRL Team 9월 22, 2023