I.S.X

製品紹介

DisplayPort FEC対応

1.     FECの必要性

最近のDisplayPortの伝送周波数は8Gbpsを超えています。ケーブルで発生する伝送エラーにより、Displayにノイズが発生します。特にDSC(画像圧縮)モードで送信していると、Slice全体がエラーになるため、画面のノイズが大変目立ちます。DSCについては、以前に実装したときの解説をしています。(http://www.isx.co.jp/jp/recruit/isx_report/441/

伝送エラーを軽減するための方法として、DisplayPortでは前方誤り訂正FEC(Forward Error Correction)を採用します。

予め伝送データに誤り訂正用の符号を追加して、受信側で誤りがあれば可能な限り訂正を行う技術です。

今回は、弊社DisplayPort IPにVESAで定められたFECの回路を追加しました。

2.     FEC追加によるDisplayPort IPの構造

図1 FEC対応したDisplayPortの回路構FECの回路ブロックは図1の黄色の部分です。FEC Parity MultiplexとFEC Encoderの2ブロックに分かれています。

  • 前半のFEC Parity Multiplexは、誤り訂正符号を送信する帯域を追加するためdummy dataを追加する回路です。
    250 symbolごとに6 symbolの符号を追加するため、2.4%ぐらいの帯域をFECに使用します。
  • 後半のFEC Encoderでは誤り訂正符号追加回路の本体です。

FEC Encoderは図2のような構成になっています。この絵はVESAのDisplayPort 1.4bの規格書からの引用です。(2lane, 4laneの場合です。1laneの場合は少し異なる。)

DisplayPort FECでは、誤り訂正にReed-Solomon (254, 250)を採用します。

1 Symbolは10bitです。8b10b変換後の10bit Symbolに対して誤り訂正符号を計算します。

図2で説明しているのは以下の作業です。

  • RS(254,250)なので、250 Symbolごとに4 Symbolの誤り訂正符号を計算する。
  • 4 FEC Symbol(40bit)を8b10b変換して50bitに変換。
  • 誤り訂正符号の後ろに来る信号の8b10b parityと整合をとるためCorrection Data Adjust(CD_ADJ)を追加する。
    (Running Parity Errorにならないよう前後辻褄合わせ用符号を追加する)
  • 合計で6 Symbol(60bit)を追加して、全体では250 symbol + 6 Parity Symbolを伝送線路に出力します。

2lane, 4laneの時は、奇数と偶数のlaneでSymbolを入替ることで、誤り耐性を上げています。

1laneの時はレーン間で入替できないため、500 symbolを奇数偶数に分けて、それぞれにRS(254,250)の符号を計算します。

3.     FEC回路をDisplayPort IPに追加する

FEC回路を実現するため、従来のDisplayPort回路から大きく変更が必要なのが8b10b encoderです。

これまではXilinx(AMD)のTransceiver内蔵Hard Macroを利用していましたが、今回は自作する必要があります。

FECの計算回路自体は、数式の通りに実装します。

1 Clockで1 Symbolで処理する場合810MHzになりFPGAでは実現無理です。実際には1Clock 4 Symbolで処理して202.5MHzで回路を動作させます。

FPGAがUltrascale+であれば、202.5MHzの速度は問題ありません。

1 Clockで4 Symbolを処理しますが、流れているデータが4 Symbol境界に載っている保証は無いため、シフト処理等で回路が複雑になります。

FECの回路増加は4laneあたり5300LUTぐらいです。複雑さに比べて回路は小さいです。

4.     iM1671での実機動作

伝送エラーが無いとFEC無効の場合との違いが無いため、DisplayPort IPにエラー挿入回路を追加してFECの効果を確認します。

FEC OFFの時にエラー挿入すると、DSCのエラー画像と同じ画像ノイズが出ます。FEC ON時に同じようにエラーを挿入しても、ノイズが出ないので、FECが働いていることを確認できます。

ノイズが出ている映像はDSCの時と同じ(http://www.isx.co.jp/jp/recruit/isx_report/441/)なので省略します。

5.     結論と今後

現在DisplayPort 2.1のFPGA向けIPを設計しているのですが、DP2ではFECの機能がDisplayPort Protocolにきれいに組み込まれています。

DisplayPort1.4のFECは、既存のシステムに頑張って仕様を追加した感があり、後から仕様を変更するのは大変なのだと感じられました。

FECを有効にしたDisplayPort送信が可能になりました。

現時点ではiM1671の標準機能ではありません。DisplayPort FECに興味がある方、連絡をお待ちしています。

pagetop