なぜFPGAからの映像出力にHDMIを使うの?
FPGAで映像出力をしたいと思ったことはありませんか?映像出力にはVGA、DVI、HDMI、DPといった様々な選択肢があります。
しかし最近のディスプレイはHDMIとDPしか積んでいないことも多いし、アナログ出力はFPGAとは相性が悪い、dpは規格上、低画質であってもある程度高速でシリアル通信する必要があることから、HDMIをFPGAの映像出力手段としてお勧めします。
伝送方式がDVIと同じ(TMDS)なのもGood(ソースコードも使いまわしがきくはず)。
なぜGPIOから映像出力するの?
FPGAから映像出力することを考えたとき、一番最初に思い浮かぶのはHDMIコネクタを備えたFPGA評価ボードを用いることだと思います。
ただ私のFPGAのIOのようにHDMIコネクタがついていないものも多いハズ… ないものは仕方がないのでこのメスピンヘッダ(GPIO)からHDMI出力をします。
まず物理的な部分を作ろう
とりあえず、GPIOとHDMIコネクタの変換アダプターを作ります。なぜならディスプレイについているのはHDMIコネクタだし、HDMIケーブルを用いてそれとGPIOを接続する必要があるからです。
とりあえずAmazonにDIP HDMI変換基盤が売っていたので買ってきました。
つぎにFPGAのピンヘッダとこのアダプタを繋ぐ基盤を作ります。
HDMIでは数百MHzの信号が出力されるため配線には注意します。ただブレットボードとリード線を用い変換しても1280×720 60Hzで表示できたので、そこまで神経質になる必要はないでしょう。とはいっても精神衛生上によろしくないのでPCBで作ることにします。
今回はJLC PCB(https://jlcpcb.com/)に発注することにしました。
HDMIの一番良く見るタイプのコネクタには20pinもの信号があります。 しかし単に映像を出力するだけなら4ペア(8pin)と電源をFPGAと配線すれば良く、あとは電源につなぐなりプルアップ、プルダウンしてやればいいのです。 具体的にはディスプレイの制御に用いるDDCチャンネルとCECを5V 4.7kΩでプルアップ、HPDを100kΩでプルダウンしました。(私のディスプレイでは動きましたが規格通りではないかもしれません!)
では次にTDMSを配線していきましょう。 これらは差動信号ですが、Artix-7では差動信号を出力できるピンの組み合わせが決まっていますから気をつけて配線します。 僕は最終的にこのようなデザインにしました。
JLCに発注、待つこと2週間… ついに基盤が到着! いつもの黄色い封筒で届くと思っていたら、外箱があり丁寧な梱包でした。抵抗、FPGAとつなぐためのピンヘッダ、上の変換基盤をはんだ付けして準備万端! 果たしてこんな回路でHDMI出力はできるのでしょうか…
次回! FPGAデザイン編