実際にHDL(ハードウエア記述言語)を使ってFPGAの回路を組んでみると、ソフトウエアとは全く違った考え方が必要になることがわかります。HDLによる記述でアルゴリズムを実装するのは、自分で状態マシンを作らないとならないなど、コードが煩雑になってしまいます。また、アルゴリズムが正常かどうかを確認するにも、信号を見ながらのデバッグは現象が追いにくく、効率が良くありません。

 多くの場合、FPGAにおいて高速な動作が必要な部分は限られています。データの入出力やデータの振り分けなどではあまり速度が求められないこともあります。現実的なFPGAの開発では、いくつかの手段の助けを借りるのが効率的です。簡単に紹介していきましょう。

IPコア

 回路を記述する際に、すべての回路を自分で設計するのは大変です。特に、メモリーコントローラやネットワーク、実数計算など、プロトコルや手順が決まっていて品質が求められる回路は、実用的な回路を設計するには労力や時間がかかります。

 ソフトウエアのライブラリと同様に、FPGAで使える回路も部品として販売されていたりフリーで公開されていたりします。このような部品を「IPコア」といいます。IPはIntellectual Propertyの略で、知的財産を表します。知的財産の所有者が、それを使える形で提供しているのです。IPコアは、FPGAに限らず通常のLSIの開発にも広く使われています。

 米Altera社の開発環境でも、様々なIPコアが提供されています。フリーのIPコアを公開するOpenCoresというWebサイトもあります。このサイトでは、Z80や8080のようなCPUコアやJPEGエンコーダなど、様々なIPコアが公開されています。汎用の回路では、予算に合わせてIPコアを活用するのがよいでしょう。