16 December 2013

Zynq とは

最近、仕事で Zynq やってます。

Zynq というのは、 Xilinx からリリースされている ARM + FPGA の SoC である。 Xilinx は All Programmable SoC というキャッチフレーズで呼んでたりする。

なお、Altera からは SoC FPGA という同様のものが出ている。

CPU と FPGA を1チップに、というコンセプトは今に始まったことではない。 私の知る限り、 Virtex II のころから PowerPC 内蔵 FPGA はあったし、ソフトコアなら Microblaze もある。

しかしながら、世の中の流れは ARM なわけで、 ARM を採用している時点で裾野は広い。 かくいう私も ARM 以外のアーキはさっぱりわからないので、これは助かる。 しかも SoC としての完成度が高いので、使いこなせればいろいろと応用が効きそうだ。使いこなせればね。。

とりえあず、入門程度に LED を光らせる回路を作って、ARM から制御する簡易プログラムを組むぐらいのことならば、チュートリアル見つつやっていけばなんとかなる。

ただし、最終的には、自作のハードウェアIP を実装して、 Linux のデバイスドライバも書いて、っていうところに行き着くことが多いだろうから、なかなか一筋縄ではいかなさそうだ。

ともかく愚痴だけにならないように、役に立ちそうな内容を書き綴っていけたらと思う。

最初の分かれ道: ISE か Vivado か

現時点では、IDE (統合開発環境)の選択肢が大きく分けて 2つある。

ISE は昔からあるツールで Xilinx の FPGA をやったことのある人にはお馴染みだろう。

一方、Vivado (ビバドと読む) は新しいツールである。

ISE で Zynq をやる場合

プロジェクトマネージャーとして 「Project Navigator」か 「PlanAhead」を使うことになる。

「Project Navigator」は内部から「PlanAhead」を呼び出すので、プロジェクト管理自体に「PlanAhead」を使ってしまうのがよいと思う。 「PlanAhead」上で RTL や制約ファイル、ジェネレートしたIPなどの全体の管理を行い、ハードウェア情報のエクスポートも行う。

IP を生成したり、Zynq の設定をいろいろといじくったりするには、 XPS (Xilinx Platform Studio) を使う。

FPGA のコンフィグレーションには iMPACT を使い、回路の解析(ロジアナ)には ChipScope を使う。

配置配線結果を見ようと思ったら、 FPGA Editor が起動する。

お分かりのように、用途ごとにツールが乱立しており、ISE はそんなツールの集合体なのである。

上記はハード屋さんが使いこなすツールで、さらにソフトの開発には XSDK (Xilinx SDK = Eclipse を Xilinx 用に拡張したもの)を使う。

Vivado で Zynq をやる場合

Vivado を選択した場合、ハード周りのツールは Vivado 1つに統合される。 ハード開発に Vivado、ソフト開発に XSDK と2つのツールで済んでしまうのはメリットだ。

Vivado の長所短所

長所

  • PlanAhead, XPS, iMPACT, ChipScope, FPGA Editor など、用途ごとにいろんなツールが起動していたのが、Vivado 1つで済む。

  • IP間の接続などを Schematic で設計可能。

    XPS では、IP 間のバスや信号をダイアログで選択しながら、接続していく(画像左側)ため、けっこう手間。 Schematic 表示も可能ではあるが、あくまで表示だけであって、Schematic 上で編集したりはできない。

    一方、Vivado では回路図を引くような感じで、さくさくとポート間を接続していけるので、楽(画像右側)。

    XPS XPS

  • 今後のアップデートが期待できる。

    Xilinx の開発の中心はすでに ISE から Vivado へと移っていると思われる。 今後 ISE のメンテを積極的にやっていくつもりはないであろうから、すでに発覚している ISE のバグの修正はあまり期待できない。 (特に、Linux 上で buggy な PlanAhead を使うのに嫌になっている。)

  • リモートで、FPGA のコンフィグレーションやロジック解析ができる。

  • 合成、配置配線が ISE より速い。

短所

  • よくも悪くも、新しいツールのため、こなれていない。

    使っていた限り、現時点の最新版 (2013.2) でも十分使えると思うが、いくつかバグも目についた。 (Linux 版で、Zynq 設定の GUI インターフェースがバグってる。) ただし、今後のアップデートで、修正が期待できる。

  • Vivado に対応していないドキュメントが結構ある

    チュートリアルなどが、ISE を対象に書かれている。 ある程度は、ISE と Vivado の両方の使い方を理解した上で、 ISE について書かれたドキュメントを頭の中で Vivado に変換しながら、読み進めていくのが良さそうだ。

  • ISE に慣れた人にとっては、新たな勉強が必要

    ISE との使い方が大きく異なるということはないのだが、ある程度差分があるので、多少の勉強は必要だ。 特に、制約ファイルは ISE で長年使われていた UCF ではなくて、 Vivado では XDC という Tcl ベースの書き方になる。

以上のことから、ツールとしては ISE と Vivado を両方共インストールし、両方のツールの基本的な使い方を理解 (少なくとも ISE を対象にしたドキュメントを読み進められるように)した上で、Vivado をメインに使っていくことにする。

Windows か Linux か

FPGA も巨大になってきて、64bit OS 上にインストールするのがほぼ必須になってきているが、さて、ツールのインストール先は Windows か Linux か。

Zynq 上で Linux を動かすのならば、ISE/Vivado も Linux 版をインストールするのがよいでしょう。

Linux Kernel のビルドには Linux ホストが必要になるためである。 ハード開発は Windows、ソフト開発は Linux と分かれていると、生成したバイナリをいちいち転送して、結合して、なんてのを繰り返すことになって面倒なのだ。

ハード専任担当者でソフトを触る予定がない人や、Linux を動かす予定がない人は、Windows/Linux は好きに選べばよい。

なお、ツールのライセンスはノードロックが通常(MACアドレスを登録します)と思いますが、3回まではライセンスの移動できます。 Xilinx のページからライセンスファイルを再発行すればOK。 なお、無限に移動させたい場合は、USB - Ethernet 変換を買って、それをドングル代わりに使うのがよいかも。。

いろいろ書きましたが、 Windows は 私の趣味に合わないので、以下 Linux 上に ISE と Vivado をインストールして進めます。

ただし、 Linux 版の ISE/Vivado で正式にサポートされているのは Fedora であって、 Ubuntu はサポート対象外です。

ただし、多少の設定を最初にやれば、 Ubuntu でも十分に使えるようになる。 Ubuntu だけあって、このあたりの情報も検索すればいろいろと出てくるので問題無し。

次回は、ISE/Vivado を Ubuntu にインストールする際の設定をまとめようと思う。



blog comments powered by Disqus