r lvds/dvi を使用するデジタル ディスプレイ ip デザ...
TRANSCRIPT
XAPP928 (v1.1) 2007 年 4 月 19 日 japan.xilinx.com 1
© 2007 Xilinx, Inc. All Rights Reserved. XILINX、 Xilinx ロゴ、 およびその他本文に含まれる商標名は Xilinx の商標です。 本文書に記載されている 「Xilinx」、 ザイリンクスのロゴ、 およびザイリンクスが所有する製品名等は、 米国 Xilinx Inc. の米国における登録商標です。 その他に記載されている会社名および製品名等は、 各社の商標または登録商標です。保証否認の通知 : Xilinx ではデザイン、 コード、 その他の情報を 「現状有姿の状態」 で提供しています。 この特徴、 アプリケーシ ョ ンまたは規格の一実施例としてデザイン、 コード、 その他の情報を提供しておりますが、 Xilinx はこの実施例が権利侵害のクレームを全く受けないという ことを表明するものではありません。 お客様がご自分で実装される場合には、 必要な権利の許諾を受ける責任があります。 Xilinx は、 実装の妥当性に関するいかなる保証を行なう ものではありません。 この保証否認の対象となる保証には、 権利侵害のクレームを受けないことの保証または表明、 および市場性に対する適合性についての黙示的な保証も含まれます。
はじめに デジタル ディ スプレイは LCD、 プラズマ、 リ アプロジェクシ ョ ン TV テク ノ ロジや携帯ハンドセッ トおよびオートモーティブ向けの小型ディ スプレイを含む、 多数のアプリ ケーシ ョ ンで構成され、 急成長
を遂げている市場です。 デジタル画像処理によって表示される画像の全体的な画質を向上させ、 製品の差別化を図るこ とができます。
ザイ リ ンクスでは、この市場向けの製品開発をサポートするため、ディ スプレイ パネル アプリ ケーシ ョン用のリ ファレンス デザイン IP コアを、 Spartan™-3E ディ スプレイ開発ボードに基づいて開発しました。 FPGA のディ スプレイ ソ リ ューシ ョ ンは、図 1 に示すよ うに、DVI 入力インターフェイス、色温度調整 (CTC)、 正確なガンマ補正 (PGC)、 イ メージ ディザリ ング エンジン (IDE)、 および低電圧差動信号送信 (LVDS TX) または DVI TX 出力インターフェイスで構成されます
このアプリ ケーシ ョ ン ノートでは、Spartan-3E ディ スプレイ開発ボードについて説明します。 また、DIPスイ ッチ設定について詳細に説明し、 各 IP ブロ ッ クのリ ソース数も記載しています。
IP ブロックのサマリ
表 1 で、 Spartan-3E ディ スプレイ開発ボードの主要な IP ブロ ッ クについて説明します。
アプリケーシ ョ ン ノート : Spartan-3E FPGA
XAPP928 (v1.1) 2007 年 4 月 19 日
LVDS/DVI を使用するデジタル ディスプレイ パネル IP のリファレンス デザインSpartan-3E ディスプレイ開発キッ ト HW-SPAR3E-DISP-DK-UNI-G 向け
本資料は英語版 (v1.1) を翻訳したものです。 英語の更新バージ ョ ンがリ リースされている場合には、 最新の英語版を必ずご参照ください。
R
図 1 : ザイリンクス ディスプレイ パネル IP リファレンス デザインのフロー
DVIInterface
ColorTemperature
Correction(CTC)
PreciseGamma
Correction(PGC)
ImageDitheringEngine(IDE)
LVDS orDVITX
Interface
FlatPanel
X928_01_040907
表 1 : IP ブロックの概要
ブロック名 説明
DVI レシーバ DVI 形式の入力ビデオを受信
CTC (色温度調整) フレーム全体の入力 RGB 値をユーザーが設定した色温度に調整
PGC (正確なガンマ補正) ピクセルのス ト リームを受け取り、 必要なガンマ値に処理した後、 修正
後のピクセル ス ト リームを次のモジュールに送信
IDE (イ メージ ディザリング エンジン)
PGC モジュールからのガンマ補正されたピクセル ス ト リームを 3 x 10 ビッ トで受け取って、 ビデオ画質を低下させるこ とな く、 3 x 8 ビッ トのピクセル ス ト リームにディザリ ングする
ディ スプレイ インターフェイス
LVDS インターフェイスを介して DVI ト ランス ミ ッ タが LCD モジュールを直接駆動できるよ うにする
2 japan.xilinx.com XAPP928 (v1.1) 2007 年 4 月 19 日
IP ブロックの サマリR
ユーザー スイッチおよびプッシュ ボタンの設定本書でのスイ ッチ設定は、 Spartan-3E ディ スプレイ開発ボード上でユーザー設定の DIP スイ ッチ ブロ ッ クで行います (図 2)。
イ メージ ディザリ ング エンジンは、 プッシュ ボタンの設定で調整されます。
• 0 : プッシュ ボタンを押す場合に使用
• 1 : プッシュ ボタンを放す場合に使用
DVI 受信 (RX) インターフェイス ブロック
このリ ファレンス デザインでは、DVI RX インターフェイスを使用する必要があ り ます。 DVI オプシ ョンの設定については、 『ディ スプレイ キッ ト ユーザー ガイ ド』 を参照してください。 表 3 に、 DVI RXインターフェイスを使用する際の DIP スイ ッチの設定を示します。
図 2 : ディスプレイ開発ボードのスイッチ設定
表 2 : DIP スイッチのユーザー設定
DIP スイッチ 機能
SW4 DVI RX。 常に 「ON」 にする。
SW3、 SW2 PGC (正確なガンマ補正) の制御• On、 On (00) : ガンマ 2.2/2.2 (1.00)• On、 Off (01) : ガンマ 2.4/2.2 (1.09)• Off、 On (10) : ガンマ 2.6/2.2 (1.18)• On、 On (11) : PGC 無効
SW1、 SW0 CTC (色温度調整) の制御• On、 On (00) : バイパス• On、 Off (01) : 6500K• Off、 On (10) : 8500K• On、 On (11) : 10000K
User Set DIPSwitch Block
User Push Button Switch Settings
(PSW 2, 1, 0 are above)
X928_02_041907
CTC IP ブロック
XAPP928 (v1.1) 2007 年 4 月 19 日 japan.xilinx.com 3
R
CTC IP ブロック 色温度について
白色光は色温度で表すこ とができます。 ある光源の色温度を特定するには、 その出力をある温度で理論的な黒体が放射する光と比較します (単位はケルビン、K)。 具体的には、5000K ~ 5500K が通常の昼白色、 2000K が赤/オレンジ色、 15000K は青みがかった色とな り ます。 たとえば、空の太陽光が赤、 オレンジ、 白、青などのよ うに位置によって異なって見えるよ うに、 色温度は、光源およびディ スプレイ テク ノ ロジによって異なってきます。
デジタル ディ スプレイにおける白色は、そのディ スプレイの R、G、および B セルから出されるこれらの色の組み合わせで認識されます。 RGB データは CIE x-y 色空間 に合う よ うに変換でき、色空間では、変換アルゴ リズムで多数の演算が実行されます。
「ホワイ ト ポイン ト 」 は色温度と して大まかに定義されています。 CIE 色度図 (図 3) では、 5500K でのホワイ ト ポイン トは、 ほぼ x = y = 0.33 の点です。
この図を見る と、 PDP (プラズマ ディ スプレイ パネル) の色温度が低くなっており、 特に CRT (ブラウン管) ディ スプレイ と比較する と これは顕著です。 PDP では基本的に青輝度が低いため、 色温度も低くな り ます。 さ らに、PDP のセル構造および関連する動作回路がいったん固定される と、エンド カスタマが色温度を独自に変更するこ とはできません。 したがって、 PDP などのデジタル ディ スプレイ出力は、よ り高品質の画像を実現するよ うに調整される必要があ り ます。
表 3 : LVDS/DVI RX を使用する場合の LVDS DIP スイッチ設定
DIP スイッチ ポート名 設定
DIP_SWITCH_0
[ユーザー スイ ッチ SW4]
DIPS_RX_SELECT 常に 「ON」 にする。
図 3 : CIE 色度図に示す色温度
X928_03_040907
4 japan.xilinx.com XAPP928 (v1.1) 2007 年 4 月 19 日
CTC IP ブロックR
CTC アルゴリズムこのアルゴ リズムのインプリ メンテーシ ョ ンでは、フレームのホワイ ト ポイン ト または色温度が特定のフレームに求められる色温度に変更されます。 最初に、 CIE の基準ホワイ ト ポイン トが、 ユーザーが設定した温度入力から x および y 形式で選択されます。 入力される全フレームに対するホワイ ト ポイン トが概算されます。 8 または 10 ビッ トの RGB データの入力フレームは color-mixing プログラムを使用して x-y 形式に変換されます。
次に、 入力フレーム温度および基準温度が同じかど うかが確認されます。 再帰演算がデータ温度値を制御し、 正確な色温度調整を行うため、 基準となるホワイ ト ポイン トが選択されます。 色温度が同一 (差分内) の場合は変更されず、 色温度が異なる と、 フレームは適切な色温度に変更されます。
色温度の調整には、 比率法が使用されます。 CIE 温度対入力フレームの温度比率は、 入力フレームのRGB データそれぞれに適応され、適切な色温度を設定します。 この時点で、修正された色温度の変換が完了したこ とにな り ます。
図 4 : CTC IP ブロック図
CTC_PGC_R_DATA[7:0]
CTC_PGC_G_DATA[7:0]
CTC_PGC_B_DATA[7:0]
R-ColorCorrection
G-ColorCorrection
B-ColorCorrection
BypassLogic
White PointCalculation
FrameWhite PointEstimation
CTCControl Logic
VIDEO_RGBData Bus
C
IE R
efer
ence
DIPS_CTC_CNT
FrameWhite Point
BusWhite Point
Bus
CLK
Cntr
CntrCntr
Cntr
Temp
CTC_PGC_DATA_RDY
VIDEO_CTC_END_FRM
RESET_N
VIDEO_CTC_STRT_FRM
CTC_PGC_DATA_EN
X928_04_041907
VIDEO_CTC_DATA_EN
VIDEO_CTC_RDY
VIDEO_CTC_R_DATA[7:0]
VIDEO_CTC_G_DATA[7:0]
VIDEO_CTC_B_DATA[7:0]
CTC IP ブロック
XAPP928 (v1.1) 2007 年 4 月 19 日 japan.xilinx.com 5
R
表 4 に、 CTC モジュールで使用される信号の説明を示します。
色温度の入力レジスタ値は、 ターゲッ ト とする色温度と して標準温度値 (6500K、 8000K、 9300K) を示します。 これらの値は外部の DIP スイ ッチで選択されます。 そして、CIE の基準ホワイ ト ポイン ト値が決定されます。 この後の処理では、 ホワイ ト ポイン トに対する RGB 値が使用されます。 デフォルトでは、 色温度は変更されず、 入力データををバイパスします。 次のフレームの開始点で色温度を選択した後、 CTC モジュールでは、 基準点となるホワイ ト ポイン トの値が更新されます。
フレームのホワイ ト ポイン トの概算
ホワイ ト ポイン ト を概算するには、 次のアルゴ リ ズムを使用します。 まず、 RGB の和が最大となるピクセルをフレーム全体から見つけます。 この和を示す RGB 値が、 そのフレームのホワイ ト ポイン ト とみなされます。 そして、 このホワイ ト ポイン トは次の入力フレームの開始で再び更新されます。
CTC (色温度調整) モジュール
CTC モジュールでは、フレーム全体の入力 RGB 値が新しい温度に調整されます。 このモジュールでは、一定の比率を乗算する方法によって、値が調整されます。 たとえば、ピクセルの R の調整後の値は等式 1から求められます。
等式 1
説明 :
• Rin = 入力ピクセルの R 値
• Rwt = 標準温度の CIE ホワイ ト ポイン ト値
• Rwf = 前のフレームのホワイ ト ポイン トにおける R 値
• Rout = CTC モジュールで調整された出力ピクセルの R 値
表 4 : CTC モジュールの信号
信号 I/O 説明
RESET_N入力
システム リセッ ト 。 CTC モジュール内の全プロセスをリセッ トするには、 この信号を Low にアサートする。
CLK 入力 システム ク ロ ッ ク。 ビデオ処理に必要な周波数で動作。
DIPS_CTC_CNT 入力DIP スイ ッチからの制御信号 (ユーザー スイ ッチ SW1、SW0)。 ターゲッ ト とする色温度を決定。
VIDEO_CTC _STRT_FRM入力
CTC はこの信号をアサート して、 LVDS レシーバへ送信する新しいフレームの開始を示す。
VIDEO_CTC _END_FRM 入力CTC はこの信号をアサート して、 LVDS レシーバへ送信している現在のフレームの終了を示す。
VIDEO_CTC _DATA_EN 入力 CTC はこの信号をアサート して、 有効なデータが
LVDS レシーバ ブロ ッ クに与えられたこ とを示す。
VIDEO_CTC_RGB_DATA[23:0] 入力CTC では RGB 形式の入力ピクセル データが、この 24 ビッ トのデータ バスから入力される。
CTC_PGC_DATA_RDY 出力CTC はこの信号をアサート して、 有効なデータが次の PGC ブロ ッ クでプロセスできる状態であるこ とを示す。
CTC_PGC_DATA_EN出力
この信号がアサート されると 、PGC レシーバ ブロッ クの CTC_PGC_RGB_DATA[23:0] のデータが有効と なる。
CTC_PGC_RGB_DATA[23:0] 出力RGB 形式の出力ピクセル データが、 この 24 ビッ トのデータ バスから PGC に出力される。
RinRwtRwf---------× Rout=
6 japan.xilinx.com XAPP928 (v1.1) 2007 年 4 月 19 日
CTC IP ブロックR
比率はフレーム全体の間隔で一定です。 G および B 値に対しても同じ方法で、調整後の値が求められます。 ピクセルはクロ ッ ク サイクルごとに同時に乗算されます。
CTC モジュールが次のモジュール、 PGC (正確なガンマ補正) ブロ ッ クにデータを送信できる状態になる と、 CTC_PGC_DATA_RDY フラグがアサート されます。
DIP スイッチの設定表 5 に、 色温度を調整する際の DIP スイ ッチの設定を示します。
CTC モジュールのデバイス使用率表 6 に、 CTC モジュールが使用する リ ソースのサマ リ を示します。 これらの値は、 ディ スプレイ開発ボード上の Spartan-3E XC3S1600E FG484 FPGA に基づく ものです。
表 5 : CTC モジュールの DIP スイッチ設定
DIP スイッチ ポート名 設定
DIP_SWITCH_TYPE0DIP_SWITCH_TYPE1
DIPS_CTC_CNT0_IPDIPS_CTC_CNT1_IP
CTC_TYPE1 & CTC_TYPE0
[スイ ッチ 1、 スイ ッチ 0]• 11 : バイパス• 10 : 6500K• 01 : 8500K• 00 : 10000K
表 6 : CTC モジュールのリソース使用率
使用数 利用可能数 使用率
ロジック使用率
スライスのフ リ ップフロ ップ数 5,275 29,504 18%
4 入力 LUT 数 3,579 29,504 12%
4 入力 LUT 総数 3,664 29,504 12%
ロジッ ク と しての使用数 3,579
ルート スルーと しての使用数 1
シフ ト レジスタ と しての使用数 84
ボンディングされた IOB 数 58 376 15%
ブロ ッ ク RAM 数 4 36 11%
MULT18X18 数 4 36 11%
GCLK 数 1 24 4%
ロジック分散
使用スライス数 3,423 14,752 23%
関連ロジッ クのみを含むスライス数 3,423 3,423 100%
関連がないロジッ クのみを含むスライス数 0 3,423 0%
Rwt Rwf⁄
PGC (正確なガンマ補正)
XAPP928 (v1.1) 2007 年 4 月 19 日 japan.xilinx.com 7
R
PGC (正確なガンマ補正 )
ガンマについて
ディ スプレイ システムでエンコード された輝度と表示させたい画像の明度の間には、ガンマ特性という指数の関係があ り ます。 この関係は数学的な汎用関数では、 出力 = 入力関数 ^ (ガンマ) と して表され、逆関数によって、 表示される前のデータがあらかじめ補正できます。 入力と出力明度は、 多くのディ スプレイにおいて非線形関係であるため、 ガンマ補正が必要とな り ます。 また、 この補正によって知覚される画像の品質を向上させるこ とができます。
未補正の画像や誤ったガンマ補正を施した画像は、 コン ト ラス トが不鮮明になったり、 色バランスが悪
く、 全体的な光のレベルが不適切になった り します。 さ らに、 このよ う な画質の不備をほかの方法で修正するこ とは困難であるため、 すべての画像で最初に適切なガンマをエンコードするこ とが重要です。
たとえば、図 5 に示すエンコード された (未補正の) 線形入力信号 Vs では、 0.1 ~ 0.4 間の知覚明度の差が大き く、 0.8 ~ 1.0 間の差は小さ くなっています。 基本的にガンマ関数は、 このディ スプレイの各入力ステップに対する出力明度が、 出力 I で示よ うに線形となるよ う入力に適用されます。
ガンマ補正のインプリ メンテーシ ョ ン
10 ビッ ト出力は整数の近似値を求めやすいため、 出力を正確に調整するには 10 ビッ ト幅のガンマ曲線を選択しています。 8 ビッ ト と 10 ビッ トのガンマ曲線を図 6 と図 7 に示します。これらを比較してみてください。 曲線には、入力ピクセル値に対するガンマ補正後の輝度値が示されています。 灰色の曲線が 8ビッ ト または 10 ビッ トの精度の場合、 黒色の曲線が実現したいレスポンスを表しています。
図 5 : 未補正 (Vs) およびガンマ補正後 (I) の明度
図 6 : 8 ビッ トのガンマ曲線 vs 実現したい線形レスポンス
X928_05_040507
X928_06_040407
8 japan.xilinx.com XAPP928 (v1.1) 2007 年 4 月 19 日
PGC (正確なガンマ補正)R
これらの図からは、 8 ビッ ト出力の場合は階段のよ うな関数とな り、 10 ビッ トの場合はスムーズで、出力に一致するよ う関数で出力されているこ とがわかり ます。
10 ビッ トのガンマ補正は等式 2 を用いて行われました。
等式 2
説明 :
• X = RGB 入力 (8 ビッ トの R、 G、 B 値それぞれを整数で表す)
• Y = 10 ビッ トのガンマ補正 R’、 G’、 B’ 出力
• ガンマ = ガンマ係数 (プログラム可能)
値の小数部が 0.5 以上の場合、 Y は四捨五入されて近似整数値とな り、 それ以外のと きは小数部が切り捨てられます。 出力は 10 ビッ ト形式です。
データパスの詳細説明
外部 DIP スイ ッチは、 入力データに適用されるガンマ値に設定されます。 ガンマ関数は一連の LUT (ルッ クアップ テーブル) を用いて R、 G、 B それぞれに個別に適用されます。 出力データは R’G’B’ の3 x 10 ビッ ト データ形式です。
正確なガンマ補正が完了する と、 次のモジュール IDE (イ メージ ディザリ ング エンジン) に DATA_ENフラグがアサート されます。 また、 外部 DIP スイ ッチを使用し、 このブロ ッ クをバイパスさせるこ と も可能です。
図 7 : 10 ビッ トのガンマ曲線 vs 実現したい線形応答X928_07_040507
Y ROUND 1023 X256---------⎝ ⎠⎛ ⎞ 1
Gamma--------------------⎝ ⎠⎛ ⎞∧×=
PGC (正確なガンマ補正)
XAPP928 (v1.1) 2007 年 4 月 19 日 japan.xilinx.com 9
R
表 7 に、 PGC モジュールで使用される信号の説明を示します。
図 8 : PGC のブロック図
MUX
MUX
MUX
F/F
F/F
F/F
F/F
F/F
F/F
+
+
+
MUX
REDGREENDUAL
PORT_U1
BLUESINGLE
PORT_U1
ADDER_OUT_RED
ADDER_OUT_GREEN
ADDER_OUT_BLUE
REDFF
GREENFF
BLUEFF
REDOUT[7:0]
GREENOUT[7:0]
BLUEOUT[7:0]
ADDRESSA
ADDRESSB
ADDRESSA
RED[7:0]
GREEN[7:0]
BLUE[7:0]
DIPSWITCH_INPUT
10
READYGeneration
Logic
CTC_PGC_RDYPGC_IDE_RDY
DATAENGeneration
Logic
PGC_IDE_DATA_EN
CTC_PGC_DATA_EN
BYPASSSEL
RESET_N
CLK
X928_08_041907
01
00
表 7 : PGC モジュールの信号
信号 I/O 説明
RESET_N 入力 アクティブ Low グローバル リセッ ト 。 非同期信号。
CLK 入力 グローバル ク ロ ッ ク。
CTC_PGC_RDY 入力 CTC モジュールはこの信号をアサート して、 ピクセル データが有効であるこ とを PGC モジュールに伝える。
GREEN[7:0] 入力 Green 入力を含む 8 ビッ ト バス。
BLUE[7:0] 入力 Blue 入力を含む 8 ビッ ト バス。
RED[7:0] 入力 Red 入力を含む 8 ビッ ト バス。
CTC_PGC_DATA_EN 入力 CTC モジュールは、 フレームの有効なデータ ライン全体に対して、 この信号を High にアサート。
BYPASSSEL 入力 PGC ブロ ッ クをバイパス可能にする。
DIPSWITCH_INPUT[1:0] 入力 これらの信号に求められるガンマ値を設定。
10 japan.xilinx.com XAPP928 (v1.1) 2007 年 4 月 19 日
PGC (正確なガンマ補正)R
フ リ ップフロ ップ、 バウンダ リ信号、 レジスタのリセッ ト ステートは、すべてのビッ トでロジッ ク 「0」です。
DIP スイッチの設定表 8 に、 正確なガンマ補正を行う際の DIP スイ ッチの設定を示します。
PGC モジュールのデバイス使用率表 9 に、 PGC モジュールが使用する リ ソースのサマリ を示します。
REDOUT[9:0] 出力 PGC モジュールからのガンマ補正出力を含む 10 ビッ トバス。
GREENOUT[9:0] 出力 PGC モジュールからのガンマ補正出力を含む 10 ビッ ト バス。
BLUEOUT[9:0] 出力 PGC モジュールからのガンマ補正出力を含む 10 ビッ ト バス。
PGC_IDE_RDY 出力 PGC モジュールはこの信号をアサート して、 ピクセル データが有効であるこ とを IDE モジュールに伝える。
PGC_IDE_DATA_EN 出力 PGC モジュールは、この信号を High に アサート し、フレームのデータ ライン全体が有効であること を IDE モジュールに伝える。
表 8 : PGC モジュールの DIP スイッチ設定
DIP スイッチ ポート名 設定
DIP_SWITCH_TYPE0DIP_SWITCH_TYPE1
ユーザー スイ ッチ SW3、 SW2
DIPS_PGC_SEL0_IPDIPS_PGC_SEL1_IP
PGC_TYPE1 & PGC_TYPE0
[スイ ッチ SW3、 スイ ッチ SW2] • 00 : ガンマは 2.2 に設定• 01 : ガンマは 2.4 に設定• 10 : ガンマは 2.6 に設定• 11 : 予約済み
表 9 : PGC モジュールのリソース
使用数 利用可能数 使用率
ロジック使用率
スライスのフ リ ップフロ ップ数 50 29,504 1%
4 入力 LUT 数 31 29,504 1%
4 入力 LUT 総数 31 29,504 1%
ボンディングされた IOB 数 63 376 17%
ブロ ッ ク RAM 数 2 36 6%
GCLK 数 1 24 4%
ロジック分散
使用スライス数 42 14,752 1%
関連ロジッ クのみを含むスライス数 42 42 100%
関連がないロジッ クのみを含むスライス数 0 42 0%
表 7 : PGC モジュールの信号 (続き)
信号 I/O 説明
IDE (イメージ ディザリング エンジン)
XAPP928 (v1.1) 2007 年 4 月 19 日 japan.xilinx.com 11
R
IDE ( イメージ ディザリング エンジン )
ディザリングの概要
ディザリ ングとは、 限られた色深度から見かけ上の色深度を作成するテクニッ クです。 ディザリ ングされた画像では、 使用不可の色に対して、 表示可能な色からのピクセルを組み合わせてそれに近い色が作
成されます。 肉眼では、 組み合わせて作成された色は別の色と して認識されます。
たとえば、 白色と黒色のみのディ スプレイを使用し、 ディザリ ングによって灰色の画像が作成できます
(図 9)。 黒および白のピクセルをインターレースするこ とで、 実際にはない灰色が作成されます。
ディ スプレイ デバイスの一部には、 入力データが 8 ビッ トでディ スプレイ色深度が 6 ビッ トのよ うに、入力データよ り小さい色深度しか持たないものがあ り ます。 入力データは切り捨て、 あるいは四捨五入されますが、 この方法では通常細かい情報が失われ、 ある 1 色の大部分が縞模様に、 オリ ジナルの色とは大き く異なる色になる可能性があ り ます。 ディザリ ングとは、 このよ うなイ メージに対して行われる処理です。
イメージ ディザリングのアルゴリズムについてIDE モジュールは PGC モジュールから 30 ビッ ト (10 ビッ ト データを R’G’B’ の 3 つ分) のピクセルス ト リームを受信します。
IDE は有効なピクセルに対してのみディザリ ングを行います。 このモジュールでは、 10 ~ 8 ビッ トに対して 2 x 2 のディザリ ング マ ト リ ッ クスを用いる空間ディザリ ング テクニッ クが使用されます。 たとえば、 3 x 10 ビッ ト のデータがブロッ クに入力される場合、 3 色 (R、 G、 B) の 2 つの LSB (最下位ビッ ト )は最も詳しい色情報を含み、 残りの 8 ビッ トの MSB とは区別されます。
切り捨てられた 2 つの LSB は事実上、 エラーです。 これら 2 ビッ トは 00 ~ 11 (バイナリ ) の任意の値で、 残りの 8 ビッ トの対する色のレベルを 4 段階 (0%、 25%、 50%、 75%) で表します。 エラーは隣接したピクセル全体にあ り ます。
次の例では、 2 x 2 マ ト リ ッ クスを使用したウェイ ト を示します。
次の例では、 上記のウェイ ト表がディ スプレイ空間全体にどのよ うに適用されるかを示します。
各ウェイ トは実際にはしきい値です。 入力ピクセルの最後 2 ビッ トの値が、 表の該当箇所の値よ り大きい場合、2 つの LSB が示す値が残りの 8 ビッ トに足されます。 この際、その結果の 8 ビッ トがオーバーフローしないよ う注意する必要があ り ます。
図 9 : ディザリングによる新しい色の作成
0 1
2 3
0 1 0 1 …..
2 3 2 3 …..
0 1 0 1 …..
2 3 2 3 …..
. . . . …..
GrayBlack, WhiteX928_09_040907
12 japan.xilinx.com XAPP928 (v1.1) 2007 年 4 月 19 日
IDE (イメージ ディザリング エンジン)R
パターンをな く してばらつかせるため、 ウェイ ト表は 2 行ごと、 またはフレームごとに回転させるこ とができ、 これによって空間ディザ全体に一時的なディザリ ングを追加します。
また、マ ト リ ッ クス ウェイ トはランダムに回転できるため、ディザリ ング処理全体がランダムになるようにできます。 これは、 ビデオ スク リーン ディ スプレイに有用な方法です。 入力データの LSB を使用してディザ リ ングする場合、 IDE では 2x2 ピクセル ブロ ッ クを用いた空間、 一時空間、 およびランダム空間のディザリ ングが実行されます。
ディザリ ングが完了する と、 24 ビッ トのデータ (R、 G、 B 各 8 ビッ ト ) が dither_data_ready 信号と共に LVDS/DVI TX インターフェイスに送信されます。
表 10 に、 IDE モジュールで使用される信号の説明を示します。
図 10 : イメージ ディザリング エンジンの機能ブロック図 (ここでは 1 色のみを示す)
表 10 : IDE モジュールの信号
ポート名 I/O 説明
RESET_N 入力 Low アサートによ り、 IDE モジュールを リセッ ト 。
CLK 入力 DCM (デジタル ク ロ ッ ク マネージャ ) によって生成されるシステム ク ロ ッ ク。
BITS_IDE_TYPE0 入力 ディザ タイプの選択。 表 11 を参照。
BITS_IDE_TYPE1 入力 ディザ タイプの選択。 表 11 を参照。
PGC_IDE_DATA_VALID 入力
PGC モジュールはこの信号をアサート して、ピクセル データが有効であるこ とを IDE モジュールに伝える。 ライン全体が処理されるまでアサートが維持される。
PGC_IDE_DATA_RDY 入力PGC モジュールは、 ガンマ補正後のデータが使用可能になる と、 IDE へのこの信号をパルスさせる。
PGC_IDE_RGB_PIX_DATA[29:0] 入力 PGC モジュールから IDE モジュールへ入力される、ガンマ補正された 10 ビッ トの R、 G、 Bピクセル データはこのバスに出される。
VIDEO_FRAME_ACTIVE 入力 High にアサート される と、 有効なフレームであるこ とを示す。 フレームの終わりで Low になる。
10-bit RBit
ExtractorLSB
Comparator
DIther Matrix
Adder
LSB 2 bit
MSB 8 bitEnergy levelto be added
8-bitDithered R
CLK
IDE_PIX_DATA_OP(8 bits of R)
FPGABlockRAM
DITHER_DATA_RDY
RESET_N
BITS_IDE_TYPE0 BITS_IDE_TYPE1
PGC_IDE_DATA_VALID
PGC_IDE_DATA_RDY
PGC_IDE_RGB_PIX_DATA
VIDEO_FRAME_ACTIVE
X928_10_041007
IDE (イメージ ディザリング エンジン)
XAPP928 (v1.1) 2007 年 4 月 19 日 japan.xilinx.com 13
R
DIP スイッチの設定IDE モジュールは、 表 11 に示すよ うにユーザー プッシュ ボタンを設定し、 調整されます。
IDE モジュールのデバイス使用率表 12 に、 IDE モジュールが使用する リ ソースのサマリ を示します。
IDE_PIX_DATA _OP[23:0] 出力 この出力バスにはディザリ ング後の 8 ビッ トの RGB 値が出力される。
DITHER_DATA_RDY 出力 アサート される と、 ディザリ グされたデータが使用可
能であるこ とを示す。
表 11 : IDE モジュールの DIP スイッチ設定
DIP スイッチ ポート名 設定
DIP_SWITCH_TYPE0DIP_SWITCH_TYPE1
[ユーザー プッシュ ボタン PSW0、PSW1]
DIPS_IDE_TYPE0_IPDIPS_IDE_TYPE1_IP
IDE_TYPE1 & IDE_TYPE0
[PSW1、 PSW0]• 00 : IDE 無効• 01 : 空間的ディザリ ング• 10 : 一時空間的ディザリ ング• 11 : ランダム ディザリ ング
表 12 : IDE モジュールのリソース (XC3S1600EFG484 の場合)
使用数 利用可能数 使用率
ロジック使用率
スライスのフ リ ップフロ ップ数 98 29,504 1%
4 入力 LUT 数 170 29,504 1%
ロジック分散
使用スライス数 119 14,752 1%
関連ロジッ クのみを含むスライス数 119 119 100%
関連がないロジッ クのみを含むスライス数 0 119 0%
4 入力 LUT 総数 188 29,504 1%
ロジッ ク と して使用される数 170
ルート スルーと して使用される数 18
ボンディングされた IOB 数 62 376 16%
GCLK 数 1 24 4%
表 10 : IDE モジュールの信号 (続き)
ポート名 I/O 説明
14 japan.xilinx.com XAPP928 (v1.1) 2007 年 4 月 19 日
LVDS TX/DVI インターフェイスR
LVDS TX/DVI インターフェイス
LVDS ト ランス ミ ッ タは、 28 ビッ トの LVCMOS/LVTTL データを 4 つの LVDS データ ス ト リームに変換します。 位相が同期した送信クロ ッ クが 5 つ目の LVDS リ ンク と して、データ ス ト リームと並行して入力され、 28 ビッ ト の入力データは、 送信ク ロ ッ クの各サイ クルでサンプルされて送信されます。Spartan-3E ディ スプレイ開発ボードには、LVDS および DVI インターフェイスは共に備わっています。
RGB 出力インターフェイスは、 24 ビッ トの RGB データ と 4 ビッ トのタイ ミ ングおよび制御信号 (クロ ッ ク、 HSYNC、 VSYNC、 データ イネーブル) から成り ます。
LVDS ト ランスミ ッ タのファンクシ ョ ン ブロック図
LVDS TX モジュール (図 11) は、 DCM および serdes_4b_7to1 モジュールで構成されています。 DCMは入力クロ ッ クを 3.5 逓倍した clkx3p5 および clkx3p5not ク ロ ッ クを生成します。これら 2 つのクロ ックは serdes_4b_7to1 モジュール内部で、 28 ビッ トのデータを 4 つのラインにする 7-to-1 のシ リアル化に使用されます。
こ こでは clkx3p5 および clkx3p5not ク ロ ッ クを使用し、 データをマルチプレクスするこ とによって 28ビッ トのデータ ラインを 4 チャネルにするシ リ アル化が実行されます。
表 13 に、LVDS チャネルでのデータ ビッ トの エンコーディングを示します (データは LSB から送信されます)。
ト ップ レベルからのデザイン階層
テス トベンチを含むデザイン ファ イルは、次の図に示すよ うな階層で使用されます。 これらのデザインファイルは次のザイ リ ンクス ウェブ サイ トから入手可能です。http://japan.xilinx.com/bvdocs/appnotes/xapp928.zip
図 11 : LVDS ト ランスミ ッ タのブロック図
表 13 : LVDS チャネルでのデータ ビッ トのエンコード
LVDS チャネル 入力
チャネル 0 0、 4、 8、 12、 16、 20、 24
チャネル 1 1、 5、 9、 13、 17、 21、 25
チャネル 2 2、 6、 10、 14、 18、 22、 26
チャネル 3 3、 7、 11、 15、 19、 23、 27
datain
LVDS_TX
DATAOUT_P[3:0]
CLKOUT_P
DATAOUT_N[3:0]
CLKOUT_N
clkin
TTLto
LVDS
Inpu
t Buf
fer
DigitalClock
Manager
Data_Reg._p
clkx3P5not
Data_Reg._n
DD
RR
egis
ters
clkx3P5
DataSync andMux Selection
mux
X928_11_041007
ト ップ レベルの デバイス使用率
XAPP928 (v1.1) 2007 年 4 月 19 日 japan.xilinx.com 15
R
ト ップ レベルのデバイス使用率
表 14 に、 システム全体の合成結果を示します。
図 12 : モジュール階層X928_12_041007
表 14 : システム全体の合成結果
使用数 利用可能数 使用率
ロジック使用率
スライス レジスタ総数 5,748 29,504 19%
フ リ ップフロ ップと しての使用数 5,743
ラ ッチと しての使用数 5
4 入力 LUT 数 3,878 29,504 13%
ロジッ ク と しての使用数 3,878
ルート スルーと しての使用数 33
シフ ト レジスタ と しての使用数 88
4 入力 LUT 総数 3,999 29,504 14%
ボンディングされた IOB 数 93 376 25%
ブロ ッ ク RAM 数 6 36 17%
MULT18X18 数 4 36 11%
GCLK 数 7 24 24%
DCM 数 3 8 38%
RPM マクロ数 2
ロジック分散
使用スライス数 3,709 14,752 25%
関連ロジッ クのみを含むスライス数 3,709 3,709 100%
関連がないロジッ クを含むスライス数 0 3,821 0%
16 japan.xilinx.com XAPP928 (v1.1) 2007 年 4 月 19 日
システム レベルのI/O 信号R
システム レベルのI/O 信号
図 13 に、 Spartan-3E FPGA を使用したディ スプレイ パネル ソ リ ューシ ョ ンの I/O 図を示します。
CORE 仕様から次に信号タイプが使用されています。
• I : 入力は標準の入力専用信号
• O : 出力は標準出力
また、 次の信号命名規則に従っています。
• すべてのアクティブ Low 信号に 「_N」 接尾辞が付く
• 接尾辞 「+」 は差動信号の正側であるこ とを表す
• 接尾辞 「-」 は差動信号の負側であるこ とを表す
表 15 で Spartan-3E ディ スプレイ開発ボードの信号について説明します。
図 13 : FPGA でのディスプレイ パネル ソリューシ ョ ンの I/O 図
表 15 : ディスプレイ開発ボードで使用される信号
信号 I/O 説明
システム信号
SYS_RST_IP 入力 このシステム リセッ ト信号をアサートする と、 モジュール内の全プロセスがリセッ ト される
RGB 信号DVI_RX_CLK 入力 DVI ク ロ ッ ク入力
DVI_RX[27:0] 入力 DVI データ入力 (24 ビッ ト RGB データ、 VSYNC、 HSYNC、 DE)
LVDS ディスプレイ インターフェイス信号EDGE_OUT 出力 TFP410 の DVI_TX チップ専用信号 (DVI ト ランス ミ ッ タ )
DKEN_OUT 出力 TFP410 の DVI_TX チップ専用信号
MSEN_OUT 出力 TFP410 の DVI_TX チップ専用信号
PD_OUT 出力 TFP410 の DVI_TX チップ専用信号
ISEL_OUT 出力 TFP410 の DVI_TX チップ専用信号
BSEL_OUT 出力 TFP410 の DVI_TX チップ専用信号
Display Panel SolutionFPGA
SYS_RST_IPDVI_RX_CLK
DVI_RX 28
DIPS_CTC_CNT0_IPDIPS_CTC_CNT1_IP
DIPS_PGC_EN_IPDIPS_PGC_SEL0_IPDIPS_PGC_SEL1_IPDIPS_IDE_TYPE0_IPDIPS_IDE_TYPE1_IP
DIPS_RX_SELECT
EDGE_OUTDKEN_OUTMSEN_OUTPD_OUTISEL_OUTBSEL_OUTDSEL_OUT
DVI_TX_CLK_PDVI_TX_CLK_N
4
4DATAOUT_P[3:0]DATAOUT_N[3:0]CLKOUT_PCLKOUT_N
X928_13_041907
まとめ
XAPP928 (v1.1) 2007 年 4 月 19 日 japan.xilinx.com 17
R
図 14 に、VSYNC、HSYNC、DE 信号間の同期タイ ミ ングを示します (メモ : 同期極性はターゲッ ト となるパネルの精度によって変更できます)。
まとめ これらのデザイン ファ イルは、ザイ リ ンクスが提供する非常に優れた開発ボードでの一連のビデオ処理アルゴ リズムを表し、ディ スプレイ開発プログラムの設計開始をサポート します。 どのザイ リ ンクス デバイスをターゲッ ト と していても、 すべての IP ブロ ッ クが必要に応じてカスタマイズ可能です。 このシステムには、 さ らに新しいビデオ処理ブロ ッ クが追加でき、 ご自身のビデオ拡張アルゴ リ ズムが簡単
に確認できます。
付録 : LVDS タイ ミ ング
詳細は、 XAPP486 : 『Spartan-3E FPGA における最高レート 666 Mbps での 7:1 のシ リ アル化』 を参照して ください。
改訂履歴 次の表に、 この文書の改訂履歴を示します。
DSEL_OUT 出力 TFP410 の DVI_TX チップ専用信号
DVI_TX[27:0] 出力 DVI データ出力 (24 ビッ ト RGB データ、 VSYNC、 HSYNC、 DE)
DVI_TX_CLK 出力 DVI 出力クロ ッ ク
DVI_TX_CLK_N 出力 TFP410 の DVI_TX チップ専用信号
LVDS TX 信号DATA_OUT_P[3:0]DATA_OUT_N[3:0]
出力 LVDS 差動出力ペア
CLKOUT_PCLKOUT_N
出力 LVDS ク ロ ッ ク出力ペア
図 14 : リファレンス デザインにおける信号の関係
表 15 : ディスプレイ開発ボードで使用される信号 (続き)
信号 I/O 説明
vsync_bvsync_e
VSYNC
HSYNC
x=0; y=0
DE
X928_14_041007
日付 バージョ ン 改訂内容
2007/03/23 1.0 初版リ リース
2007/04/19 1.1 文書および図の微調整