FPGAコンピューティング プラットフォーム「M-KUBOS」基本セットとPYNQ™
前回は「FPGAコンピューティング プラットフォーム「M-KUBOS」のハードウェア構成:モジュラーデザインとMPSoC」というテーマで、M-KUBOSの特長をハードウェアの面からお伝えしました。
今回は、M-KUBOSをご購入いただいた際の基本セット、そしてM-KUBOSを活用することによるPYNQ™の新しい可能性をお伝えします。
M-KUBOSの基本セット
FPGAを採用するメリットは「小ロット量産」、「Time to market」です。
つまり、FPGAで開発をした後に市場へ投入できるまでの時間が大幅に短いことを強みとしています。しかし、開発期間についてはなかなか改善が進んでいきません。
そこで、ユーザーが開発時間を浪費しないように、M-KUBOSには基本的な説明書に加え、厳選した10種類のリファレンスデザインを用意しています。
図1 M-KUBOSの基本セット
まず添付されるドキュメントの種類について説明します。
M-KUBOS Hardware User Guide
M-KUBOSの設計者自身が書いたハードウェアのマニュアルです。
基板に関することはこれで理解できます。
電源ツリー、クロックツリー、最近では当たり前になってきたI2Cによる低速IO制御関係のアドレス表が添付されています。
図2 M-KUBOS Hardware User Guideの主な内容
M-KUBOS Software User Guide
Vivado® Design Suite HLx editionを対象としたデザイン開発をすぐに始められる、スケルトンデザイン(雛形デザイン)について解説しています。
- JTAGプログラミングの手順
- GTHとGTYが正常に動作しているか確認するための方法
- Blockデザインの開始方法(PS部の設定方法)
- 2019.1と2019.2以降の対応の違い
- SDカードとLinux起動
- HLSは如何すればよいのか?
- EtherのMACアドレス、SATA、USBメモリは如何したらよい?
- LinuxからCANやI2Cへのアクセス試験方法
- ベアメタル(OSを含まない、ソフトウェア)のリファレンスデザイン
- FreeRTOSのリファレンスデザイン
- Linuxのリファレンスデザイン
M-KUBOS Reference Design
重要かつ厳選したデザインやTipを用意しています。
- XDCファイルとSystemブロックについて
- LED点灯テスト
- M-KUBOSに合わせたPS部の設定
- AXIアドレスの割り当て
- PL部をダイナミックにプログラミングする方法
- FSBL (First Stage Boot Loader)
- ベアメタルによるHello World
- SDKのワークスペースの再構築方法
- PetaLinuxの最小構成
- M-KUBOS用のPYNQ
- PetaLinuxでPython
- SDカードでのスタートアップ
- Pythonでハードウェア制御例
なお、リファレンスデザインについては、今後増強していく予定です。
FSBL (First Stage Boot Loader) について
このリストの中でもっとも重要なのは「FSBL」です。
FSBLとは、起動直後にARMが最初に実行するコードです。
基板全体の設定(ARM内部、PLL、Etherなど)を行い、Linuxを起動したい場合は、U-Bootへ繋げなければなりません。
FSBLはユーザーが自ら開発することも可能ですが、開発工数が膨大になってしまいますので、事前に準備しています。
図3 FSBL (First Stage Boot Loader) の位置づけ
M-KUBOS Getting Started Guide
添付されているSDカードに書き込まれているPetaLinuxの起動手順を解説しています。
M-KUBOSの初期動作確認に使用していただくことを目的としています。
その他に12G-SDI基板と一緒にご購入いただきましたユーザーには、6G/12Gの自動切換え機能付きのスルーパス方式のリファレンスデザインを、DP1.4拡張基板をご購入のユーザーには同じくスルーパス方式のリファレンスデザインなども用意しています。
M-KUBOS PYNQ™ Getting Started Guide
デバッグ効率を大幅に向上させるのが、LinuxとPythonの環境です。この環境を実現したのが「PYNQ™」です。
基本セットの購入時にはこのセットが付属されており、Python環境でPL部の検証や、ハードウェアオーバーレイと読んでいるPL部の書換えを再起動不要で行うことができます。
PL (Programmable Logic) 部のロジックをPythonで動作検証できることもM-KUBOSのひとつの特長です。
PYNQ™の新しい可能性
コンピュータビジョン、通信、産業用組み込みシステム、さらには増加しつつあるIoTなど、計算負荷の高いアプリケーションのハードウェア設計の効率を高めるため、設計者は以前からFPGAやSoCを採用してきました。
図4 計算負荷の高いアプリケーション
しかし、従来のFPGAやSoCのプログラミングに含まれる詳細な手順が障壁となり、設計者は代わりとなる処理ソリューションを求めるようになりました。
そこで登場したのがJupyter NotebookをベースにしたPYNQ™(Python Productivity for Zynq®)開発環境です。これによりFPGAのプログラミングに新しい道が開かれました。
PYNQ™活用によるメリット
PYNQ™をサポートするように設計された開発ボードを使うと、FPGAやSoCの経験がほとんどない開発者でも、FPGAやSoCの性能を十分に活用して計算負荷の高いアプリケーションの高速化設計を行うことができます。
M-KUBOSの基本セットの購入時にはこのセットが付属されており、Python環境でPL(Programmable Logic)部の検証や、ハードウェアオーバーレイと読んでいるPL部の書換えを再起動せずに行うことができます。
ソフトウェア開発も簡単に
FPGAやSoCを使った開発での最後の難関はソフトウェアです。特にSoCはARMプロセッサでプログラムを実行しないと動作しません。通常、SDKやPetaLinuxでブートイメージを作成しますが、それなりに労力がかかるものです。
M-KUBOSではbitファイルができていれば、わずか3分でレジスタをコントロールするソフトウェアを作ることができます。
M-KUBOSではOSとしてPetaLinuxでビルドしたLinux以外に、PYNQ™を動作させることもできます。
「M-KUBOS 基本セット」ではイメージファイルを提供しており、ユーザーが microSD カードに書き込むだけで PYNQ™を起動できます。
PYNQ™活用でできること
PYNQ™を使えば、例えば以下のようなことが可能です。
- 外部PCのWebブラウザでM-KUBOSに接続し、Jupyter NotebookやJupyterLab を実行する。
- sshで接続し、M-KUBOSでUbuntu Linuxのコマンドを実行する。
- M-KUBOSを再起動することなく、PL (Programmable Logic) のコンフィグレーションを書き換える。
- PythonスクリプトでMPSoCのPL部をコントロールする。AXIやAXI-Liteで接続された IP・ユーザーロジックとのデータの転送を簡単に実行できる。
- Pythonで作成したデータを即座にPL部に転送する。
- PL部から転送したデータを即座にPythonで処理し画像化する。
- Pythonに限らず、C, C++ などの言語でアプリケーションを開発できる。
- 各種USB周辺機器に接続できる。
- aptやpipコマンドでソフトウェアを追加インストールできる。
PYNQ™はザイリンクスのプラットフォーム上で動作するオープンソース・プロジェクトとして公開されています。
詳細については、以下の Web ページをご覧ください。
http://www.pynq.io/
JupyterLabの活用
Jupyter notebook の発展系である JupyterLab を使うには、 M-KUBOS に LAN または 1対1 のイーサネットで接続し、PC (Windows, Linux, Mac など)のブラウザで http://192.168.2.99/lab を開きます。
M-KUBOS にはデフォルトで固定の IP アドレス 192.168.2.99 が設定されていますが、これは変更することも可能です。
図5 PC接続
図6 設定画面
活用のための手順
Python で ハードウェアをコントロールするためには、まず File → New → Notebook で Notebook を新規に作り、セルに Python コードを入力していきます。
最初に PYNQ™ライブラリの Overlay を使って bit ファイルを PL 部分に書き込みます。
このとき AXI 接続された IP・ユーザーロジック が自動的に取得され、それらを IO として write/read できるようになります。
PYNQ™ライブラリではメモリマップのレジスタ以外にも、I2C, GPIO, DMA コントローラなどにアクセスするための関数が提供されています。セルで記述した各部分の動作を確認しながらプログラムを作り上げていくことが可能です。
さらに、Markdown で文書を記述することで、コードや実行結果を含めたドキュメントにまとめることもできます。
また、JupyterLab では PC のブラウザからファイルのアップロード/ダウンロードや Linux コマンドの実行を行うこともできます。
ファイルのアップロードは File Browser の Upload Files ボタンをクリックまたはファイルのドラッグ&ドロップ、ダウンロードはファイルを選んで右クリックし Download で実行できます。
さらに、File → New → Terminal で新しいタブが開き、ssh 接続のターミナルと同様に Linux のコマンドが実行できます。このターミナルは root 権限で実行されているため、パスワードなしでハードウェアにアクセスするコマンドを実行できます。
一方でシステムに意図しない変更を与えないよう注意が必要です。
このように、PYNQ™ を使えば、イーサネットを接続するだけで、FPGAやSoCのダイナミック・コンフィグレーションからハードウェア制御、データ解析に至る開発環境を容易に構築することができます。
図7 PYNQ™を活用した開発環境の構築
慶應義塾大学理工学部 天野 英晴 教授からのコメント
慶應義塾大学理工学部 天野 英晴 教授より、M-KUBOSについて以下のようなコメントをいただいていますので、紹介させていただきたいと思います。
「今回PALTEKで開発している基板本体とベクトロジーが提供する基本環境を装備したM-KUBOSは画期的な製品になります。FPGA側のインターフェイス、ホストとのインターフェイスをよく整備すれば、今までの組み込み的なZYNQ®の使い方に不満を持つユーザーを広く取り込むことが可能ではないかと思います。」
まとめ
ご覧いただいたように、M-KUBOSにはユーザーの皆様の設計時間を短縮するよう、マニュアルやリファレンスデザインを用意させていただいています。リファレンスデザインについては、今後も追加していく予定です。
次回は、M-KUBOSのアプリケーション例についてお伝えします。
M-KUBOSについて、ご興味のある方はぜひともお問い合わせください。
また、今回の記事に関する説明動画をご用意していますので、ぜひともご覧ください。