20Q2.01A

FPGA で始めるエッジディープラーニング (1)

みなさんこんにちは。このコースでは近年 AI に使われていることでも話題のディープラーニングを、FPGA を用いて実装する技術について紹介していきます。 このコースでは、ディープラーニングと FPGA 双方の理解を深めることを目標とし、以下の手順で FPGA 上で実際に動作するデザインを作成していきます。 C/C++ でディープラーニングによる推論を行うコード作成高位合成 (HLS: High Level Synthesis) により C/C++ コードをハードウェア記述言語に変換...
コース紹介

ACRi ブログの 20Q1 のコース紹介

ACRi ブログへようこそ。このブログはアダプティブコンピューティング研究推進体が運営しています。 アダプティブデバイスの FPGA を活用するシステム、活用基盤、研究成果などの記事を発信していきます。 アダプティブコンピューティング研究推進体 参加組織 (2020年5月) この記事では、2020年4月に始まったコースを紹介します。 ACRi ブログは、3か月 (クォーター) 単位で新しいコース (連載とも呼びます) を提供していきます。2020年の第1クォーター (20Q1...
20Q1.80Z

20Q1 第1週の ACRi ブログ執筆者による座談会 (2)

2020年の第1クォータ (20Q1) の連載もなんとか終了してほっとしているところですが、今後のブログ執筆者や読者の皆様に裏側の事情をお伝えしようと、第1週のブログ執筆者5名をお迎えして座談会 (ビデオミーティング) を開催しました。 2020年6月12日に開催された座談会の2回目です。前回は ACRi ブログを執筆して悪かった点について話してきました。今回は、良かった点です。 大変だったところはこれくらいにして次にいきましょう。今回 ACRi ブログを執筆してみて良かったところ...
20Q1.80Z

20Q1 第1週の ACRi ブログ執筆者による座談会 (1)

2020年の第1クォータ (20Q1) の連載もなんとか終了してほっとしているところですが、今後のブログ執筆者や読者の皆様に裏側の事情をお伝えしようと、第1週のブログ執筆者5名をお迎えして座談会 (ビデオミーティング) を開催しました。 何回かに分けて、2020年6月12日に開催された座談会の様子をお伝えします。 ブログのご執筆ありがとうございました。今回は100分くらいの座談会を予定しています。まず最初に連載の順番で自己紹介をお願いします。その後、ACRi ブログを執筆して悪かっ...
20Q1.10B

FPGA オリジナルボード作成 ~ 失敗しないためのコンフィギュレーション回路

数年前、ある学会で「FPGA の基板を設計して実験装置を作ったけど、コンフィグがうまくいかなくて半年動いていない」というような話を聞きました。壮大な実験の中のメインとなる装置を作っているという研究報告的な発表だったのですが、よくそんな無駄な時間を過ごしているなと驚愕したものです。しかも周りで聞いている人たちも何も答えられない・・ 今回は失敗しないためのコンフィギュレーション回路について説明します。なお、語呂や語感のためにコンフィグといったりコンフィギュレーションといったり表記が揺れますが...
20Q1.09A

Vivado でのブロック図設計

作成する回路が大きくなってくると、回路を機能毎にモジュール化し、そのモジュール間の接続関係をブロック図で描くと分かりやすくなります。複数のモジュールを1つにまとめた階層構造にすることも可能です。 モジュール化する際のポイントは、その機能の中で後から変更したい機能をパラメータ化して、モジュールの外から入力できるようにすることです。例えば LED の点滅回路では、点滅周期を設定できるようにするなどが考えられます。 ここでは Vivado のインストールと使いかた (2) で作成した L...
20Q1.08B

FPGA をもっと活用するために IP コアを使ってみよう (5)

みなさんこんにちは。この「FPGA をもっと活用するために IP コアを使ってみよう」のシリーズでは、全5回を通じて FPGA を使って実用的なアプリケーションを実装するために必要不可欠な IP コアの使い方を紹介していきます。 最終回となる第5回の今回は、ボトムアップ的な FPGA アプリケーション開発で役に立つ FIFO の使い方を紹介します。FIFO を使うと、いくつかのモジュールでデータを受け渡す時に、それぞれの細かい動作タイミングを気にする必要がなくなります。ソフトウェア・プロ...
20Q1.07A

シリアル通信で Hello, FPGA (5)

実用的な回路の設計・実装と動作確認を通じて,ハードウェア記述言語 (HDL) を使った FPGA 上のディジタル回路の設計について学ぶコースの最終回です。 前回までに、シリアル通信 (UART) による文字送信回路を設計し、論理シミュレーションと実機の両方で、1文字を正しく送信できることが確認できました。今回はこの回路をもう少しだけ拡張し、シリアル通信で Hello, FPGA を FPGA から PC に送信し、その結果を確認する……つまり、本コースの最終目標に踏み込みます。 ト...
20Q1.06A

4ビットカウンタでわかる FPGA のための論理回路 入門 (5)

みなさんこんにちは。このコースでは FPGA を使いこなすために理解しておきたい論理回路の基本について説明します。FPGA を使って開発しているけどハードウェアはよく分からないという方は、ぜひお付き合いください。 前回は4ビットカウンタ回路の挙動をシミュレーションで確認しました。また、前回までで論理回路の基礎事項はあらかた説明しています。 今回は、回路設計、最適化に重要なタイミング解析について、よく出てくる用語とともに掘り下げて説明します。 タイミング解析 論理回路は値...
20Q1.05A

スーパーコンピュータでも使われ始めた FPGA (5)

このコースでは、スーパーコンピュータ (以下、ブログの文字数節約のために一般的に使われている略称「スパコン」を使います) にも FPGA が何故使われ始めたのか、FPGA をスパコンに使うことによって何ができるようになるのか、どのような技術的な面白さがあるのか等について紹介していきます。 このコースもいよいよ最終回となりました。最後は Cygnus を使い倒すにあたって、前回の記事で紹介した以外にも解決しなければならない課題を紹介していきたいと思います。 なお、先に謝っておきますが...
20Q1.04A

FPGA を使って基本的なアルゴリズムのソーティングを劇的に高速化 (5)

前回の記事までは、私たちが国際会議 FCCM 2017 (論文 ) で提案した高性能 FPGA ベースのハードウェアマージソータ (Hardware Merge Sorter, HMS) を説明してきました。 コースの最終回となる今回は、その後の研究論文を紹介していきます。 MMS: フィードバックデータパスのない HMS FCCM 2017 の論文で提案した HMS とそのベースラインは「フィードバックデータパス」を含みます。下図はこれらの基本的な構成要素であるマージロジッ...
20Q1.03B

AWS F1 で始めるサーバーサイド FPGA (5)

はじめに 連載の最終回となる今回は、ハードウェアを設計しない方にも理解しておいていただきたい、FPGA アクセラレータの性能に関する基本的な考え方を説明します。また、これを踏まえて前回の記事で動作させた Deflate アクセラレータの性能向上を図ってみます。 アクセラレータの鉄則 前回の記事では、Vitis ライブラリの Deflate アクセラレータを AWS F1 上で動かし、CPU と比べておよそ3.6倍の高速化を確認しました。確かに速くはなったのですが、FPGA を...
20Q1.02A

ロボットでも注目される FPGA ⼊⾨ (5)

前回はロボットのソフトウェア構造における分散処理とそのフレームワークであるROS (Robot Operating System) に焦点を当てて解説をしました。 今回は、ROS に準拠した FPGA コンポーネントの具体的な作成方法を紹介します。更に、今後のロボットにおける FPGA 活用について考え、連載を締めくくりたいと思います。 ROS 準拠 FPGA コンポーネントの作成方法 前回に大まかな構造を示した ROS 準拠 FPGA コンポーネントの作成方法について、具体...
20Q1.01A

PYNQ を使って Python で手軽に FPGA を活用 (5)

みなさんこんにちは。このコースでは、Python で FPGA を手軽に利用できる PYNQ とその活用方法を紹介していきます。ゴールは、Jupyter Notebook の環境を使って Python から手軽に FPGA を利用できるようになることです。前回は、自分で設計したロジックを PYNQ 上で利用する開発手順を紹介しました。 最終回となる今回は、PYNQ を使って本格的なアプリケーションを実装するために必須の PS (プロセッサ)と PL(プログラマブルロジック) でのデータ共...
20Q1.10B

FPGA オリジナルボード設計~ FPGA の電源設計のコツ

Xilinx FPGA は様々な電圧の電源を必要とします。電源の安定性は基板の信頼性に直結します。 今回は Xilinx FPGA の中でも特に7シリーズ FPGA の電源について見ていきます。 電源ピンの種類 まずは、7シリーズ FPGA の電源ピンの種類と使用方法について見ていきましょう。 VCCINT VCCINT は FPGA のコア電圧で通常は 1.0V にします。「通常は」と書いたのは消費電力を抑えるために 0.9V や 0.95V にすることもできる...
20Q1.09A

Vivado のインストールと使いかた (4) 基本フローと LED 点滅回路の動作確認 (Linuxの場合の追加情報)

インストール後のプロジェクトの作成から、FPGA への書き込み手順は Windows の場合と基本的に同じです。ここでは Linux の場合での差異についてのみ補足します。 Windows との差異 手順12の「Run Implementation」のオプションが異なる ソースコード完成後のインプリメンテーションの実行時に指定するオプションが下図のように、リモートコンピュータでの実行オプションなどが設定できるようになっています。ローカルで実行する場合はデフォルトのままで問題あ...
20Q1.08B

FPGA をもっと活用するために IP コアを使ってみよう (4)

みなさんこんにちは。この「FPGA をもっと活用するために IP コアを使ってみよう」のシリーズでは、全5回を通じて FPGA を使って実用的なアプリケーションを実装するために必要不可欠な IP コアの使い方を紹介していきます。 第4回の今回は、FPGA の中に埋めこまれているメモリを利用する IP コアを紹介します。メモリは実用的なアプリケーションの作成には必須の機能です。すぐには使わないかなという人も、道具の一つとして覚えておくだけでも損はありません。 メモリってなんだっけ? ...
20Q1.07A

シリアル通信で Hello, FPGA (4)

実用的な回路の設計・実装と動作確認を通じて,ハードウェア記述言語 (HDL) を使った FPGA 上のディジタル回路の設計について学ぶコースの第4回です。 前回までに、シリアル通信 (UART) による文字送信回路を設計し、論理シミュレーションを使って動作検証を行いました。今回はこの回路を FPGA に書き込んで、シリアル通信で PC に文字を送信します。 トップモジュールの作成 トップモジュールの設計 第2回で設計した文字送信回路は、他の回路から1文字のデータを受け取...
20Q1.06A

4ビットカウンタでわかる FPGA のための論理回路 入門 (4)

みなさんこんにちは。このコースでは FPGA を使いこなすために理解しておきたい論理回路の基本について説明します。FPGA を使って開発しているけどハードウェアはよく分からないという方は、ぜひお付き合いください。 前回は、4ビットカウンタ回路を SystemVerilog で記述し、そのコードを Vivado を使って論理合成して結果を確認しました。今回は記述した4ビットカウンタ回路の挙動をシミュレーションで確認します。 今回の記事は、「シリアル通信で Hello, FPGA (3...
20Q1.05A

スーパーコンピュータでも使われ始めた FPGA (4)

このコースでは、スーパーコンピュータ (以下、ブログの文字数節約のために一般的に使われている略称「スパコン」を使います) にも FPGA が何故使われ始めたのか、FPGA をスパコンに使うことによって何ができるようになるのか、どのような技術的な面白さがあるのか等について紹介していきます。 第4回のこの記事では、FPGA を導入した国内スパコンである Cygnus を対象にどのような研究開発が行われているかについて紹介していきます。 OpenCL から制御可能なデータ転送技術の開発 ...
タイトルとURLをコピーしました