2016年11月20日日曜日

私家版PYNQ FAQ(購入前)

先日オープンソースカンファレンス2016東京でIkaLogを出展した際、PYNQ-Z1をIkaLogのデモ用ハードウェアに利用したのですが、その際に色々と質問されることがありました。今回はPYNQ-Z1がどのようなものなのかについて、私の偏った視点から紹介します。

PYNQって何ですか?


PYNQというのは、基板やLSIパッケージではなく、Xilinx社が提供する「Jupyter Notebookから使えるFPGAデモシステム」を指しています。以下はXilinx社が公開しているPYNQプロジェクトの概要を引用したものです。

PYNQ is an open-source project from Xilinx that makes it easy to design embedded systems with Zynq All Programmable Systems on Chips (APSoCs). Using the Python language and libraries, designers can exploit the benefits of programmable logic and microprocessors in Zynq to build more capable and exciting embedded systems. PYNQ users can now create high performance embedded applications with

  • parallel hardware execution
  • high frame-rate video processing
  • hardware accelerated algorithms
  • real-time signal processing
  • high bandwidth IO
  • low latency control

See the PYNQ webpage for an overview of the project, and find documentation on ReadTheDocs to get started.

PYNQ-Z1って何ですか?


PYNQ-Z1はDigilent社が販売するARM搭載FPGAボードであり、Xilinx社のPYNQに対応しています。以下はDigilentが紹介しているPYNQのスペックです。

ZYNQ XC7Z020-1CLG400C:
  • 650MHz dual-core Cortex-A9 processor
  • DDR3 memory controller with 8 DMA channels and 4 high performance AXI3 slave ports
  • High-bandwidth peripheral controllers: 1G Ethernet, USB 2.0, SDIO
  • Low-bandwidth peripheral controller: SPI, UART, CAN, I2C
  • Programmable from JTAG, Quad-SPI flash, and microSD card
  • Artix-7 family programmable logic
  • 13,300 logic slices, each with four 6-input LUTs and 8 flip-flops
  • 630 KB of fast block RAM
  • 4 clock management tiles, each with a phase-locked loop (PLL) and mixed-mode clock manager (MMCM)
  • 220 DSP slices
  • On-chip analog-to-digital converter (XADC)

Memory:
  • 512MB DDR3 with 16-bit bus @ 1050Mbps
  • 16MB Quad-SPI Flash with factory programmed globally unique identifier (48-bit EUI-48/64™ compatible).
  • MicroSD slot

Power:
  • Powered from USB or any 7V-15V source (see recommended products)
  • USB and Ethernet:
  • USB-JTAG Programming circuitry
  • USB-UART bridge
  • USB OTG PHY (supports host only)
  • Gigabit Ethernet PHY

Audio and Video:
  • Electret microphone with pulse density modulated (PDM) output
  • 3.5mm mono audio output jack, pulse-width modulated (PWM) format
  • HDMI sink port (input)
  • HDMI source port (output)

Switches, push-buttons, and LEDs:

  • 4 push-buttons
  • 2 slide switches
  • 4 LEDs
  • 2 RGB LEDs

Expansion Connectors:

  • Two standard Pmod ports
  • 16 Total FPGA I/O
  • Arduino/chipKIT Shield connector
  • 49 Total FPGA I/O
  • 6 Single-ended 0-3.3V Analog inputs to XADC
  • 4 Differential 0-1.0V Analog inputs to XADC

搭載されているはXC7Z020-1CLG400Cというもので、デュアルコアのARMプロセッサが搭載されたFPGAパッケージです。そこにLEDやスイッチ、Arduino互換のペンヘッダ(メス)、HDMI入出力、オーディオコーデック(コンピュータエンジニア的にはサウンド用DAC/ADCといったほうがピンときそう)、Digilentが提供する拡張基板が接続できるPMODヘッダなどが搭載されています。

SDカードスロットが搭載されており、ここからLinux環境をブートしてLinuxマシンとして利用できます。ARMプロセッサにイーサネットポートとUSBホスト用コネクタが接続されていますので、この部分は組み込みARMプロセッサとしても利用できます。

Raspberry Pi とのARMプロセッサの比較は?


CPU

  • ZYNQ: ARM7 2cores、650MHz
  • Raspberry Pi 3: Cortex A53、4 cores、1.2GHz

Memory

  • PYNQ: DDR3 512MB
  • Raspberry Pi 3: LPDDR2 512MB

GPU (Framebuffer)

  • PYNQ: なし
  • Raspberry Pi 3: あり

H.264/MPEG2ハードウェアエンコーダ/デコーダ

  • PYNQ: なし
  • Raspberry Pi3: H.264デコード、エンコード(追加オプション)、MPEG2(追加オプション)

ネットワーク

  • PYNQ: イーサネット
  • Raspberry Pi 3: イーサネット(有線、無線)


PYNQ向けの設計・開発に必要なソフトウェアは?


ロジックの設計Xilinx Vivado HL Design Design Suite(Eclipseのような設計環境)のWebPack Editionが無償で利用できます。最近は、無償ライセンスでも機能制限が緩くなっており、評価ボード上のXilinx FPGAパッケージ(最上位のVirtexを除く)を相手に開発する程度であれば不自由なく使えるようになりました。高位合成についてもVivado HLS が 2016.2 あたりから無料で利用できます。ただし、WebPack Editionはツール利用状況の統計情報がXilinx社に吸い上げられます。

Xilinx Vivado HL Design Suite によってFPGA向けのビットストリーム(コンピュータのバイナリファイルに相当)生成処理は非常に重いため、できるだけ高クロック多コアで快適な開発環境(Linuxを強く推奨、もしくはWindowsでも利用可能)が必要になります。Vivado HL Design Suiteはインストールにおよそ20GBの空き容量が必要です。

PYNQで提供されているビットストリームは現在バージョン2016.1向けになっています。より新しい2016.2、2016.3も提供されていますがPYNQのプロジェクトを実行できませんのでPYNQ前提でVivado Design Suiteをインストールするのであれば2016.1をインストールすることをオススメします。なおディスク容量があれば複数バージョンをインストールすることも可能です。


PYNQどこで買えるの?いくら?

Diglientのサイトから購入できます。
http://store.digilentinc.com/pynq-z1-python-productivity-for-zynq/

本稿執筆時点で通常価格229ドル、学生向けには65ドルで販売されており、一人一台までの制限があります。送料が5000円近くかかるそうなので購入時は複数の方でまとめてオーダーし小口数をまとめてもらおうとしている方々もいるようです。経験上オーダーを確定してから2〜3日で日本まで届きます。

購入する場合には、オシロスコープをお持ちでない方には、Analog Discovery 2の同時購入がをオススメしています。AD2はUSB接続し利用できるオシロスコープ/ロジック・アナライザなどとして利用でき、FPGAのほか各種電気回路を作ったときに波形を見るのにも使えるからです。アカデミック対象であれば割引がありますし、Analog Parts Kitは学生による同時購入に限り無料で販売してくれるようですのでぜひ入手してください(私は持っていません)。

オシロやロジアナ皆無でFPGAや電子回路をいじるのはprintfデバッグすら封印して一発で複雑なプログラムを完成させようとするようなものです。

私が持っているのは初代Analog Discoveryですが、実際持っているとすごい便利なのでとってもオススメです。