とりあえずプログラムや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つのファイルをダウンロードします
- ZYBO Board Definition File for configuring the Zynq Processing System core in Xilinx Platform Studio and Vivado IP Integrator.
- ZYBO Master XDC File for Vivado designs.
zipファイルになってますから、解凍してわかりやすい場所においておきましょう。
Vivadoプロジェクトを作る
では、Vivadoを開きましょう。
最初はこんなのが開くと思います。
すべてのファイルはプロジェクトで管理されますので、プロジェクトを作ります。
そのプロジェクトに「こういう回路なんだよ〜」「こういうFPGAを作ってね〜」と設定していく感じです。
ではCreate New Projectを押してください
説明だけの画面が出てきますが Next
プロジェクトの名前とプロジェクトのフォルダを聞かれます。例えば名前をnameにしてLocationをC:¥projectsにしたら
C:¥projects¥name
というフォルダが作られて、そこにすべてが入ります。(Create project subdirectoryにチェックが入っていればね)
次に聞かれるのはどんなプロジェクトを作るかです。
RTLを選択してNextを押します。
次の2つはスキップします。SourceとExistingIPです
ただし、Constraintは設定をします。さっきZYBOのページからDLしてきたやつを設定します。
Add Constraintを押してください。
ダウンロードした2つのうちZYBO_Master.xdcというのを選択します。
そうするとリストに出てくると思います。
下にプロジェクトフォルダにこれをコピーするかどうか聞かれていますが、基本的にプロジェクトで使うファイルというのはプロジェクトと同じ場所にもあったほうが良いのでチェックを入れておきましょう。
次に出てくるのがどのチップを使うかです。
ZYBOに載っているのはこの中で言うと
xc7z010clg400-1というやつです。
リストには色々なチップがありますが、FamilyやSub-Familyなどでリストから絞れます。
ここまでくればOKです。
「プログラムとIPがなにもないけど、あとから追加するんだよね?」という警告が出てますがそのとおりなのでこのまま「Finish」押します。
これでプロジェクトファイルは作成できました。
ZYBO用BlockDesign
今回の目標はFPGAガン無視でHelloWorldを出すことです。
「IPって何?」って人もいると思いますが、ちょっと説明は軽いものだけにしてプロジェクトを作り終わるところまでやっていきたいと思います。
ZYBO用のブロックデザインを作ります。
左側のペインが「Flow Navigator」というプロジェクト全体に関するものです。
この中に「Create Block Design」というのがあると思います。
これを押してDesign nameを適当に決めてOKを押してください。
OK押すとDesignっていう中央上のエリアにあなたが名前をつけたものが出てくると思います。
Blockと言うのは簡単に言うとzynqの中の配線や外との配線を決めるためのものです。実際の配線情報などはDiagramで設定します。今、右側のDiagramの中は真っ白で何も無いですが、ここにZynqのプロセサIPを追加しましょう。
ICっぽい絵にプラスのマークが付いているのがIPの追加です。
zynqって検索窓に打つと2つぐらい出てくると思いますが 「ZYNQ 7 Processing System」ってのを選びます。
すると、Diagram画面にZynqチップが出てきます。
ただ、このzynqプロセサはZYBO用の設定になっていないプレーンな状態なので、ZYBO用にカスタマイズします。
このチップをダブルクリックするとこのチップの設定に入れます。
無駄にカッコイイ画面が出てきますが、これがZynqチップの中のブロックデザインになります。
上の方に「Import XPS Settings」ってのがあると思います。これでZYBOのサイトからダウンロードしてきたもう1つの方のファイルを選択肢します。「ZYBO_zynq_def.xml」というファイルです。
読み込むとさっきまで無かったチェックマークがUARTに入ったりクロックの設定が変わったりします。
これらが正しく変わらないとまともに使えないので、今後新しいプロジェクトを作るときも忘れないようにしましょう。終わったら「OK」押して閉じます。
すると、さっきと違って右側の数が増えていると思います。
これらはzynqの入出力で、基本的には左が入力で右が出力です。
マウスで配線できます。1つやってみましょう。
今回は使わないのですが左側にある1つだけのやつがFPGAのクロック(入力)になります。
右側のFCLK_CLK0というのがクロック出力ですのでそれらをつなぎましょう。
マウスを持って行くとマウスがペンのマークに変わります。そのまま2つをつなぐとこうなります。
これでFPGAにクロックを供給できます。また、DDRとFIXED_IOに何も繋がってませんが、ここにはメモリなどがZYBO上では繋がってますのでIOとして出してあげます。
それぞれ右クリックして「Make External」を押します。
それぞれ追加するとIOとしてzynqから出ているのがわかると思います。
ちなみにDiagramが正しいかどうかはValidation機能でチェックできます。
IP追加ボタンの少し下にValidationというのがあるので押してみましょう。下のようなダイアログが出ればOKです。
論理合成
論理合成までは3 stepが必要です。実はまだFPGA用のHDLすら書けない状態です。
まず、HDLを記述出来るようにしましょう。そのためにはCreate HDL Wrapperが必要です。
中央上のエリアはタブで切り替えられるようになっています。「Source」というタブにします。
そこであなたが付けた名前のDesignSourceがあると思います。それを右クリックして「Create HDL Wrapper」を選びます。
すると、2つの選択肢が出てきます。
作成するWrapperの管理を自分でするのがVivadoに任せるのかということです。
Vivadoに任せるので「Let Vivado manage wrapper and auto-update」を選びOKを押します。
すると、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」にチェックを入れて出力します。
出力する場所はプロジェクトの場所で大丈夫です。
今回Vivadoでやるのはここまでです。
最初だしどれも謎だしでちょっと大変ですが、もうすぐ終わります。
次回はBitstreamを使ってSDKからHelloworldまでやります。
コメントを残す
コメントを投稿するにはログインしてください。