電子デバイス/半導体集積回路

 11.プログラマブル論理集積回路

 前項の汎用論理回路ICは便利ですが、回路の規模が大きくなると部品数が増え、配線基板が大きくなってしまいます。製造技術が進歩してくると大規模な論理回路すべてを集積化してしまった方が便利ではないかとの考え方も出てきます。このような集積回路を総称してApplication Specific Integrated Circuit 略してASIC(エイシックと読む)と言います。日本語に訳せば、「特定用途IC」という意味で、カスタムICという呼び方もあります。

 コンピュータの心臓部であるマイクロプロセッサは現在、もっとも複雑、大規模な回路を集積化したASICと言えます。電卓とか家電製品などに使われるCPUはほとんどそれ1個で全体の回路が構成されるASICの典型例です。さらに高機能なPCのCPUはさらに周辺回路を別のチップで付加しているのが普通で、汎用性も考慮されていると言えます。

 ただ大規模な論理回路が確実に動作するように回路の設計とそれを実現する半導体ウェハ上への要素の配置を製造可能なように決めるパターン設計が必要で、開発に時間もコストもかかります。またその結果いざ製造しても何らかの欠陥が見つかると修正ができないので全体が無駄になる恐れも多分にあります。このため技術的にかなり確立していて相当多数が使用される見込みがないとなかなか開発に踏み切れません。別の章で取り上げる半導体メモリは同じ要素が繰り返し使われるため、ASICとしやすい例です。

 このように初めから最終的な論理回路をすべて決定し、製造してしまうリスクを回避するため発案されたのがプログラマブル論理回路ICです。英語のProgrammable Logic Deviceの略、PLDがこの種のICの総称として使われますが、これに属する種々のタイプにいろいろな略号が乱立していて、同じ名称でも定義が異なる場合もあります。

 さてこのような回路を変更できるICには大きく分けて2種類あります。1つは、メーカーが多数の基本となる論理回路をチップ上に配列したものを用意し、ユーザの求めに従ってメーカーがチップ上の配線を追加して提供するタイプです。このようなタイプをゲートアレイ(Gate Array)と呼ぶことがあります。ゲートは門という意味ですが、ANDやORの論理回路は、複数の入ってくる信号を特定の形にして出す門のようなはたらきがあることから論理ゲートと呼ばれ、それが複数配列されていることからゲートアレイと呼ばれるようになったと思われます。

 もう一つはさらに進んで、ユーザ自身が配線を行えるタイプです。どうしてそのようなことができるのか、これはデバイスとしても興味深いので、簡単な具体例をあげて説明します。例としてA、B、Cの3つの入力があるとし、Aの入力が1であり、かつBとCの少なくともどちらか一方の入力が1であったとき出力Yが1になる論理回路を作りたいとします。

 論理で言い換えると、BとCのOR信号とAとのAND信号を出力する回路です。この論理演算を式で

\[Y=A*(B+C)\tag{1}\]

と標記します。+がOR、*がANDを意味します。

 ここで用意されたチップは、例えば図11-1(a)のような配置であるとします。前列のANDゲートへの配線が変更可能で、後列にこれらのANDゲートに固定的に接続されたORゲートが配列されているとします。入力はA~Dの4つとします。この入力とORゲートの入力端はすべて接続されています(黒丸で示す)。

 この場合、(1)式をそのまま実現しにくい配置ですので、これを書き直すと

\[Y=A*B+A*C\tag{2}\]

