2020-09

20Q2.09B

MIG を使って DRAM メモリを動かそう (5)

この記事では、DRAM ベースの設計のためのシミュレーション方法を解説していきます。説明では、Synopsys 社のシミュレータ VCS を使用し、前回の記事で実機の FPGA ボードで動かしたテストプログラムと RISC-V ソフトプロセッサのシミュレーションを行います。 ソースコード: テストプログラム:  ソフトプロセッサ: 概要 FPGA の設計において、シミュレーションは不可欠です。簡単な回路を設計する場合は、一発で実機で動かせることがありますが、ほとんどの...
20Q2.10B

NNgenとFPGAで作るニューラルネットワーク・アクセラレータ (5)

前回までは、学習済みモデルから、VGG-11 専用のハードウェアを構築したりしました。 第5回 (最終回) では、NNgen を活用するために、NNgen で利用可能な演算や入力の紹介をします。加算、減算、畳み込みといった基本的な演算から、Extern と呼ばれる CPU 上のソフトウェアと連携を可能にする特殊なものまで、いろいろあります。 データの入力 (placeholder, variable, constant) 演算の前に、データや重みを入力するインタフェースをみて...
20Q2.09B

MIG を使って DRAM メモリを動かそう (4)

この記事では、前回まで解説してきた MIG ベースの DRAM コントローラのテストプログラムと先端の RISC-V ソフトプロセッサへの応用を説明していきます。 ソースコード: テストプログラム:  ソフトプロセッサ: Wizard ベースのクロック生成スクリプト: 説明では、現時点 (2020年8月) ACRi ルームで使用可能な Vivado 2019.2 を使用します。ターゲットの FPGA ボードは Arty A7-35T です。 テストプログラムと RI...
20Q2.10B

NNgenとFPGAで作るニューラルネットワーク・アクセラレータ (4)

本コースの第3回目と第4回目では、NNgen とニューラルネットワーク・フレームワーク Pytorch を用いて、学習済みのモデルを SoC 型の FPGA の Ultra96-V2 上で動かしてみます。 今回の第4回は、PYNQ と Jupyter を用いて、Ultra96 上で、第3回で開発した VGG-11 専用回路を実際の FPGA システム上で動かします。 Ultra96 向け PYNQ の構築 まず、Ultra96 向けの PYNQ のリポジトリの Release...
20Q2.08A

新しいコンピューティング・システムとしての FPGA (5) ~ 独自シェル “AFUshell”

本コースでは、複数の FPGA を用いた計算機システムの構成と、私達が研究開発が行っているカスタム・コンピューティング・システムについて紹介していきます。 第5回では、FPGA をカスタム・コンピューティング・システムとして利用するために開発を行っている、我々の独自シェル "AFUShell" について解説していきます。 先日、クラスタの名称が、"ESSPER: Elastic and Scalable System for high-PErformance Reconfigura...
20Q2.07A

非同期式回路と FPGA 〜「作ってみる編」(5)

みなさん、こんにちは。いよいよこのコースも最終回となりました。今回は、第3回で考えた例題回路の非同期式回路を実際に FPGA 上に実装します。 また、正しく動作する実装を得るために、Vivado の静的タイミング解析機能 (以後、STA エンジンと言うこともあります) をどのように非同期式回路に適用するか、という点について考えていきたいと思います。 FPGA への実装 (2) 例題回路の復習 まず、例題回路の復習です。回路の構成は下記のようになっていました。 ...
20Q2.01A

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

みなさんこんにちは。この記事は ACRi ブログの Deep Learning コースの第10回目です。 最終回となるこの回では、より大規模なネットワークに対して推論を行う際に問題となる計算量の増加をどのように解決すべきか、一般的に使用されている方針を述べていきます。 演算コストの低下手法 まずは演算コスト自体を低下する方法について述べていきます。 量子化 量子化は、通常 fp32 で構成される重みやアクティベーション (各層の入出力) のビットを減らすことです。...
20Q2.05A

ホームサービスロボットにおける FPGA の応用例 (5): ORB-SLAMのFPGA実装

ORB-SLAM とは ホームサービスロボットや自動運転車が、家や工場内を自律移動する技術が活発に研究、開発されています。自律移動するには、家具や壁の配置を認識(地図作成)し、自分がどこにいるかを把握(自己位置推定)しなければなりません。これを同時に行うのが SLAM (Simultaneous Localization and Mapping) です。 SLAM には使用するセンサなどによっていくつか種類があります。主に LiDAR やステレオカメラ、単眼カメラなどが使われますが、 O...
20Q2.04B

Synthesijer と高位合成ツールの作り方 (5)

こんにちは。この「Synthesijer と高位合成ツールの作り方」のシリーズでは、全5回を通じて Synthesijer をベースに FPGA 向けの簡単な高位合成処理系を作る方法を紹介していきます。例は Java ですが、お気に入りの言語向けの処理系を開発する足がかりとして利用できるように紹介できればと思ってます。 前回は、Synthesijer における内部情報の変形処理として並列化とチェイニングの様子を紹介しました。最終回となる今回は、高位合成による高速化の効果を楽しめるパイプラ...
20Q2.03B

広がり続ける FPGA の応用と人工知能への活用 (5)

前回は高いスループット、超低遅延と低消費電力を同時に実現する Vitis AI について解説しました。さらに FPGA を使用して画像認識をおこなうまでのフローを ACRi ルームの環境を使用してひととおり体験しました。シリーズ最終回となる今回は FPGA を取り巻く環境、最新テクノロジーそして将来への展望について概観し、本シリーズを総括したいと思います。 広がる FPGA の応用分野 これまで4回にわたり FPGA を使用することによってどのような効果が得られるか、そしてその技術...
20Q2.02A

IP の世界からこんにちは (5)

IP インテグレータを用いた回路やシステムの設計について学ぶコースも、いよいよ今回が最終回です。前回は、文字送信回路の IP コアを MicroBlaze と組み合わせるための IP コアを作成し、これらを含むブロック図からシステムを合成しました。今回は、このシステムの上で動作するソフトウェアを記述し、動作確認を行います。 なお,今回の内容は基本的に Vivado/Vitis 2019.2 を対象に記述しています。2019.1 以前の Vivado では、こうした FPGA 上の組込みプ...
タイトルとURLをコピーしました