プログラマブルロジックデバイス
出典: フリー百科事典『ウィキペディア(Wikipedia)』
プログラマブルロジックデバイス (programmable logic device: PLD) は、製造後にユーザの手許で内部論理回路を定義・変更できる集積回路である。初期のデバイスは事前にプログラミングを行って実際の用途に供し、動作中には回路を変更しないものが大半である。近年は、動作中にも回路を定義しなおす事が出来るものもあり、特にリコンフィギュアラブルデバイスとも呼ばれる。 通常の集積回路は設計時に仕様や機能が定まり、製造時に全ての回路が固定されるために、後から回路構成を変更する事は出来ない。プログラマブルロジックデバイスは、出荷時には回路が定義されておらず、ユーザが手許で任意の回路を書き込んで初めて機能を発揮する。
極く多数の集積回路を製造する場合はASICを利用することが多いが、開発に掛かる技術資産や設備、IPなどの購入費用(NREコスト)が発生し、その設計資産を他に流用する事が困難である。また、設計に長期間を要するうえに、間違いが赦されず、開発者にとって大きな負担になっている。 しかし、プログラマブルロジックデバイスの場合これらのNREが不要で、回路を何度でも書き直し再利用できるため、現在では多くの人々から支持され、少数の製品から量産品まで幅広く流通している。 ASICの動作確認のための試作、次世代携帯基地局など将来的に仕様の変更が見込まれる製品、規格の策定途中でハードウェア完成後に仕様を変更する必要がある製品、論理設計技術の習得用の実験回路にも用いられている。
目次 |
[編集] 沿革
最初期のプログラマブルデバイスは、回路情報の保持手段として微細なヒューズを用いるPALと呼ばれるものである。爾後、EEPROMの要素を用いたGAL、それを複数搭載したCPLDとなり、集積度を増した。これらのデバイスは、主に、既存のLSIを相互に接続するグルーロジックとして用いる所からはじまった。
一方で、ゲートアレイ構成を基本としたEEPROM型FPGA、LUTを基本としたSRAM型FPGAも登場した。これらは、回路容量の増大に伴い、単なるグルーロジックにとどまらず、既存のLSIの機能も取り込み、置き換えていった。現在では、CPUも取り込み、デザインそのものを搭載するに至った。なお、このような構成はSoC(System On Chip)と呼ばれる。
[編集] 用途
デバイスが高価だった時代は、ASICのプロトタイピング、超高性能コンピュータ用アクセラレータなどに用いられた(Reconfigurable computingを参照すると良い)。
メーカーが増え競争が起こりまた量産効果によって価格が低廉化してくると、一般的なPCにも使用されるようになった。ASICを使わず、バスにFPGAを直接接続しておき、コンフィギュレーションROMにはホストバスインターフェース機能とFPGAへのロジック書き込み機能だけを用意しておき、デバイスドライバによって本来のロジックをアップロードする方式が広まった。デバイスドライバソフトウエアのバージョンアップだけで機能の向上、バグの修正が行える為、全体的に見るとASICを使った場合よりも低コストで製品が作れるようになった。
インターネットにおける急激な帯域の増加に伴い、従来のソフトウエアによるルーティングが限界に達した。高性能CPUの投入は装置の部品増と消費電力の問題、冷却など様々な問題があり非現実的であった。ASICで構成する時代も一時期あったが、処理すべきプロトコルが増えたり規格が変更になった等によって装置が陳腐化してしまう問題が生じた。そこで自由に回路構成が変更できるFPGAによってルーティングエンジンを形成する事によって、スループットを維持しつつ新しい規格にも対応できる設計が一般化した。
デジタル放送は新しいプラットフォームが形成される都度、伝送方式をはじめとしアプリケーションレイヤーにいたるまで、根こそぎ規格が変化した。2000年に放送を開始したBSデジタル放送にいたっては、予めCSデジタル放送や地上波デジタル放送という新規格への備えが必要であり、またBSデジタル放送においても受信機の仕様に応じて放送機器側の仕様を策定しなおすという泥縄状態であった。この為、放送用機器はFPGAをベースに作りこまれ変更のあった規格への対応が行われた。受信機の一部もロジックの一部をFPGAでつくり、ソフトウエアアップデートだけで新規格に対応できる製品もあった。
Webサーバやアクセラレータにおいて、プログラマブルロジックデバイスを応用した製品がある。サーバーにとって負荷の大きいCGI実行結果などをキャッシュしたり、フィルタリング処理を可変ハードウエアで実装したものである。これらの機器は従来機器と比べけた違いの単位時間あたりトランザクション数(TPS)を誇る。またアクセラレータは特に負荷が高いSecure Socket Layer(SSL)を高速化するのに用いられた。SSLは暗号化方式が増える可能性がある為、既存規格だけを実装した装置は陳腐化を免れない。ロジックを変更可能にしておく事により、暗号化方式の追加に対応する事ができる。
FPGAを筆頭とするプログラマブルロジックデバイスの低廉化は、ホビーストがCPUの実装から、ついにはフルスクラッチでSoCそのものを実現し、例えば1chip MSXプロジェクトの様に、一つのシステムを全てFPGAで実装し、生産終了して入手不可能になったMSXパソコンを再現させるに至った。 その価格は、かつて製品が存在していた時代と遜色の無い物であり、プログラマブルロジックデバイスそのものが、特殊な業務用途の高価なデバイスから、ディスクリート部品同様にホビーストの手によって要求を具現するデバイスへ発展した一つの証と言える。 この様な例は前述のMSXプロジェクトのような大きな物だけでなく、学生がコンピュータがディスクリート部品の塊であった時代からの変遷をなぞり、既存のISAではなく、1から設計した全くオリジナルのプロセッサを作る研究が随所で行われている。
[編集] FPGA (Field Programmable Gate Array)
利用者が独自の論理回路を書き込むことの出来るゲートアレイの一種。 内部構造の例として、任意の論理を構成可能な4入力程度の組合わせ回路と順序回路からなる論理ブロックが、格子状に数10×数10程度配置され、その間の配線を簡易なクロスバースイッチで接続した構造をもつ。
FPGAの定義は明確でなく、利用者やメーカーなどが独自の解釈でそう呼んでいるようだが、書き込み可能な回路規模はおおよそ1,000ロジックエレメント(約20,000ゲート)以上のものをFPGAと呼ぶことが多い。
[編集] SRAM型デバイス
デバイス上に多数のLUT(Look Up Table)、D-FF、ルーティング資源を搭載し、これを組み合わせて回路を構成する形式が主流である。LUTの内容、D-FFの動作モード、ルーティングの情報を保持する要素として、SRAMを用いる。 電源を切ると回路情報が揮発してしまうため、動作させるには外部に専用のROMを接続し、電源投入時に回路情報をロードしてから使用するタイプが一般的である。この回路情報をロードすることをコンフィギュレーションと言う。 一時期この専用ROMが高価であったため、汎用のフラッシュメモリからコンフィギュレーションを可能にする専用LSIも開発された。
[編集] EEPROM型デバイス
また、回路情報の保持要素としてEEPROMを用いるデバイスもある。これは、電源を切っても回路情報を保持しているため、電源投入後に直ぐに使用できるほか、回路情報を内部に持っているため、設計のノウハウが漏れないという利点もある。
[編集] CPLD (Complex Programmable Logic Device)
PAL、GALよりも規模の大きなPLDで数百のロジックエレメントから成り、殆どがEEPROMのアーキテクチャで構成される。 内部構造として後述のPLD(1マクロセル)を複数集積し、それらを内部バスで接続した構成になっている。
書き込み方法
- フラッシュROM
- EEPROM,EPROM
- Antifuse
[編集] PLD (Programmable Logic Device)
狭義の意味として、小規模なプログラマブルロジックデバイスであるPAL(Programmable Array Logic)とGAL(Generic Array Logic)の総称を指してPLDと表現する。
- PAL: ANDアレイが書き換え可能で、ORアレイが固定のもの。
- PLA: ANDアレイ、ORアレイとも書き換え可能のもの。
- GAL, PLD: ANDアレイが書き換え可能、ORアレイが固定で、ORアレイの出力をANDアレイに入力できるもの。
また広義のPLDとして、上記PLD、CPLDおよびFPGAまでを含めてPLDと表現する場合もある。
[編集] 大規模なFPGAデバイスのトレンド
1990年代後半、各FPGAメーカーは顧客のアプリケーションの要求から、高速化、大規模化を推し進めてきた。
2000年代に入ると、単なるユーザーロジック領域の拡大ではなく、機能ブロックをあらかじめデバイスに盛り込み、高性能化を謳った製品群を開発した。 それまでのFPGAでは、メモリ、加算/乗算器ひいてはCPUといった機能はRTLを論理合成することにより、FPGAの規模が許せばユーザーロジック上に構成できたが、性能やリソースの面で不利となる。 そこでデバイスによっては、CPUコア、SRAMブロック、乗算器、PLL等をあらかじめハードマクロとして搭載し、複雑なシステムをひとつのFPGA内に実現できる様にしたものもある。
また、入出力特性もTTLレベル、CMOSレベル、3.3V,2.5V,1.8Vなどの電圧に対応可能で、PCIやAGPといった各種標準I/F用に合わせた信号レベルを設定することもできる。
LVDSや高速SERDES等の物理層をサポートしたIOブロックを搭載したものもあり、上位にユーザーロジックで構成したPCI Express、GigabitEthernetなどの制御回路を組み合わせることで、高速通信I/Fを構成できるものもある。
また価格面においても、旧来はデバイス単価が高く、製品の試作に使う程度で量産品(ハイエンドのルータ以外)には使えなかった。しかし、プロセス技術の発達やFPGA市場の広がりから、低価格なFPGAデバイスも発売されるようになった。これにより、ハイエンドではない通信機器や民生用の大型テレビといった量産製品にまで、FPGAが使われるようになった。
[編集] アナログFPGA
2000年代前半には、オペアンプやコンパレータを含むアナログ回路ブロックを複数搭載し、配線や利得をデジタル制御信号で可変にした製品が発表され、アナログ回路のPLDが登場した。(Field Programable Analog Array:FPAA)
また、従来のデジタル回路FPGAにアナログ回路ブロックを混載し、そのアナログ回路ブロックを用いてAD変換回路などを構成することで1チップ化可能なMixedSignal FPGAも製品化されている。