プログラマブルロジックデバイス
出典: フリー百科事典『ウィキペディア(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 (Field Programmable Gate Array)
利用者が独自の論理回路を書き込むことの出来るゲートアレイの一種。 FPGAの定義は明確でなく、利用者やメーカーなどが独自の解釈でそう呼んでいるようだが、書き込み可能な回路規模はおおよそ1,000ロジックエレメント(約20,000ゲート)以上のものをFPGAと呼ぶことが多い。
[編集] SRAM型デバイス
デバイス上に多数のLUT(Look Up Table)、D-FF、ルーティング資源を搭載し、これを組み合わせて回路を構成する形式が主流である。LUTの内容、D-FFの動作モード、ルーティングの情報を保持する要素として、SRAMを用いる。 電源を切ると回路情報が揮発してしまうため、動作させるには外部にROMを接続し、電源投入時に回路情報をロードしてから使用するタイプが一般的である。昨今ではコンパクトフラッシュにファイルとして収めた回路情報を、FPGAに転送するLSIが用意されている場合もある。
大規模なデバイスでは、更に、S-RAMブロック、乗算器、PLL、クロックドライバ等を搭載して、複雑なアプリケーションをインプリメントできる様にしたものもある。また、入出力部分もTTLレベル、C-MOSレベル、差動型IO等、多種多様な信号を取り扱う事が可能であり、用途に合わせて信号レベルを設定できる。
SRAM型FPGA用のIPも充実しており、CPU、演算器、周辺回路等が用意されている。CPUそのものも混載させたデバイスもある。
[編集] EEPROM型デバイス
また、回路情報の保持要素としてEEPROMを用いるデバイスもある。これは、電源を切っても回路情報を保持しているため、電源投入後に直ぐに使用できるほか、回路情報を内部に持っているため、設計のノウハウが漏れないという利点もある。
[編集] CPLD (Complex Programmable Logic Device)
PAL、GALよりも規模の大きなPLDで数百のロジックエレメントから成り、殆どがEEPROMのアーキテクチャで構成される。
書き込み方法
- フラッシュROM
- EEPROM,EPROM
- Antifuse
[編集] PLD (Programmable Logic Device)
一般的にはPAL(Programmable Array Logic)、GAL(Generic Array Logic)を総称してPLDと表現するが、CPLDあるいはFPGAまでを含めPLDと表現する場合もある。
[編集] 小規模なもの
- PAL: ANDアレイが書き換え可能で、ORアレイが固定のもの。
- PAL: ANDアレイ、ORアレイとも書き換え可能のもの。
- GAL, PLD: ANDアレイが書き換え可能、ORアレイが固定で、ORアレイの出力をANDアレイに入力できるもの。