FPGA

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 を用いることを考えます。「計画」のためのセンサ情報の取得において、特に期待が高まっているのは、ロボット...
20Q1.01A

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

みなさんこんにちは。このコースでは、Python で FPGA を手軽に利用できる PYNQ とその活用方法を紹介していきます。ゴールは、Jupyter Notebook の環境を使って Python から手軽に FPGA を利用できるようになることです。 前回は、PYNQ の紹介とセットアップ方法を紹介しました。第 3 回となる今回は、PYNQ を使った FPGA の操作をいくつかの例を交えて紹介します。 PYNQ が提供する環境 PYNQ では、ZYNQ の PS (ar...
20Q1.10B

FPGA オリジナルボード設計 ~Xilinx FPGA の I/O ピンの使い方~

自分で基板を作るようになると、FPGA のどの端子にどの信号をつなげばよいか悩むことになるでしょう。 FPGA は論理回路や配線も自由にできる IC だから、どこにつないでも同じだと考える人がいるかもしれません。しかし、データシートを読むと、FPGA の I/O はどれも同じではなくバラエティーに富んだ機能があることに気づかされます。どうやって処理すればよいか悩ましいピンもあります。 FPGA の端子には電源やコンフィグなどの専用ピンだけでなく、普通のユーザ I/O に見えるピンに...
20Q1.08B

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

みなさんこんにちは。この「FPGA をもっと活用するために IP コアを使ってみよう」のシリーズでは、全 5 回を通じて FPGA を使って実用的なアプリケーションを実装するために必要不可欠な IP コアの使い方を紹介していきます。 第 2 回の今回は、FPGA 内部に仮想的なスイッチを挿入できる IP コア VIO の紹介と使い方を紹介します。ちょっとした動作の条件を操作したい場合や、複雑な回路をデバッグする際にとっても役に立つ IP コアです。 このコースの前の記事はこちら ...
20Q1.09A

Vivado のインストールと使いかた (2) 基本フローと LED 点滅回路の動作確認

FPGA の設計は様々な言語で行うことが出来て、ツールもかなり複雑になっているので、ここでは VHDL による最も簡単な LED 点滅回路の作成フローを解説します。以下、 Vivado の起動と新規プロジェクトの作成ソースコード (VHDL) の作成制約ファイル (XDC) の作成とビットストリーム・ファイルの生成FPGA への書き込み の順で解説します。 Vivado の起動と新規プロジェクトの作成 1.Vivado を起動します。類似のものに Vivado HLS ...
20Q1.07A

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

実用的な回路の設計・実装と動作確認を通じて,ハードウェア記述言語 (HDL) を使った FPGA 上のディジタル回路の設計について学ぶコースの第2回です。 前回は、順序回路を HDL で記述するときの基礎をいくつか確認しました。今回は、前回に学んだことを踏まえて、シリアル通信 (UART) による文字送信の回路を HDL を用いて設計していきます。 シリアル通信 (UART) とは UART の概要 機器の間で1ビットずつデータを送る通信方式のことを、シリアル通信といい...
20Q1.06A

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

みなさんこんにちは。このコースでは FPGA を使いこなすために理解しておきたい論理回路の基本について説明します。FPGA を使って開発しているけどハードウェアはよく分からないという方は、ぜひお付き合いください。 前回の記事では論理代数の基本で論理演算とそれに対応する論理回路について説明しました。今回は、論理回路の重要な要素をさらにいくつか紹介しつつ、広く用いられているクロック同期回路までを説明します。今回までの内容でディジタル回路を理解するために必要な基本的な要素を習得できます。 ...
20Q1.05A

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

このコースでは、スーパーコンピュータ (以下、ブログの文字数節約のために一般的に使われている略称「スパコン」を使います) にも FPGA が何故使われ始めたのか、FPGA をスパコンに使うことによって何ができるようになるのか、どのような技術的な面白さがあるのか等について紹介していきます。 第2回目のこの記事では、いよいよスパコンに FPGA がなぜ必要なのかを紹介していきます。 スパコン分野の研究者が注目する FPGA の3大要素 前回の記事で、スパコンのアクセラレータとし...
20Q1.04A

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

この記事では、私たちが国際会議 FCCM 2017 (論文 ) で提案したソーティングを高速化するための基本的なアイデアを解説していきます。提案したアイデアのベースラインは、2014年の国際会議 FPGA でスタンフォード大学の Casper と Olukotun によって発表された方式 (論文 ) です。 前回の記事で説明したように、これまで提案された FPGA ソーティングアクセラレータの基本的な構成要素は、2つのソートされた系列を1つの系列にマージするマージロジック回路です。一般に...
20Q1.03B

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

このコースの前の記事はこちら はじめに この連載では AWS F1 サービスを題材に FPGA を使ったアプリケーションのアクセラレートを体験してみる予定です。手を動かし始める前の準備として、この記事では FPGA アクセラレータの開発環境を紹介します。 FPGA の開発と聞くと、Verilog などのハードウェア記述言語を習得しないといけないと思われるかもしれませんが、実は C++ だけで FPGA アクセラレータを開発できる環境が整っています。C++ で 記述できるとはい...
20Q1.02A

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

前回の記事では、ロボットにおけるソフトウェア処理を高速化する (マクロ) 視点での FPGA 活用と、ロボットを構成する電気信号レベルでの入出力や制御に関する (ミクロ) 視点での FPGA 活用について、大枠を考えました。今回は、ロボットの目的や定義を考えた上で、小さいロボットシステムの事例を通じて FPGA が活用できる場面がどこにあるかを見ていきます。 ロボットの定義 さて、そもそも「ロボットとは何」でしょう? 時代によってロボットの定義は変化しており、「ロボットについ...
20Q1.01A

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

みなさんこんにちは。このコースでは、Python で FPGA を手軽に利用できる PYNQ とその活用方法を紹介していきます。ゴールは、Jupyter Notebook の環境を使って Python から手軽に FPGA を利用できるようになることです。前回は、「そもそも FPGA ってなに?」というタイトルで FPGA の紹介をしました。第2回の今回は、本題の PYNQ を紹介します。 PYNQ って何? - Python による FPGA 操作 PYNQ は、PythonでF...
20Q1.10B

物理計測のための FPGA の使い方 (1) ~FPGAを選ぶポイント~

みなさん、はじめまして。 筆者は大学の研究室(主に物理系)や独立行政法人〇〇研究機構といった顧客に「計測用カスタム FPGA 基板」を作るという仕事をしています。大学以外にも一般の企業向けに産業用カメラを作ったり、計測器を作ったり、あるときは自社製品として FPGA 評価ボードを作ったりと、とりとめもなくいろいろなことをやっています。 実際には基板を作るだけではなく、ADC や DAC まわりのアナログ設計や、FPGA の回路設計、カスタムファームウェアから PC 側のソフトウェア...
20Q1.09A

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

ここでは Xilinx 社の FPGA の開発環境である Vivado のインストール手順を解説します。Vivado は、HDL からビットストリームファイルの生成、FPGA への書き込みまでの一番下位の部分を担当するツールです。中規模までのほとんどの FPGA は無償版の WebPACK というバージョンで開発できます。下記よりダウンロードできます。 対応 OS は、Windows と Linux です。Ver.2019.2 で対応する OS は、具体的には次の通りですが、今後...
20Q1.08B

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

みなさんこんにちは。この「 FPGA をもっと活用するために IP コアを使ってみよう」のシリーズでは、全5回を通じて FPGA を使って実用的なアプリケーションを実装するために必要不可欠な IP コアの使い方を紹介していきます。 IPコアを使いこなせるようになると、既に開発されているモジュールの流用で開発コストを低く抑え、自分のアプリケーションの開発に注力できるようになりますよ。第一回では「IP コアって何?どんなもの?」について説明します。 IP コアってなに? IP コ...
20Q1.07A

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

愛知⼯業⼤学の藤枝と申します。 普段は電気系の学⽣さんにディジタル回路や計算機システムを教えつつ、FPGA を使って何か⾯⽩いことができないかと⽇々⼿を動かしています。 このコースでは、実用的な回路の設計・実装と動作確認を通じて、ハードウェア記述言語 (HDL) を使った FPGA 上のディジタル回路設計について学んでいきます。具体的には、PC と FPGA との最もお手軽な通信手段であるシリアル通信 (UART ともいいます) を使って、FPGA から PC に対して「Hello, F...
20Q1.06A

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

みなさんこんにちは。このコースでは FPGA を使いこなすために理解しておきたい論理回路の基礎について 5 回にわたって説明します。RTL (Register Transfer Level) で FPGA 開発をするための入門になります。また,高位合成で開発をしていても、FPGA の性能を引き出すためには自分で記述するコードがどのようなハードウェアになるかを理解するための知識です。電気・情報系の大学の 2 年生くらいで学ぶ内容ですが、ハードウェアはよく分からないという方はぜひお付き合いくださ...
タイトルとURLをコピーしました