FPGAの開発といえば、Verilog HDLやVHDLなどのHDL(Hardware Description Language)でRTL(Resister Transfer Level)のソース・コードを記述し、FPGAベンダの開発ツールで論理合成するのが一般的です。
HDLによるRTL記述はその名前の通り、レジスタ転送といったハードウェアの動作を記述するための言語であり、アルゴリズム・レベルのより抽象度が高い処理の論理合成はできません。
このため、より上位(高位)のレベルの記述手法が望まれました。
ご存知のように、ソフトウェア開発ではC言語がよく使われます。
アルゴリズムの記述が得意なC言語でハードウェアが設計できると、開発が非常に楽になることが予想できます。
こうした流れから、C言語に対応した高位合成ツールが登場しました。
本書では、Xilinx社の最新開発ツールSDSoCやVivado HLSを活用したハードウェア/ソフトウェア混在システムの開発、Altera社Nios IIと高位合成ツールeXCiteで実現する画像フィルタ・システムの設計事例について解説します。
さらに、フリーの次世代コンパイラLLVMを使ってC言語ソースからVerilog HDLに変換して、FPGAに落とし込む方法についても解説します。
変換時の最適化オプションの指定の違いがもたらす回路規模や動作周波数などを比較し考察しています。
さらにC言語だけでなく、特集関連記事としてOpenCLでFPGAを開発する事例や、Javaでハードウェアを記述する事例などについても紹介しています。
目次
特集 やっぱり楽ちん! C言語×FPGA
【高位合成ツールの使いどころを理解する】
FPGAの進歩に伴い実用価値が高まる高位合成
第1章 高位合成の必要性と技術的課題,そして今後
【ZynqでC関数を容易にハード化】
ソフトウェア・エンジニアだけでハードウェア/ソフトウェア混在システムを開発できる
第2章 マウス・クリックで即高速化!Xilinx社最新開発環境SDSoC
【通信インターフェースもサクッと合成】
GPIO経由のI2C制御Cプログラムが,そのままハードウェア化できちゃう!?
第3章 Vivado HLSとZynqでカスタムI2Cコントローラを作る
【評価ボードDE2+LCDで画像処理】
Nios IIを使ったハードウェア/ソフトウェア連携システムの設計フロー
第4章 高位合成ツールeXCiteで実現する画像フィルタ・システム
【シーケンサの動作合成も得意】
FPGA専用版と呼ばれる低価格サブセット版も用意されている
Appendix1 安定のNEC製動作合成ツールCyberWorkBench
【比較的安価に導入可能】
評価ライセンスも用意されているので,動作合成入門に最適
Appendix2 動作合成ツールImpulse C/CoDeveloperの特徴と導入方法
【コンパイラLLVMでFPGA開発!】
C言語プログラムをVerilog HDLのRTLにトランスレートして性能を評価
第5章 新世代オープン・ソース・コンパイラLLVMで高位合成を試す
特集関連
【OpenCLでFPGAを開発できる!】
超並列計算の自動ハードウェア化でどこまで高速にできるか?
Altera OpenCLでJPEG/MPEG定番の画像圧縮処理をハードウェア化する
【Javaが書ければFPGAが開発できる!】
PC上でもすぐに動き,並列処理も記述可能なプログラミング言語Javaでハードウェアを開発
Javaベースの高位合成処理系Synthesijerを使ってみよう
最新技術
【デュアル・コンフィグレーションにも対応!】
定番&最新FPGAの研究 〜Altera編〜
コンフィグレーション・メモリを内蔵した最新デバイスMAX 10
基礎技術
【IC 1個でもここまでやれる】
カメレオンIC PSoCの研究
PSoCのスタートアップ・ルーチンを理解する 〜プログラマブル・ハードウェアのコンフィグレーション〜
【7シリーズFPGAでMicroBlazeを使おう!】
Vivadoで始めるソフトIPプロセッサMicroBlaze & MicroBlaze MCS
初めてのMicroBlaze MCS 〜プロジェクトの作成からHello Worldの表示まで〜