2020-05

コース紹介

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

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

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

前回の記事では、私たちが国際会議 FCCM 2017 (論文 ) で提案した、2つのソートされた系列を1つの系列にマージするマージロジック回路の新しいアーキテクチャを紹介しました。 この記事では、これを用いて構築したハードウェア・マージソータ (Hardware Merge Sorter, HMS) の評価について解説します。 比較対象 性能を評価するためには適切な比較相手を見つける必要があります。ここでの比較対象は、国際会議 FCCM 2016 (論文 ) で Song ら...
20Q1.03B

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

このコースの前の記事はこちら はじめに この連載では、Amazon EC2 F1 インスタンスの FPGA を使ってアクセラレーションを体験してみます。これまでの記事では準備編として FPGA 開発環境や F1 インスタンスの立ち上げ方法を紹介しました。この記事ではいよいよ FPGA を動かしてみます。 Vitis ライブラリ 今回はザイリンクスがオープンソースで提供する Vitis ライブラリを利用して、FPGA によるアクセラレーションを体験します。 ...
20Q1.02A

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

前回までに、ロボットの制御・計画とそれに必要な画像認識について FPGA の活用方法を紹介しました。 今回は、どのようにして制御・計画・画像認識を統合するか、そのプラットフォームである ROS (Robot Operating System) について説明し、FPGA を導入する方法について考えたいと思います。 ROS (Robot Operating System)とは 知的なロボットシステムの機能実現において、ソフトウェアの占める重要性は非常に大きく、如何に短期間で所望の...
20Q1.01A

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

みなさんこんにちは。このコースでは、Python で FPGA を手軽に利用できる PYNQ とその活用方法を紹介していきます。ゴールは、Jupyter Notebook の環境を使って Python から手軽に FPGA を利用できるようになることです。 前回は、いくつかの例を交えて PYNQ を使った FPGA の操作方法を紹介しました。今回は、自分で設計したロジックを PYNQ 上で利用する開発手順を紹介します。 開発の手順 自分で設計したロジックを PYNQ の上で...
20Q1.10B

FPGA オリジナルボード設計 I/O ピンの配置を決める「XDC ファイル」の書き方

前回はオリジナルのボードを作るときの I/O ピンの配置と、I/O バンクの決め方について解説しました。今回は I/O の配置を Vivado に指示する方法について解説します。 ピン配置は XDC ファイルに書く XDC ファイルの基本 ピン配置を Vivado に指示するには XDC ファイルを書きます。 XDC は Xilinx Design Constraint (ザイリンクス・デザイン・コンストレイント) の略です。Constrait というのは制約という意味...
20Q1.09A

Vivado のインストールと使いかた (3) HLx Edition WebPACK の概要とインストール (Linux編)

今回は Vivado の Linux 版のインストール方法を解説します。基本的な流れは Windows 版と変わりません。Liunx 版の対応している OS は下記の通りです。 Red Hat Enterprise Workstation/Server 7.4、7.5、および 7.6 (64 ビット)SUSE Linux Enterprise 12.4 (64 ビット)CentOS 7.4、7.5、および 7.6 (64 ビット)Ubuntu Linux 16.04.5 LTS、16.0...
20Q1.08B

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

みなさんこんにちは。この「FPGA をもっと活用するために IP コアを使ってみよう」のシリーズでは、FPGA を使って実用的なアプリケーションを実装するために必要不可欠な IP コアの使い方を紹介していきます。 第3回の今回は、FPGA 内部のロジックに供給するクロック周波数を指定するための IP コアを紹介します。 FPGA ボードに搭載されているクロックより高い周波数でロジックを駆動したい、ちょっと回路が大きくなってしまったから周波数を低くしたい、接続するデバイスにあわせた周...
20Q1.06A

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

みなさんこんにちは。このコースでは FPGA を使いこなすために理解しておきたい論理回路の基本について説明します。FPGA を使って開発しているけどハードウェアはよく分からないという方は、ぜひお付き合いください。 前回までの記事で、クロック同期回路を理解するための論理回路の基礎を説明してきました。今回は、4ビットカウンタ回路を例にクロック同期回路の設計を説明します。 4ビットカウンタ回路の設計 仕様 4 ビットカウンタは 0 から 15 (16 進数で 0x0 から 0...
20Q1.07A

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

実用的な回路の設計・実装と動作確認を通じて,ハードウェア記述言語 (HDL) を使った FPGA 上のディジタル回路の設計について学ぶコースの第3回です。 前回は、シリアル通信 (UART) による文字送信回路を設計し、HDL 記述を作成しました。この回路を実際に動かす前に、まずは論理シミュレーションを使って、正しく動作しそうであるかチェックしてみましょう。今回は、テストベンチの作成方法、および Vivado シミュレータで回路の動作を確認する方法を解説していきます。 テストベンチ...
20Q1.05A

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

このコースでは、スーパーコンピュータ (以下、ブログの文字数節約のために一般的に使われている略称「スパコン」を使います) にも FPGA が何故使われ始めたのか、FPGA をスパコンに使うことによって何ができるようになるのか、どのような技術的な面白さがあるのか等について紹介していきます。 第3回のこの記事では、FPGA を導入したスパコンについて紹介していきます。 その名は「Cygnus」 Cygnus は、本記事の執筆時点において国内で唯一、FPGA を本格的に使用するスパ...
20Q1.04A

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

この記事では、私たちが国際会議 FCCM 2017 (論文 ) で提案したマージロジック回路のアーキテクチャ、動作例、特徴を解説します。マージロジック回路は2つのソートされた系列を1つの系列にマージします。これまでに提案された FPGA で動作させるソーティングアクセラレータの基本的な構成要素です。マージロジック回路の役割は1回目の記事、提案アーキテクチャのベースラインと基本的なアイデアは2回目の記事で説明されています。 フィードバックレジスタの最適化 これまでに説明した E レコ...
20Q1.03B

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

はじめに この連載では、Amazon EC2 F1 インスタンスの FPGA を使ってアクセラレーションを体験してみます。今回は F1 インスタンスを立ち上げて、FPGA 開発環境である Vitis を起動するまでをチュートリアル形式で紹介します。 Amazon EC2 F1 インスタンス F1 インスタンスでは、ザイリンクス製 FPGA の中でも大規模な Virtex UltraScale+ VU9P が利用できます。使用する FPGA の個数は 1 個、2 個、8 個 (...
20Q1.02A

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

 前回は、ロボットシステムを分解していくと、「制御」と「計画」といった要素で階層的に構成されることを学びました。「制御」は、制御対象の制御値を与えられた目標値に近づけることです。そして、制御の基本である倒立振子システムの制御処理に FPGA を用いることで、マイクロ秒程度の周期で超高速な制御を計算できることを示しました。  今回は、ロボットシステムの「計画」をするための処理に FPGA を用いることを考えます。「計画」のためのセンサ情報の取得において、特に期待が高まっているのは、ロボット...
タイトルとURLをコピーしました