ZedBoardでHDMIを使うために、ADV7511のリファレンスデザインで勉強してみます。
こちら:https://wiki.analog.com/resources/fpga/xilinx/kc705/adv7511
元々はZedboard.orgのHDMI Bare Metal Reference Design Using ADV7511 and ADI IP ( http://zedboard.org/reference-designs-categories/hdmi-bare-metal-reference-design-using-adv7511-and-adi-ip ) をやってみようとしたところ古いバージョンのvivadoでしか動かなくて断念したというのもあります。
環境はxubuntu14.04, Vivadoのバージョンは2015.2です。
Evaluation scriptを動かしてみる
ダウンロード
ページ最下部にダウンロードリンク一覧があります。
まずはこの中のEvaluation scriptを動かしてみます。
Zed Evaluation Script
のリンク先のファイルをevaluate.bat
以外すべてダウンロードしてきます(今回はlinuxで動かしているので.batファイルはいらない)。
githubで配布されているのでgit clone
でリポジトリごと落としてくるのが良いのかもしれませんが、
サイズが大きいので今回はファイルを個別にDLしました。(各ファイルのページに行って、Raw
ボタンの上で右クリック、「リンク先を保存」)
元々のディレクトリ構成を真似て
$(BASEDIR)/adv7511/evaluate
以下に置きました。($(BASEDIR)
は適当なディレクトリ)
このディレクトリの中に
- evaluate.tcl
- ps7_init.tcl
- sw.elf
- system.bit
がある状態です。
実行
$ xsdk
でXilinxSDKを起動します。(パスは通しておきます)
今回はXMDコンソールを使うだけなのでWorkSpaceはどこでもいいです。
起動したら、メニューのXilinx Tools -> XMD console でXMDコンソールを起動します。
XMDコンソール内で、上記ディレクトリに移動してtclスクリプトを実行します。
ZedBoardはHDMIケーブルをつなぎ、JTAGブートモードで電源を入れておきます。
また、シリアルコンソールを起動しておくと出力が見れたり、解像度を切り替えるためのコマンドを入力できたりします。
cd path/to/dir/adv7511/evaluate
source ./evaluate.tcl
あとは勝手にビットストリームのダウンロードからベアメタルアプリケーションの実行までやってくれます。
画面に画像が表示されたら成功です。
HDL Reference Design
ハードウェアのビルド
今度はファイルが多いのでgitで落としました。
hdl_2015_r2
ブランチがvivado 2015.2対応です。現在はベータ版らしいので使うときは自己責任で。
$ cd $(BASEDIR)
$ git clone git@github.com:analogdevicesinc/hdl.git
$ cd hdl
$ git checkout hdl_2015_r2
以下の2ファイルを一部書き換えます。
$ vi projects/scripts/adi_project.tcl
$ vi library/scripts/adi_ip.tcl
書き換える箇所は、
+ set REQUIRED_VIVADO_VERSION "2015.2"
- set REQUIRED_VIVADO_VERSION "2015.2.1"
です。対応バージョンは厳密には2015.2.1
みたいですが、ちょろっと書き換えて2015.2
で動かします。
以上が終わったら、いざビルド。
$ cd projects/adv7511/zed/
$ make
ここは論理合成からビットストリーム作成までやるので時間がかかります。
終わったらprojects/adv7511/zed/
以下にプロジェクトができています。
ソフトウェア作成
これもソースをgitで落としてきてブランチを切り替えます。
(こちらはmasterブランチで試していません。もしかしたらmasterでも動くかも)
git clone git@github.com:analogdevicesinc/no-OS.git
git checkout 2015_R2
あとは基本的に https://wiki.analog.com/resources/fpga/xilinx/kc705/adv7511 を見ればできます。