ケロロ好きなエンジニアのブログ

サラリーマンエンジニアの電子工作のことをメインに書いていきたいけど電子工作はまとまった時間がないとなかなか難しいから滅多に書けそうもなくてMVNOの話題がメインになりつつあるブログ

ZYBO HDMIのデモを動かしてみる

にほんブログ村 スマホ・携帯ブログへ にほんブログ村 スマホ・携帯ブログ 格安SIMカード・MVNOへ

スポンサーリンク

ZYBOさんですが、一通り動作できたので、次は公式にあった下記のHDMI Demoってのを試してみます。

Zybo Z7 HDMI Demo [Reference.Digilentinc]

 

GitHubにあるので、そこからダウンロード

GitHub - Digilent/Zybo-Z7-10-HDMI

 

 

かと思ったら違うようで、ここから最新のZIPファイルを落としてねってこと見たいです。

Releases · Digilent/Zybo-Z7-10-HDMI · GitHub

最新っていってもVivado2018.2が最新のようですね。

ZIPを適当なフォルダに展開します

f:id:keroctronics:20200516200543p:plain

このvivado_projの下に zybo-z7-10-hdmi.xpr があるので、これをVivadoから開いています。

ここは最新のVivado2019.2.1でやってみましょう。

Open Projectで先のファイルを指定すると古いバージョンで作られたんやから自動でアップデートしまひょか?って聞かれるのでお任せしてみます。

f:id:keroctronics:20200516200938p:plain

 

IPのアップデートとかあるんで、素直に動くのかどうか。。。

f:id:keroctronics:20200516201234p:plain

 

Report IP Statusをクリックするとこんなにありまっせ!アップグレードお勧めしまっせって出てきました。

f:id:keroctronics:20200516201408p:plain

全てIPが選択されているので、Upgrade Selected (上の画面の下に半分見切れているボタン)をクリックしてみます。 その後出てくるウィンドウでOKをクリック。

一応終わりました。

f:id:keroctronics:20200516201601p:plain

 

その後出てくるウィンドウでGenerate

f:id:keroctronics:20200516201737p:plain

 

2個のクリティカルワーニングが出てきました。

f:id:keroctronics:20200516201920p:plain

ila_refclkとila_pixclkについてなんか怒られてます。

OK押すとまた別のエラーが出ました。

f:id:keroctronics:20200516202251p:plain

Messageウィンドウに出てきた ip_update.log をクリックすると中身が見れました。

中を見ていくと Upgradeの SUCCESS とそうでないものがわかります。

 

design_1_v_tc_out_0

IPのパラメータが違う?

An attempt to modify the value of disabled parameter 'GEN_F0_VSYNC_HSTART' from '640' to '1280' has been ignored for IP 'design_1_v_tc_out_0'

An attempt to modify the value of disabled parameter 'GEN_F0_VSYNC_HEND' from '695' to '1280' has been ignored for IP 'design_1_v_tc_out_0'

An attempt to modify the value of disabled parameter 'GEN_F0_VBLANK_HSTART' from '640' to '1280' has been ignored for IP 'design_1_v_tc_out_0'

An attempt to modify the value of disabled parameter 'GEN_F0_VBLANK_HEND' from '640' to '1280' has been ignored for IP 'design_1_v_tc_out_0'

An attempt to modify the value of disabled parameter 'GEN_F1_VSYNC_HSTART' from '695' to '1280' has been ignored for IP 'design_1_v_tc_out_0'

An attempt to modify the value of disabled parameter 'GEN_F1_VSYNC_HEND' from '695' to '1280' has been ignored for IP 'design_1_v_tc_out_0'

An attempt to modify the value of disabled parameter 'GEN_F1_VBLANK_HSTART' from '640' to '1280' has been ignored for IP 'design_1_v_tc_out_0'

An attempt to modify the value of disabled parameter 'GEN_F1_VBLANK_HEND' from '640' to '1280' has been ignored for IP 'design_1_v_tc_out_0'

 上記のパラメータの変更がダメだって???

 

同様に design_1_v_tc_in_0

An attempt to modify the value of disabled parameter 'GEN_F0_VSYNC_HSTART' from '640' to '1280' has been ignored for IP 'design_1_v_tc_in_0'

An attempt to modify the value of disabled parameter 'GEN_F0_VSYNC_HEND' from '695' to '1280' has been ignored for IP 'design_1_v_tc_in_0'

An attempt to modify the value of disabled parameter 'GEN_F0_VBLANK_HSTART' from '640' to '1280' has been ignored for IP 'design_1_v_tc_in_0'

An attempt to modify the value of disabled parameter 'GEN_F0_VBLANK_HEND' from '640' to '1280' has been ignored for IP 'design_1_v_tc_in_0'

An attempt to modify the value of disabled parameter 'GEN_F1_VSYNC_HSTART' from '695' to '1280' has been ignored for IP 'design_1_v_tc_in_0'

An attempt to modify the value of disabled parameter 'GEN_F1_VSYNC_HEND' from '695' to '1280' has been ignored for IP 'design_1_v_tc_in_0'

An attempt to modify the value of disabled parameter 'GEN_F1_VBLANK_HSTART' from '640' to '1280' has been ignored for IP 'design_1_v_tc_in_0'

An attempt to modify the value of disabled parameter 'GEN_F1_VBLANK_HEND' from '640' to '1280' has been ignored for IP 'design_1_v_tc_in_0'

design_1_v_axi4s_vid_out_0_0

こちらはポートが違う

fifo_read_level っていうポートが追加されている?

 

でした。

