ものすごく久しぶりに趣味に戻って来れたので、Zyboを弄っています。
DVI specification でぐぐったら、情報が集まったので、ためしにDVI(T.M.D.S.)のエンコーダをRTLで書いてみました。
英語版WikipediaのDVIの項 からhttp://www.webcitation.org/6ES9y2FuQ にリンクが張られており、DDWGの Digital Visual Interface DVI Revision 1.0 02 April 1999 にたどり着けました。
8bitを10bitにする点ではPCIeなどと似ていなくも無いですが、グレイコードっぽい符号化(たぶんbitエラーが出ても絵の変化が少ないように)と、DCバランシングだけ行うシンプルな仕様のようですね。CDRというわけでも無いので普通のIO端子でいけてしまう所がすばらしい(XILINXはTMDSサポートしているので)。
とりあえず書きなぐってVGA(ピクセルクロック25MHz)で動かして見ると、見事にノイズだらけ。
DCバランスを取るためのカウンタをバグっていました。
ブランキングから離れると電位的にオフセットがずれてくるのだと思いますが、こういう風なエラーになるのですね。
修正しました。
今度は綺麗に出ました。DCバランスの重要性が分かりますね(汗)。
とりあえず現状のソースコード置いておきます。
例によって、ご利用は自己責任でお願いします。
一応プロジェクト丸ごとが欲しい方は github はこちらです。
GitHub - ryuz/zybo_dvi_tx
Contribute to ryuz/zybo_dvi_tx development by creating an account on GitHub.
まだ本当にエンコーダ部分だけです。
コメント