4. Zynq VivadoでZYBO向けプロジェクト作成からBitstream出力まで

とりあえずプログラムやFPGAを書き込めるようになりたいですよね。
サンプルとしてLinuxとシリアル通信でHello worldを送るっていうのが元々用意されていますので。
それを使ってFPGAを使わずにHello worldだけを出してみましょう。

ZYBO用ファイルを手に入れる

VivadoでZYBOで動くものを作るわけですが、ZYBO用の設定が必要になります。
どういう周波数でこのピンはこうなっててみたいなやつですね。
残念ながらまだ今はVivadoに最初からZYBOの設定は入っていません。
ZYBOのサイトから必要なものをダウンロードします。
DigilentのZYBOのサイトへ行きます。
http://www.digilentinc.com/Products/Detail.cfm?NavPath=2,400,1198&Prod=ZYBO
ここにはZYBOの回路図などもあるので後々役に立つかもしれません。
今回はVivado用の2つのファイルをダウンロードします

  1. ZYBO Board Definition File for configuring the Zynq Processing System core in Xilinx Platform Studio and Vivado IP Integrator.
  2. ZYBO Master XDC File for Vivado designs.

です
vivado19

zipファイルになってますから、解凍してわかりやすい場所においておきましょう。

Vivadoプロジェクトを作る

では、Vivadoを開きましょう。
最初はこんなのが開くと思います。
すべてのファイルはプロジェクトで管理されますので、プロジェクトを作ります。
そのプロジェクトに「こういう回路なんだよ〜」「こういうFPGAを作ってね〜」と設定していく感じです。
ではCreate New Projectを押してください

vivado12

 

説明だけの画面が出てきますが Next

vivado13

 

プロジェクトの名前とプロジェクトのフォルダを聞かれます。例えば名前をnameにしてLocationをC:¥projectsにしたら
C:¥projects¥name
というフォルダが作られて、そこにすべてが入ります。(Create project subdirectoryにチェックが入っていればね)

vivado14

 

次に聞かれるのはどんなプロジェクトを作るかです。
RTLを選択してNextを押します。

vivado15

次の2つはスキップします。SourceとExistingIPです

vivado16

vivado17

ただし、Constraintは設定をします。さっきZYBOのページからDLしてきたやつを設定します。

Add Constraintを押してください。

vivado18

ダウンロードした2つのうちZYBO_Master.xdcというのを選択します。

vivado20

そうするとリストに出てくると思います。

下にプロジェクトフォルダにこれをコピーするかどうか聞かれていますが、基本的にプロジェクトで使うファイルというのはプロジェクトと同じ場所にもあったほうが良いのでチェックを入れておきましょう。

vivado22

次に出てくるのがどのチップを使うかです。

ZYBOに載っているのはこの中で言うと
xc7z010clg400-1というやつです。
リストには色々なチップがありますが、FamilyやSub-Familyなどでリストから絞れます。

vivado23

ここまでくればOKです。
「プログラムとIPがなにもないけど、あとから追加するんだよね?」という警告が出てますがそのとおりなのでこのまま「Finish」押します。

vivado24

これでプロジェクトファイルは作成できました。

ZYBO用BlockDesign

今回の目標はFPGAガン無視でHelloWorldを出すことです。
「IPって何?」って人もいると思いますが、ちょっと説明は軽いものだけにしてプロジェクトを作り終わるところまでやっていきたいと思います。
ZYBO用のブロックデザインを作ります。

左側のペインが「Flow Navigator」というプロジェクト全体に関するものです。
この中に「Create Block Design」というのがあると思います。
これを押してDesign nameを適当に決めてOKを押してください。

vivado25

OK押すとDesignっていう中央上のエリアにあなたが名前をつけたものが出てくると思います。
Blockと言うのは簡単に言うとzynqの中の配線や外との配線を決めるためのものです。実際の配線情報などはDiagramで設定します。今、右側のDiagramの中は真っ白で何も無いですが、ここにZynqのプロセサIPを追加しましょう。

vivado26

