ついに、Kintex-7で安定したHDMI 1080p出力に成功!
ついにKintex-7での安定したHDMIの1080p出力に成功しました。USB3.0で書き込んだ画像をHDMIで表示しています。
「安定した」というのは、Vivadoのバージョンによらず、他の回路に影響されず、XDCファイルにCLOCK_DEDICATED_ROUTEを指定することもなく、Warningも出さずに論理合成できるようになったことを意味します。7シリーズクロックリソースの理解が鍵でした。
リソースの使用量はこんなもん。
使っているボードは、HDMIを4ポート備えたKintex-7ボード「Cosmo-K」です。
ただ、最初、HDMI出力をしてみると、液晶モニターによっては画面が出たり出なかったりしました。
家庭用テレビでは映るのにメインで使っている液晶モニタには画像が出ない。(# ゚Д゚)
モニターによって映ったり映らなかったりする原因は、HDMIコネクタの18番端子「+5V」にありました。
Cosmo-Kの回路図では+5Vの端子と、システムの+5Vの間にはNI(未実装の抵抗のパッドのみ)となっていて、HDMIの+5V端子はオープンになっていました。
ここに1kΩの抵抗をつないだら、最後まで映らなかったモニターでも画像が出るようになりました。
原因を見つけたきっかけは、Zynqberryの回路図です。
この回路は非常に参考になります。5Vは、ソースの5V→シンクへ供給するということが明確に示されているからです。
他にも、DigilentのPYNQやZYBOの回路図も調べたのですが、システムの5Vと直接つながっているだけなので、どちらからどちらへ供給するものかわからなかった
+5Vってモニターからシンク機器へ電力を供給するものだと思っていましたが、ソースからシンクへ電流を供給するものだったのです。しかも流せる電流が55mAと微弱なものだそうです。[参考記事] たぶんEDID(モニタの解像度などの情報を得るROM)の電源ですね。
どうやら私がメインで使っている液晶モニタは、この5Vが来ているかどうかでソース機器の接続を判断していたようです。
あと、HDMIのMISC的な端子について。
- CECはオープンでよいです。オープンが嫌な場合は3.3Vにプルアップします。
- SDA、SDLは3.3Vにプルアップしておきます。操作する必要はありません。
- HPDは、100kΩとか200kΩとかでプルダウンします。シンク機器が接続されるとL→Hに上がるので、何かしたければします。
これらは回路上でプルアップやプルダウンをしておけばよく、必ずしもFPGAに接続して操作する必要はない信号なのです。
あと、XILINXのVideoコアにおけるAXI Stream上のRGBの配列は「RBG」になっているようです。なんでこんな変則的なんでしょうね。
| 固定リンク
コメント