FPGA

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.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.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 を本格的に使用するスパ...
タイトルとURLをコピーしました