ICっぽい絵にプラスのマークが付いているのがIPの追加です。
zynqって検索窓に打つと2つぐらい出てくると思いますが 「ZYNQ 7 Processing System」ってのを選びます。

vivado27

すると、Diagram画面にZynqチップが出てきます。

vivado28

ただ、このzynqプロセサはZYBO用の設定になっていないプレーンな状態なので、ZYBO用にカスタマイズします。
このチップをダブルクリックするとこのチップの設定に入れます。

vivado29

無駄にカッコイイ画面が出てきますが、これがZynqチップの中のブロックデザインになります。
上の方に「Import XPS Settings」ってのがあると思います。これでZYBOのサイトからダウンロードしてきたもう1つの方のファイルを選択肢します。「ZYBO_zynq_def.xml」というファイルです。
読み込むとさっきまで無かったチェックマークがUARTに入ったりクロックの設定が変わったりします。
これらが正しく変わらないとまともに使えないので、今後新しいプロジェクトを作るときも忘れないようにしましょう。終わったら「OK」押して閉じます。

vivado31

すると、さっきと違って右側の数が増えていると思います。
これらはzynqの入出力で、基本的には左が入力で右が出力です。
マウスで配線できます。1つやってみましょう。
今回は使わないのですが左側にある1つだけのやつがFPGAのクロック(入力)になります。
右側のFCLK_CLK0というのがクロック出力ですのでそれらをつなぎましょう。
マウスを持って行くとマウスがペンのマークに変わります。そのまま2つをつなぐとこうなります。

vivado32

これでFPGAにクロックを供給できます。また、DDRとFIXED_IOに何も繋がってませんが、ここにはメモリなどがZYBO上では繋がってますのでIOとして出してあげます。
それぞれ右クリックして「Make External」を押します。

vivado37

それぞれ追加するとIOとしてzynqから出ているのがわかると思います。

vivado38

ちなみにDiagramが正しいかどうかはValidation機能でチェックできます。
IP追加ボタンの少し下にValidationというのがあるので押してみましょう。下のようなダイアログが出ればOKです。

vivado34

論理合成

論理合成までは3 stepが必要です。実はまだFPGA用のHDLすら書けない状態です。
まず、HDLを記述出来るようにしましょう。そのためにはCreate HDL Wrapperが必要です。
中央上のエリアはタブで切り替えられるようになっています。「Source」というタブにします。
そこであなたが付けた名前のDesignSourceがあると思います。それを右クリックして「Create HDL Wrapper」を選びます。

vivado35

 

 

すると、2つの選択肢が出てきます。
作成するWrapperの管理を自分でするのがVivadoに任せるのかということです。
Vivadoに任せるので「Let Vivado manage wrapper and auto-update」を選びOKを押します。

vivado36

すると、SourceのHierarchyの中にVerilog-HDLかVHDLのファイルが作成されます。
ここに来て初めてFPGAをいじれるようになったわけです。
そして、このHDLファイルにはDDRとFIXED_IOの情報がちゃんと載っています。ただ配線情報だけが載っていて何もしないですけどね。

次に一番左にある「Generate Block Design」を押します。特に選択肢もないのでそのままGenerateを押します。

次に最後の論理合成です。
もちろん論理合成だけできますが、今回はBitstreamを作ってSDKに渡して、SDKからHelloworldを書き込むのでBitstreamを出しましょう。
Generate Bitstremを押します。すると、「論理合成してないけど、やりましょうか?やってからbitstrem出しますよ」と聞かれるので「OK」を押します。
すると数分とかでbitstreamの作成まで終わります。
正常に完了するとダイヤログが出てきて「View Log」と「Open Hardware Manager」みたいなのが出てきます。どっち選んでもいいですがCancelで閉じても良いです。

Export

作成されたBitstreamを出力します。
「File」->「Export」->「Export Hardware」を選びます。
ここで 「Include bitstream」にチェックを入れて出力します。

vivado42

出力する場所はプロジェクトの場所で大丈夫です。

 

今回Vivadoでやるのはここまでです。
最初だしどれも謎だしでちょっと大変ですが、もうすぐ終わります。
次回はBitstreamを使ってSDKからHelloworldまでやります。