うーん。バージョンが違うってやっかいですね。

 

ブロック図を見てみます。

f:id:keroctronics:20200516203323p:plain

 

まずは右下にあるv_axi4s_vid_out_0

f:id:keroctronics:20200516204108p:plain

fifo_read_level[12:0] っていうポートがあります。これが増えてるってことなんでしょう。

ドキュメント見てもよくわからんですね。無視してよさそうです。

 

 

次にdesign_1_v_tc_out_0 です。

パラメータの設定に問題があるようです。

IPをダブルクリックして Default/Constantのタブを見てみます。

f:id:keroctronics:20200516211923p:plain

例えばこのエラー

An attempt to modify the value of disabled parameter 'GEN_F0_VSYNC_HSTART' from '640' to '1280' has been ignored for IP 'design_1_v_tc_out_0'

f:id:keroctronics:20200516212036p:plain

このVSync Start かと思われます。ここを1280にできませんってことなんでしょうか。

元々のIPの設定はどこにあるのか?と探してみたら

vivado_proj\zybo-z7-10-hdmi.srcs\sources_1\bd\design_1\ip\design_1_v_tc_in_0\design_1_v_tc_in_0.xci
にありました。

この中を見ると、該当する箇所が見つかります。

たとえば、先のGEN_F0_VSYNC_HSTART  もともとは1280に設定しようとしています。

ただ、元のファイルも720Pとしての設定のようです。

<spirit:configurableElementValue spirit:referenceId="PARAM_VALUE.VIDEO_MODE">720p</spirit:configurableElementValue>

で、あればこちらも720Pの設定値のままでいいんじゃないの?ってことで、720Pのデフォルトのままにしておきます。

 

じゃぁ次はdesign_1_v_tc_in_0

先のoutもこのinも同じIPの様ですね。

inのこちらは検出のみ行っているようです。

自動検出なのでこちらにパラメータを設定するところはないはず。なのになぜ?

 

というわけで、これらの3つのIPのエラーはそのままにして進めてみます。

 

Generate Bitstream をクリック。

 

問題なく終わったので、

File → Export → Export Hardware

f:id:keroctronics:20200516222413p:plain

include bitstream にチェックを入れてOK


公式の方はSDKを起動してますが、2019.2なのでVitisを起動します。

Tools → Launch Vitis

新しいディレクトリを作って指定しておきました。

f:id:keroctronics:20200516222751p:plain

 

Vitisから File → New → Application Project

f:id:keroctronics:20200516222839p:plain

 

Project nameに HDMI と入力してNext

f:id:keroctronics:20200516222954p:plain

Platformのウィンドウになるので、Create a new platform from hardware (XSA) のタブを選び、+をクリックして先にVivadoで作成したできたdesign_1_wrapper.xsa を指定します。そしてNext

 

Domainはそのままで Next

f:id:keroctronics:20200516223209p:plain

TempalatesではEmpty Applicationを指定してFinish

 

Vitis IDEの画面が立ち上がりました。

f:id:keroctronics:20200516223427p:plain

プロジェクトを右クリックしてImport Sources

ディレクトリにZIPを展開してできたsdk_appsrcを指定します。

以下のチェックボックスのようにしてFinish

f:id:keroctronics:20200516223825p:plain

 

公式の方はここでHDMIケーブルつないでって言ってるけどBuildしなくていいのかな?

よくわかんないからBuildしておきましょう。

f:id:keroctronics:20200516224033p:plain

 

問題なくfinishしました

 

で、動かしてみます。

HDMI IN/OUTにケーブルをつなげろってありますが、今の我が家の環境ではINにつなげられるものが無いので、OUTだけをモニタに接続します。

そしてPROGUART端子にUSBケーブルをPCと接続しPCでTerminalを起動します。ボーレートは115200です。

Vitisの方から Xilinx → Program FPGA

出てきたウィンドウそのままでProgram

DONEの緑LEDが点きました。

 

Projectを右クリックして Run As → Launch on Hardware (Single Application Debug)

f:id:keroctronics:20200516232923p:plain

 

Terminalにこんなメッセージが出てきて、HDMIモニタにグラデーションのついたカラーバーが出てきました。

f:id:keroctronics:20200516233125p:plain

f:id:keroctronics:20200516233352p:plain

ちなみに解像度は、コンソールに出ているように640ⅹ480でした。

 

HDMIの入力を入れてたら、その解像度に合わせてくれるのかもしれません。

コンソールで先のメニューに対して1を入力すると解像度の選択が出てきます。

f:id:keroctronics:20200516233554p:plain

ここで6を指定すると1920ⅹ1080になりました。

ただ、カラーバーは640ⅹ480のままでしたけど。。。

f:id:keroctronics:20200516233847p:plain

違うメニューでちゃんと画面いっぱいにカラーバーがでるようにもなりましたし、違う画も出ました。

フレームバッファが3つあったり、HDMI Inからのキャプチャが出来たりするようです。

今の機材で、HDMI入力が試せなかったので、準備しておかないと。。

 

 

 

で、プロジェクトの中身を見てみると、何をHWでやって何をSWでやってってのがわかりますね。

SoCFPGAってのはこういう風に作っていくってことでしょうか?

テストパターンなんてソフトで書いてるんですね。フレームバッファに格納って意味なら一度だけ書けばいいので回路で実装よりはSWの方が合理的ですね。

 

ただ、ソースにある色々な関数やら定義が良くわからんです。

これもどっかのドキュメントに載ってるんですよね。探してみないとなぁ。

でも、ググったくらいじゃ見つからんのだけど。。。