FPGA
zynq
TE0720

Getting started with TE0720 - ミニサイズZynqボードTE0720を試す - PSでHello World

More than 1 year has passed since last update.

TE0720という、ドイツのTrenz Electronicsなる会社が作っているZynqボードを入手したので使ってみます。
5x4cmサイズでZ7020が動くというなかなかイケてるっぽいデバイスです。
http://www.trenz-electronic.de/products/fpga-boards/trenz-electronic/te0720-zynq.html
TE0702

ちゃんとXilinxのパートナーらしいです。
日本の代理店はこちら:http://www.trenz.jp/
このサイトにPLだけでLチカさせるチュートリアル( http://www.trenz.jp/tutorial/led0/ )があるので、
ここではPSを使ってHello Worldしてみたいと思います。

環境・ハードウェア

  • xubuntu 14.04
  • Vivado 2015.2
  • TE0720-02-1CF
  • TE0703-04 (Carrier Card)

Board Part File のインストール

最初にTE0720のハードウェア情報が記されたファイルをVivadoに読み込ませます。
https://wiki.trenz-electronic.de/display/PD/Installation
のとおりです。

まず、
http://www.trenz-electronic.de/de/download/d0/Trenz_Electronic/d1/TE0720-GigaZee/d2/board_part_files.html
から
TE0720-BoardFiles-2014.4_V02.zipをダウンロードし、
(直リンク: http://www.trenz-electronic.de/fileadmin/docs/Trenz_Electronic/TE0720-GigaZee/board_part_files/TE0720-BoardFiles-2014.4_V02.zip
適当な場所に解凍します。

次にVivadoにこのフィアルの場所を登録します。

  1. tclコマンドで解凍場所をVivadoに登録する方法
  2. Vivadoのインストールディレクトリ下に直接解凍する方法

の2つがあります。

tclコマンドで解凍場所をVivadoに登録する方法

これのやり方がさらに2つあります。

  1. Vivado起動後にtclコマンドで入力する方法
  2. 初期化スクリプトinit.tclに書いておく方法

結局どちらも同じことですが…

Vivado起動後にtclコマンドで入力する方法

vivado起動後、tclコンソールに
set_param board.repoPaths {/path/to/TE0720-BoardFiles-2014.4-V02/}
(/path/toの部分は解凍した場所に合わせて変えてください)
と入力します。
te0720_board_setting.png

(Vivadoのバージョンが古いと
set_param project.boardPartRepoPaths /path/to/TE0720-BoardFiles-2014.4-V02/
となるらしいです。)

これで、Create New Projectの設定画面では、BoardsにTE0720が現れます。
te0720_board_select.png

初期化スクリプトinit.tclに書いておく方法

Vivadoのインストールディレクトリ以下のscriptsディレクトリにinit.tclを作成し、上記コマンドを書いておきます。
私の環境では、
/opt/Xilinx/Vivado/2015.2/scripts/init.tcl
になりました。

Vivadoのインストールディレクトリ下に直接解凍する方法

例えば
/opt/Xilinx/Vivado/2015.2/
にVivadoがインストールされているとき、
/opt/Xilinx/Vivado/2015.2/data/boards/以下にファイルを解凍してしまいます。

つまり、最終的に、
/opt/Xilinx/Vivado/2015.2/data/boards/board_parts/zynq/TE0720-1CF
/opt/Xilinx/Vivado/2015.2/data/boards/board_parts/zynq/TE0720-1CR
/opt/Xilinx/Vivado/2015.2/data/boards/board_parts/zynq/TE0720-1QF
/opt/Xilinx/Vivado/2015.2/data/boards/board_parts/zynq/TE0720-2EF
/opt/Xilinx/Vivado/2015.2/data/boards/board_parts/zynq/TE0720-2IF
ができます。
これで完了です。

しかし、この方法はXilinx非推奨らしく、ユーザーの責任で行うようにとのことらしいです。

Hello World

プロジェクト作成

Create New Projectで新規プロジェクトを作ります。
上の設定のとおり、TE0720がdefault boardに追加されているはずなので、自分のボードに合わせて選択します。
te0720_board_select.png

ハードウェアデザイン

Create Block Design -> Add IP -> ZYNQ7 Processing SystemでPSを追加します。

次に、tclコンソールで

source path/to/TE0720-BoardFiles-2014.4_V02/board_parts/zynq/TE0720-1CF/0.2/ps7.tcl
apply_ps7_board_setting processing_system7_0

を実行します。path/to/TE0720-BoardFiles-2014.4_V02の部分はBoard Part Fileをインストールした場所に合わせて変えてください。
ps7.tclを実行することでapply_ps7_board_setting関数が定義され、それをprocessing_system7_0に対して使う…って感じなんでしょうか。
ちなみにprocessing_system7_0はPSのインスタンス名(?)です。

これでPSが設定されました。
(Zedboardとかだと、設定画面を開いてPresetsから選べばよかったのですが、TE0720はこのようになっています。
なんとかPresetsに追加できないものだろうか…)

次はRun Block Automationを実行します。Apply Board Presetのチェックを外すよう注意します。

最後にFCLK_CLK0をM_AXI_GP0_ACLKにつないでハードウェアデザイン完成です。
こんな感じになります:
te0720_hello_world_design.png

Validate Designでエラーがないことを確認し、Generate Output Products, Create HDL Wrapperと普通に進めます。

Generate Bitstreamして、SDKにエクスポートまでやってしまいます。

SDK

普通にHello Worldプロジェクトを作って実行します。
この時、TE0703 (Carrier card)のトグルスイッチはすべてONにしておきます。
本来これはSDブートを示すのらしいですが、JTAGを使ったbitstream書き込みからHello world実行まで普通に動きます。