Display Serial Interface

最近のSoCにはDSI (Display Serial Interface)が外部LCD表示用に普通についています。また、FPGAでも作動出力を利用したIPが利用可能となっています。今回はこのDSIについて調べてみます。


物理特性

物理特性については、MIPI (Mobile Industry Processor Interface)のD-PHYで規格化されています。ハードウェアとしては、信号振幅が+/-0.2Vの差動出力となります。信号線には、クロック、レーンが存在します。したがって、信号本数はクロックx2, レーン(4x2)の10本ということになります。クロックはDDR(Double Data Rate)動作となります。従って、ビットレートの計算は次のようになります。

ビットレート=クロック周波数 * 2 * レーン数


伝送方法

転送方法はクロックに合わせてレーン上にデータを出力します。レーンは、最大4レーンまで増やすことができます。プロトコルには高速で通信するHSモード、低速で通信するLPモードの2つが用意されています。


HS (High Speed) モード

主にビデオ信号を出力するための高速転送モード。全てパケット化されて信号は出力されます。

LP (Low Power)モード

コマンドをやりとりするための低消費転送モード。レーン1でこの信号を送信します。


本ページでは、DSIを用いてどのようにディスプレイへ出力するのを主眼に置き、説明をしていきます。

Videoタイミング

DSIはその名称の通り、表示器へデータをシリアルで送信するためのインターフェースです。そのためにはビデオタイミングを理解する必要があります。ビデオタイミングで必要なパラメータは次のようになります。

水平領域:

Htotal

水平領域のトータル長です。1ラインのピクセル数を示します。

Hsync

水平領域の同期信号数、1ラインの同期信号数となります。

Hback

水平領域のバックポーチ(Horizontal Back Porch)のピクセル数を示します。

Hact

水平領域のアクティブピクセル数を示します。

Hfront

水平領域のフロントポーチ(Horizontal Front Porch)のピクセル数を示します。

垂直領域:

Vtotal

垂直領域のトータル長です。1フレームのライン数を示します。

Vsync

垂直領域の同期信号数、1フレームの同期信号ライン数となります。

Vback

垂直領域のバックポーチ(Vertical Back Porch)のライン数を示します。

Vact

垂直領域のアクティブライン数を示します。

Vfront

垂直領域のフロントポーチ(Vertical Front Porch)のライン数を示します。



1920x1080p, 60Hzの場合の各値:

水平領域:

Htotal: 2200, Hsync: 44, Hback: 148, Hact: 1920, Hfront: 88

垂直領域:

Vtotal: 1125, Vsync: 5, Vback: 36, Vact: 1080, Vfront: 4

リフレッシュレート: 60Hz

ピクセル周波数: 148.5MHz

ピクセル周波数の計算方法: Htotal * Vtotal * リフレッシュレート = 2200 * 1125 * 60 = 148.5M


DSIで必要になる情報

実際にDSIでビデオを出力する際に必要となる情報は次の通りです。


ピクセルクロック周波数:

前述したように、Htotal * Vtoal * リフレッシュレートとなります。1920 * 1080 , 60Hzの場合は、148.5MHzとなります。

ピクセルクロック周波数 = 2200 * 1125 * 60 = 148.5MHz

トータルデータレート:

必要な帯域幅を知るためにトータルデータレートを求めます。これは、ピクセルクロック周波数 * ピクセルサイズということになります。1920 * 1080, 60Hz, 24bppの場合は次のようになります。

トータルデータレート=148.5MHz * 24 = 3564M bit / Sec

レーン毎のデータレート:

レーン毎のデータレートは上記、トータルデータレートをレーン数で除したものとなります。

2レーンだった場合の値は次のようになります。

レーン毎のデータレート:3565M bit / 2 = 1782 M bit /Sec

ビットクロック:

ビットクロックの計算は上記レーン毎のデータレートを2で除したものとなります。これは、DSIのクロックがDDR(Dobule Data Rate)、データの取り込みを立ち上がりエッジ、立ち下がりエッジの両方でサンプルすることからです。

ビットクロック: 1782 M bit / 2 = 891 M bit / Sec