DVIエンコーダモジュールの作成
75MHz毎に出力されるRGB各8bit計24bitをHDMI形式の高速シリアル通信として出力する必要があるが,その際にDVIエンコーダモジュールを使用する.
今回は,実験ボードであるNEXYS Videoのリファレンスデザインとして提供されている rgb2dvi モジュールをそのまま利用する.
rgb2dvi モジュール構成は下図のようになっている.
動作は以下の通りである.
- RBGの各8bitのパラレル信号をDataEncoderモジュールによりDVI信号のルールに従って10bitにエンコードする.
- 得られたRGBの各10ビットDataSerializerモジュールによりパラレル-シリアル変換する.
シリアル化の際には75MHzの5倍の周波数である375MHzを使用し,前半周期と
後半周期のそれぞれにデータを乗せる(Double Data Rate)ことで750bpsの速
度で送り出す.
- 出力はOBUFDSプリミティブを使用しLVDSの差動信号として出力する.
- DVI用のクロックは別途同様に作成しRGBのシリアル信号と共に出力する.
- 5倍の周波数である375MHzはrgb2dviモジュール内から呼び出すPLLモジュールにより作成している.
rgb2dviモジュールの関連ファイルは,ここから入手し,作業ディレクトリ内に解凍しておく.
kite_top.v からは,以下の記述により rgb2dvi モジュールを読み出す.
なお、parameter の設定 "#( .kClkRange(2) )" は rgb2dvi において 75MHz
を使用する際は kClkRange を 2 に設定しておく必要があるためである。
//
// DVI encoder
//
rgb2dvi #( .kClkRange(2) ) dviout (
.aRst(RST),
.PixelClk(CLK75), // pixel clock
.vid_pData(pDATA), // pixel data in
.vid_pHSync(HS), // horizontal sync.
.vid_pVSync(VS), // vertical sync.
.vid_pVDE(DE), // data enable
.TMDS_Clk_p(hdmi_tx_clk_p),
.TMDS_Clk_n(hdmi_tx_clk_n),
.TMDS_Data_p(hdmi_tx_p),
.TMDS_Data_n(hdmi_tx_n)
);
参考文献
漆谷正義:“第5章 画像入力・表示系のバス/インターフェース規格,”インタフェース2009年9月号,pp.76-84,CQ出版社.
次は、KITEマイクロプロセッサ用LIFEゲームプログラムの作成を行います。
| Back |