FPGAという名のLSIを知る ―― FPGAの構造と使い方

4.FPGAで何が作れるのですか?

 FPGAは論理回路であれば基本的には何でも作れます(図3).ただし,FPGAに搭載されている内部素子や配線リソース,入出力ピンなどの量や性能に依存します.
 FPGAで大規模の論理回路を設計しようとすると,素子数が足りなくて回路が作れないことや,素子数は足りているが配線リソースや入出力ピンが足りなくて配線ができないことがあります.ぎりぎりで収まっている場合,少し変更しただけで収まらなくなってしまった,ということもあるので,ある程度の余裕も必要です.
 逆に,FPGAの規模に比べて小規模な論理回路を設計するのは容易です.極端な話,FPGAで1個のANDやORを作ることももちろんできますが,それではあまりにも無駄です.
 現在のFPGAで実際に何が作れるかというと,例えば32ビットRISCプロセッサ,プロセッサにSRAMや周辺機能を搭載したSOC(システムLSI),通信や画像処理アプリケーション向けのDSP,DSP機能を専用化した各種の処理エンジン,プロトコル・コントローラ,モータ制御などのフィードバック制御コントローラなどです.
 もともとはハードウェア演算回路によって高速演算や並列演算を実行できるのがFPGAの大きな特徴でした.しかし,大規模システムの中では,マイクロプロセッサやDSPなどソフトウェアで機能を定義できた方が有利な場合があります.現在では,マイクロプロセッサ機能を搭載しても,まだまだ余裕があるような大規模FPGAがそろっています.

 

14fpga1_f03.gif
図3 論理回路であれば基本的には何でも実現できる
ルックアップ・テーブルやフリップフロップなどの内部素子や配線が多目的に利用できる.

5.FPGAはどうやって使うのですか?

 FPGAは内部回路を自分で設計して,回路情報を書き込まなければ動作しません.その代わり,回路情報を書き換えれば異なる動作をさせることができます.
 FPGAを使うためには,基板レベルの設計・実装と,FPGA内部回路の設計・実装が必要です.
 基板レベルの設計は,普通のLSIと基本的には同じです.ただし,FPGAは入出力ピンに自由度があります.FPGAを搭載する既製のボードもあります(本誌の付属基板もその一つ).これを使う場合は,基板を設計する必要はありません.
 内部回路の設計は,FPGAメーカやツール・ベンダが提供する開発環境を用いて行います.
 設計した内部回路をFPGAに実装するには,
(1) 外付けの不揮発メモリに配線情報を書き込む
(2) FPGAの内蔵不揮発メモリに配線情報を書き込む
(3) ホスト・パソコンからFPGAに配線情報を転送する
などがあります.(1)と(2)の場合は,不揮発メモリからFPGAに回路情報を転送する必要があります.これを「コンフィグレーション」と呼びます.現在主流であるSRAMベースのFPGAは,電源投入後にコンフィグレーションが必要ですが,たいていは自動的に行われます.
 (2)の方法は便利ですが,不揮発メモリを内蔵した特定の品種のFPGAでしか使えません.
 開発段階では(3)のように,開発環境から直接FPGAに配線情報を転送して動作させます.デバッグが終了して設計が完成してから,配線情報を書き込んだ不揮発メモリを作ります.

6.FPGAはどうやって設計するのですか?

 FPGAは,パソコン上で動作する開発ツールを使って設計します.また,回路図を使って設計する方法,ハードウェア記述言語を使って設計する方法,状態遷移図を使って設計する方法などいくつかの方法があります(図4).どの方法が使えるかは,ツールによって違います.また,FPGAの内部回路を設計するツールだけでなく,基板レベルの回路設計とFPGA設計を一体として実行できるツールや,さらにシステム設計やソフトウェア開発も含めて一体として実行できるツールもあります.
 回路図や論理記号に慣れていれば,回路図を使って設計する方法は直感的に分かりやすい方法です.ただし,設計する回路が大規模になるほど,回路図が巨大になったり階層が深くなったりして大変になります.
 ハードウェア記述言語は,回路を図で書く代わりに,文字で記述しようというものです.既存の設計データを再利用しやすいメリットもあります.ハードウェア記述言語には主に,VHDLとVerilog HDLの二つがあります.両者は書式(文法)が多少違います.
 回路図入力にしてもハードウェア記述言語による入力にしても,最初は特定のFPGAを意識せずに設計するのが普通です.この段階では,シミュレーションで動作を確認します.
 実際のFPGAを動作させるには,使用するFPGAの型名を指定して,物理レベルの設計を行います.どの入出力ピンを何に使うかを定義することも必要です.それによってFPGAに書き込むための回路情報が生成されます.

14fpga1_f04.gif
図4 FPGAの内部回路の設計法

通常はFPGAメーカなどから提供されている設計ツール,統合開発環境などを用いる.

7.FPGAにはどんな種類があるのですか?

 現在は複数のメーカが独自のFPGAを提供しています(図5).主なメーカは米国Actel社,米国Altera社,米国Lattice Semiconductor社,米国Xilinx社の4社です.また,同じメーカであってもファミリによって,記憶素子の違い,回路規模の違い,電源電圧の違いなどがあります.
 配線情報を記憶する記憶素子の違いは,FPGAの使い勝手に大きな影響があります.現在主流のFPGAは記憶素子がSRAMで,電源を切ったら配線情報が消えてしまいます.従って,配線情報は別の不揮発メモリに保持しておき,電源投入後に不揮発メモリからFPGAの内部記憶素子に転送(コンフィグレーション)する必要があります.記憶素子がSRAMのFPGAでも,配線情報を記憶するための不揮発メモリを内蔵した品種もあります.
 回路規模は,品種やメーカによって内部構造が違うので,表記の仕方も異なっています.論理セルの数で表したり,ルックアップ・テーブルやフリップフロップの数で表したりします.メーカ間の比較はできません.
 FPGAに限らず,LSIの電源電圧は世代とともに低下しています.電源電圧を下げることで高速動作と低消費電力を実現しているので,大規模・高速な品種ほど低電圧動作になる傾向があります.
 FPGAと同様にプログラマブルなLSIには,CPLDがあります.内部論理素子の構造で使い分けられていますが,基本的な使い方は同じです.小規模で低価格のFPGAと考えて構いません.CPLDの場合はほとんどが記憶素子に不揮発メモリを用いています.

 

14fpga1_f05.gif
図5 主要FPGAファミリ

8.FPGAの勉強をするにはどうしたらいいですか?

 何より,自分で内部回路を設計して動かしてみるのが良いと思います.まずは,ディジタル・デザイン・テクノロジ No.1の記事に従って,付属基板を動かしてみましょう.

 
みやざき・ひとし
(有)宮崎技術研究所


«  1  2
組み込みキャッチアップ

お知らせ 一覧を見る

電子書籍の最新刊! FPGAマガジン No.12『ARMコアFPGA×Linux初体験』好評発売中

FPGAマガジン No.11『性能UP! アルゴリズム×手仕上げHDL』好評発売中! PDF版もあります

PICK UP用語

EV(電気自動車)

関連記事

EnOcean

関連記事

Android

関連記事

ニュース 一覧を見る
Tech Villageブログ

渡辺のぼるのロボコン・プロモータ日記

2年ぶりのブログ更新w

2016年10月 9日

Hamana Project

Hamana-8最終打ち上げ報告(その2)

2012年6月26日