C言語による実践的FPGAプログラミング [単行本]

By in レジ裏 on 2013/07/16

[amazonで見る]

Field-programmable gate array(FPGA)は、決まった構造で書き換えのできないハードウェアではなく、製造後にプログラムすることができる大規模集積回路である。Field-programmableというのは現場でデバイス機能を帰られることを意味し、「gate-array」は製造後の再プログラムを可能にする基本内部構造を意味するちょっと古い言葉である。
FPGAは、さまざまなサイズ、種類、内部構造、外部構造の組み合わせでできている。比較的小さなプログラム可能なブロックからできている点は共通している。このブロックは、通常2、3個のレジスタ、2、3、ダースの低レベルの再構成可能なロジック素子からできていて、これを格子状に並べてプログラム可能な接続網で接続する。典型的なFPGAでは、論理ブロックは、ルックアップテーブル(たぶん4、5出力)からできていて、1個か2個の1ビットレジスタと接続され、クロックやマルチプレクサなど、その他のロジックとセットになっている。この基本的な構造は何千回と繰り返されて、巨大なプログラマブルハードウェアを構成する。
もっと複雑なFPGAの中では、汎用の論理ブロックは、乗算器やカウンタなど高レベルの算術素子や制御素子と組み合わされて、信号処理などのアプリケーションで使われる。また、デバイスの入出力には、プログラマブル入出力機能を持つ特殊な論理ブロックを備えている。 (本文より)

すべてのFPGAは同じ基本的な特徴を持つ。
■論理素子
デバイスを用いるために、問題に対応するデジタル論理を、それぞれが、一つあるいはそれ以上の論理素子または論理セルに貼付けることのできる小さな論理回路の配列に分解しなければならない。この段階をテクノロジマッピングと呼ぶ。
■ルックアップテーブル
FPGA論理素子それ自体は、一つのプログラマブルレジスタ(フリップフロップ)とその入力を形成するロジックからできていて、通常5以下の入力を持つルックアップテーブルで実装される。論理エレメント構造の詳細はFPGAベンダ(例えばXilinxAltera)及びFPGAファミリ(XilinxのCirexやAlteraのCylone)によって異なる。多くの論理素子で使われるルックアップテーブル(LUT)は、読み出し専用メモリ(ROM)に似ている。
■メモリ
最近のFPGAデバイスの多くは、SRAMなどの何らかのオンチップメモリに資源を持つ。
■配線資源
配線はFPGAの柔軟性の鍵となる。
■再構成可能なI/O
FPGAのピンは、TTL,CMOS,PCIその他の特性を持つ事で、多くの違ったテクノロジでできた回路をインタフェースできる。多くのFPGAは、専用の高速I/Oをクロックとグローバルリセット用に持つ。また、多くのFPGAはPLLとクロック制御方式を持ち、複数の独立のクロックドメインを使ったり、制御したりすることができる。(本文より)

FPGAのプログラミング技法は、一回だけプログラム可能な素子(ActelQuicklogのデバイス)からAltera、Latticeセミコンダクタ、Xilinxなどの電気的に消去可能あるいはSRAMベースでバイスまで広い範囲にわたっている。
SRAMベースのFPGAと電気消去可能なFPGAの書き換えは、新しいフラッシュメモリカードを用意したり、WEBサイトやCD-ROMから新しいバイナリデバイスイメージを取ってくるのと同じくらい単純になっている。
FPGA上に実装されたハードウェアアプリケーションは、通常、カスタムASIC(エーシック)上に実装されたものよりも遅く、電力を消費する。それでもFPGAでは開発コストとリスクが劇的に減るため、専用ICの代替手段としてすばらしい物になっている。(本文より)

FPGAの動作の定義は、VHDLあるいはVerilogなどのハードウェア記述言語HDLで行うか、ゲートレベル論理や、より高いレベルのマクロに相当する定義済みの機能モジュールを、図形やブロックダイアグラムを使った設計ツールで並べることで行う。最近、本書で記述するようなC、C++、JAVAなどの派生言語を使った設計ツールが現れてきている。どちらにせよ、設計エントリ(論理合成)から、ネットリストと呼ばれる中間ファイルが生成され、これがFPGAの配置配線ツールにより実際のFPGAにマップされる。配置配線後、bitファイルと呼ばれるバイナリファイルがFPGAにダウンロードされ、実行準備が整う。(本文より)

第一章 コンピューティングプラットフォームとしてのFPGA
第二章 プログラマブルプラットフォーム小史
第三章 FPGAベースアプリケーションのプログラミングモデル
並列計算のモデル
SISD プロセッサマシンモデルの基礎
SIMDマシンモデル
MIMDマシンとトランスピュータ
共有メモリ型MIMDアーキテクチャ
第四章 Impluse C入門
第五章 FIRフィルタの設計
第六章 FPGA上のハードウェアの生成
第七章 ステートメントレベル並列性の増加
FPGAコンピュテーションのモデル
C言語のセマンティックと並列性
命令レベル並列性の抽出
命令ステージの制限
ループアンローリング
パイプラインニング
第八章 レガシーアプリケーションのImpluseCへの移植
第九章 組み込みテストベンチの作成
第十章 FPGAを考慮したCの最適化
第十一章 システムレベル並列性の記述
第12章 組み込みOSとImpluse Cの強調動作
μClinuxとオペレーティングシステム
第13章 マンデルブロ画像作成
第14章 FPGAコンピューティングの将来
高性能コンピューターとしてのFPGA
極限まで並列性を引き出す
大規模なFPGAシステムとインテグレーションの加速
付録 組み込みFPGAプロセッサの最大限の活用
streamインタフェースのカスタマイズ
データ通信用DS92LV16シリアルリンク

ペレリン,デビッド
Impulse Accelerated Technologiesの設立者兼CTO、Pico Computingのマーケティング戦略取締役。25年以上にわたりEDAツールと組み込みソフトウェア開発ツールの分野に従事。製品開発、マーケティング戦略、エンジニアリングマネージメントとしても活躍。5冊の著書を持つ

ティボー,スコット
AcroDesign Technologies社とGreen Mountain Computing Systems社のCEOを兼務。ネットワークプログラミング言語の研究に従事、多数の論文を執筆。Ph.D.1994年より、Green Mountain Computing Systems社CEO。1995年から1998年まで、仏INRIA Research Assistant。2002年より現在まで、AcroDesign Technologies社CEO。2010年より現在まで、CODONiS社HPC

はじめてのFPGA設計 (Japanese Version of How to Begin a Simple FPGA Design) (OJDSW1010)
1 時間 オンライン・ コース

Comments are closed.