1997. 7. 9
PLDとは、Programable Logic Deviceの略で、プログラム可能な論理ICのことです。規模もさまざまで、PAL,GALなどに代表されるごく小規模なSimple PLDからFPGAのように何千万ゲートもの大規模なPLDまであります。ここでは、アマチュアでも手軽に利用できるSPLDに限って説明しましょう。
回路設計にPLDを利用することの利点・欠点は、いろいろな文献が能書きをたれていますが、アマチュアが利用する分には複雑な論理回路も容易に実現可能とか、セットの小型化や配線の簡略化に尽きるでしょう。特に、前者についてはアイディアがあっても複雑でやる気になれなかったのがPLDの利用で手軽に実験できるようになりました。欠点は消費電力でしょうか。PLDはけっこう大食いなので、バッテリ動作のセットには使いにくいです。
まぁ、いずれにしろマイコン回路の設計技術者にとって、PLDを使いこなせることは必須条件となってきているくらいに、ごくありふれたデバイスになりつつあります。
SPLD(以下単にPLD)は、半導体メーカーが PAL, GAL, PEEL, PALCE, EPLなどの商品名で供給されいますので、これらを見聞きした方は多いかと思います。機能的にはいくらかの違いがあるものの、基本的なところは全て同じです。PLDの内部回路(簡略図)は次のようになっています。
右の図で色のついた格子状になっている部分はANDアレイといい、ここをプログラムすることにより出力の論理を設定します。格子の縦線は入力ラインといい、ここへ入力が入ります。横線はAND項といい、すべての入力ラインと交差しています。AND項の構造は、下に示すようになっていて、多入力のダイオードANDを形成しています。最初は全て接続されていますので、PLDへのプログラミングは必要な部分を残してヒューズを切ることにより実現します。使わない AND項はそのままにしておけば ANDが成立せず常に"0"で無効になります。また、一本の AND項の交点を全部切れば常に"1"となり、出力はスタックしてしまいます。逆に、ANDの条件としたい入力ラインを接続すると考えた方がわかりやすいでしょうか。例えば、ANDの条件を IN1 * !IN2 としたい場合は入力ライン0,5を接続することになります。
PLDがこのようにANDをとってORをとるという方式 (A*B*C*D + E*F*G*H + I*J*L ....)を基本としているのは、どんなに複雑な論理式でもこの形式に展開することができるからです。ただ、AND項の数は限られていますので、展開後必要に応じて論理圧縮する必要もあります。
以上がPLDの基本原理です。また、単なる組み合わせロジックのほか、出力部にレジスタを設けてステートマシンとして使用される場合が多いです。いま説明したヒューズ方式のPLDは初期のバイポーラPLDによく見られたもので、ヒューズROMと同様1度プログラムすると再プログラムは不可能です。現在はほとんどCMOS化され、ヒューズの代わりにEEP-ROMのスイッチで何度でも再プログラムできるものが主流となっています。