ACRi ルームの検証環境で Vivado や Vitis (SDK) が動かせるようになったら、まずは ACRi ブログの「手を動かす系」のコースを参考に、ハードウェアやシステムの設計に親しくなりましょう。この記事は、ACRi ブログの「手を動かす系」のコースを系統別に紹介したリンク集です。ACRi ブログのコースは3ヶ月ごとに追加されていきますので、新しい「手を動かす系」のコースが追加されれば、この記事も更新されます。
ハードウェア記述言語で設計する
[20Q1.09A] Vivado のインストールと使いかた
[このコースの目次] [このコースの最初の記事]
このコースでは、Xilinx 社の FPGA の開発環境である Vivado WebPACK のインストール手順と使い方を解説しています。プロジェクトの作成方法から、FPGA への書き込みまでの一連の流れについても説明されています。
もちろん ACRi ルームの検証環境には既に Vivado がインストールされていますので、インストールの部分については読み飛ばしてしまっても構いません。自分のマシンにもインストールしたい場合に参考にしてください。
[20Q1.07A] シリアル通信で Hello, FPGA
[このコースの目次] [このコースの最初の記事]
このコースでは、シリアル通信をおこなう回路を題材に、ハードウェア記述言語 (HDL) を使った一連の設計の流れを実際のソースコードを交えながら解説しています。回路の設計と記述のポイントを押さえながら、設計、記述、シミュレーションによる動作検証、実機による動作確認を順番に行います。
[20Q1.06A] 4ビットカウンタでわかる FPGA のための論理回路 入門
[このコースの目次] [このコースの最初の記事]
このコースでは、カウンタ回路を題材に、FPGA を使いこなすために理解しておきたい論理回路の基礎について説明しています。効率的なハードウェア設計のためには、自分が記述している HDL がどのようなハードウェアに変換されるかを知っていることが大切です。
[20Q4.04A] BRAM 達人への道
[このコースの目次] [このコースの最初の記事]
このコースでは、FPGA に搭載された SRAM ブロック (Block RAM, BRAM) の FIFO への活用例について解説しています。用意された BRAM を使って所望のタイミングチャートをどう実現するか、かなり細かいノウハウまで取り上げられています。FPGA を「使える」レベルから「使いこなせる」レベルへのステップアップをめざす時の参考になるでしょう。
C/C++ 言語で設計する
[20Q3.02A] 高位合成で加速するアクセラレータ開発
[このコースの目次] [このコースの最初の記事]
このコースでは、C/C++ 言語からハードウェアを生成する Vivado/Vitis の HLS (高位合成) ツールを活用したアクセラレータ開発について、事例を交えながら解説しています。Alveo カード上の PYNQ 環境上で、C 言語からアクセラレータを生成・利用する方法についても説明されています。
IP コアを使って設計する
[20Q2.02A] IP の世界からこんにちは
[このコースの目次] [このコースの最初の記事]
既に設計・検証済の回路ブロックのことを、IP コアといいます。ソフトウェアで言うところのライブラリのようなものです。
このコースでは、上述の「シリアル通信で Hello, FPGA」で用いた回路を題材に、IP コアを用いたブロック図による設計手順と、回路の IP コアへのパッケージ化の手順を説明しています。このコースの内容は、ある程度以上の規模の回路やシステム (特にプロセッサを含む場合) を設計する際の基礎になります。
[20Q1.08B] FPGA をもっと活用するために IP コアを使ってみよう
[このコースの目次] [このコースの最初の記事]
IP コアは、ブロック図から使うこともできますが、HDL 上で直接呼び出して使うこともできます。このコースでは、仮想 I/O、クロック生成、メモリなど、いくつかの便利な IP コアについて紹介しつつ、その使い方を実例を交えて説明しています。
[20Q3.01B] AXI でプロセッサとつながる IP コアを作る
[このコースの目次] [このコースの最初の記事]
このコースでは、プロセッサと連携して動作する IP コアの設計例について説明します。そこでは AXI (Advanced Extensive Interface) というインタフェースを扱う必要がありますが、そのまま扱うのはなかなか大変です。そのためこのコースでは、インタフェース変換回路をあらかじめ作り込んでおくことで、複雑さの軽減を図ります。
[20Q2.09B] MIG を使って DRAM メモリを動かそう
[このコースの目次] [このコースの最初の記事]
このコースでは、DRAM を使うための IP コアである MIG (Memory Interface Generator) の設定方法と利用・検証について解説します。FPGA 内部のメモリでは、数 MB を超える大容量のデータを扱うことはできません。もしそうしたい場合には、MIG を使うことになります。
Alveo アクセラレータを活用する
[20Q2.03B] 広がり続ける FPGA の応用と人工知能への活用
[このコースの目次] [このコースの最初の記事]
このコースでは、Xilinx 社の統合ソフトウェアプラットフォームである Vitis および人工知能開発キットである Vitis AI の基本と活用例について紹介しています。コースの第3回~第4回では、実際に ACRi ルームの Alveo サーバ上で画像認識を行うためのフローを説明しています。
PYNQ ボードを活用する
[20Q1.01A] PYNQ を使って Python で手軽に FPGA を活用
[このコースの目次] [このコースの最初の記事]
このコースでは、Python で FPGA を手軽に扱える環境である PYNQ についての紹介と、基本的な利用法を説明しています。PYNQ に限らず、ARM プロセッサを搭載した Xilinx 社の FPGA システムオンチップ (SoC) である Zynq シリーズを扱う際に参考となる情報が多いです。
2021年4月時点では、このコースで紹介している PYNQ-Z1 ボードを ACRi ルームの検証環境で利用することはできません (Alveo を搭載した各種サーバでは PYNQ が利用可能です) が、今後 PYNQ-Z1 も使えるようになったら、このコースの内容を参考にぜひ PYNQ での開発を楽しんでみてください。
[21Q1.01B] 自作回路を PYNQ につなぐ様々な方法
[このコースの目次] [このコースの最初の記事]
このコースでは、自作回路を PYNQ から扱う設計例を回ごとに1つ取り上げ、解説しています。おおむね、上述の 20Q1.01A のコースの後半の内容を補完する内容になっていますので、PYNQ の使い方はわかったけれど実際どう開発したものか、と悩んでいる人におすすめです。