と書けます。これまで触れていませんでしたが、このような2進数の論理演算はブール代数という演算規則にしたがっており、それによれば(1)式から(2)式への書き換えが可能です。これは形のうえでは普通の四則演算と同じです。

 (2)式によれば、まずAとB、AとCのAND出力を得、つぎにそのOR出力を得ればYが得られることがわかります。そこで図11-1(b)のように入力配線の一部の接続を切り離します。これにより(2)式で示す論理回路が完成できることがわかります。

 配線の接続の切り離しをユーザが行うには例えばヒューズを使います。各配線の交点を図11-1の円内挿入図のようにヒューズとトランジスタを接続しておきます。切り離したい配線箇所のヒューズにトランジスタから電流を流して溶断します。この方法では一旦回路を切り離すと再度接続することはできません。

 この例は説明を簡単にするための単純な回路ですから汎用論理回路ICのORとANDを使って簡単に作ることができます。もっとずっと複雑で多数のゲートを組み合わせる場合に、外部配線をせず接点を切り離すだけで1チップ上に所望の論理回路が形成できるので大変便利です。

 この例は1977年に米国のMonolithic Memories Inc. (MMI)によって提案されたものですが(1)、初期のプログラマブル論理回路ICはAND回路、OR回路がそれぞれ決められた位置に並べられたものでした。これらの回路配置が固定されていると、無駄も多く、配線がやりにくいといった不便もありました。そこでさらに一歩進んで、より自由に論理回路をユーザの手で構成できる方式が考えられています。

 このようなプログラマブル論理回路ICをFPGA(Field Programmable Gate Array)と呼んでいます。"Field"とは製造側からユーザーに渡った後の現場を意味し、FPGAはユーザーが設定できる論理回路で、1984年に米国のXilinx社(日本特許にはエキシリンク社となっていますが、「ザイリンク」と発音するのが近いようです)によって提案されています(2)。これはかなり複雑な構成をもっていますが、ここでは上記の論理回路をもう一度例にとってポイントだけ説明します。

 このチップは図11-2のように論理回路ブロックが碁盤の目のように並べられています。ここでは説明に必要な最小限に簡略化し2×3の論理ブロックしか示していませんが、実際には多数のブロックが1チップ上に集積されます。

 論理回路ブロックの論理回路の種類はブロックごとに後から選択して決めることができるようになっています。どうやって回路を選択するかですが、選べる回路の種類はAND、OR、NOTといった数種類あればよいので、これを外部信号で切り換えられるように一種のメモリを各論理回路ブロック内に備えています。詳細は省略します。

 さらにこの論理回路ブロックの周囲を囲むように複数の配線が直交するように設けられています。この配線と外部との信号のやりとりをする入出力ブロックが設けられます。ここでは1ヶ所ずつしか示していませんが、実際にはチップの周縁部に多数設けられ、それぞれがパッケージ外部に出るピンと接続されます。

 またこれらの配線は各論理ブロックの論理回路と接続できるようになっています。これらも含め、各配線の交点では接続を切り換えられるようにスイッチを設け、構成する回路にしたがってスイッチを設定します。それぞれの配線の交点には円内挿入図に示すように1つの方向から3つの方向(直進と右左折)のいずれかに接続ができるようにスイッチが設けられています。

 このスイッチは1回だけ設定できればよいのであれば、図11-1の場合と同様に線を焼き切るヒューズのようなものでもよいですが、何度もやり直しができるようにするためにはトランジスタのスイッチを配置します。さらに半導体メモリ素子を組み合わせたものが実用化されています。回路の設定はスイッチ箇所が多くかなり複雑になりますから、専用のソフトウェアを用いて行います。

 上記の例の論理回路を実現した配線例を図11-2に赤線で示しました。ORゲートとANDゲートを任意の位置に設定できますから、ここでは論理ブロク1-1にORゲートに設定し、2-2をANDゲートとしました。各ゲートの入出力線3本は直近の配線のいずれかに接続できるようになっています。入出力ブロックはここでは左側と右側各1箇所にしてありますが、本来はチップ周囲を囲むように多数設けられ、直近のいずれかの配線を選択して接続できるようになっています。

 図11-1の場合のような制約がないので、ANDゲートに入力Aを直接接続ができるためORゲートは1つだけ設ければよいことになります。もちろんそれぞれの配置や配線の仕方も自由に選ぶことができます。

 プログラマブル論理回路ICはいろいろな種類のものが開発され、いろいろな名前で商品化されましたが、FPGA方式が設定の自由度も高いことから近年、この分野を代表する素子となっています。

(1)米国特許4124899号

(2)米国特許4870302号(対応日本出願、特開昭61-198919号)