
プログラマブルロジックデバイス(PLD)は、再構成可能なデジタル回路を構築するために使用される電子部品です。固定機能を持つ個別のロジックゲートを使用して構築されるデジタルロジックとは異なり、PLDの機能は製造時に定義されていません。PLDを回路で使用する前に、目的の機能を実装するようにプログラムする必要があります。[ 1 ]固定ロジックデバイスと比較して、プログラマブルロジックデバイスは複雑なロジックの設計を簡素化し、優れたパフォーマンスを提供する可能性があります。[ 2 ]マイクロプロセッサとは異なり、PLDをプログラミングすると、デバイス内のゲート間の接続が変更されます。
PLDは、複雑さの順に、プログラマブルアレイロジック、プログラマブルロジックアレイ、汎用アレイロジックを含む単純プログラマブルロジックデバイス(SPLD)、複雑プログラマブルロジックデバイス(CPLD)、フィールドプログラマブルゲートアレイ(FPGA)に大別できます。
1969年、モトローラは12個のゲートと30個の未割り当て入出力ピンを備えたマスクプログラムゲートアレイであるXC157を提供した。[ 3 ]
1970年、テキサス・インスツルメンツはIBMの読み出し専用連想メモリ(ROAM)をベースにしたマスクプログラマブルICを開発した。このデバイス、TMS2000は、ICの製造中に金属層を変更することでプログラムされた。TMS2000は最大17個の入力と18個の出力を持ち、メモリとして8個のJKフリップフロップを備えていた。TIはこのデバイスをプログラマブルロジックアレイ(PLA)と名付けた。[ 4 ]
1971年、ゼネラル・エレクトリック社(GE)は、新しいプログラマブル読み出し専用メモリ(PROM)技術に基づいたプログラマブルロジックデバイスを開発していました。この実験的なデバイスは、マルチレベルロジックを可能にすることでIBMのROAMを改良しました。インテルはちょうどフローティングゲートUV EPROMを発表したばかりだったので、GEの研究者はその技術を取り入れました。GEのデバイスは、 Altera EPLDよりも10年以上前に開発された、史上初の消去可能なPLDでした。GEはプログラマブルロジックデバイスに関する初期の特許をいくつか取得しました。[ 5 ] [ 6 ] [ 7 ]
1973年、ナショナルセミコンダクターは、メモリレジスタのない14入力8出力のマスクプログラマブルPLAデバイス(DM7575)を発表しました。これはTIの製品よりも人気がありましたが、メタルマスクの製造コストが使用を制限しました。このデバイスは、 1975年にシグネティクスが製造したフィールドプログラマブルロジックアレイ82S100の基礎となったため重要です。(インターシルは実際にはシグネティクスより先に市場に出しましたが、歩留まりの悪さが彼らの製品を失敗に終わらせました。)[ 8 ] [ 9 ]
1974年、GEはモノリシック・メモリズ(MMI)とGEの革新技術を組み込んだマスクプログラマブルロジックデバイスの開発に関する契約を締結した。このデバイスはプログラマブル連想ロジックアレイ(PALA)と名付けられた。MMI 5760は1976年に完成し、100ゲートを超える多値回路または順序回路を実装することができた。このデバイスは、ブール方程式をマスクパターンに変換してデバイスを構成するGE設計環境によってサポートされていた。この部品は市場に出回ることはなかった。[ 10 ]
1970年、テキサス・インスツルメンツはIBMの読み出し専用連想メモリ(ROAM)をベースにしたマスクプログラマブルICを開発した。このデバイス、TMS2000は、ICの製造中に金属層を変更することでプログラムされた。TMS2000は最大17個の入力と18個の出力を持ち、メモリとして8個のJKフリップフロップを備えていた。TIはこのデバイスをプログラマブルロジックアレイと名付けた。 [ 4 ]
プログラマブルロジックアレイ(PLA)は、プログラマブルANDゲートアレイとプログラマブルORゲートアレイから構成され、ORゲートアレイは条件付きで反転処理され、出力を生成します。PLAはROMの概念に似ていますが、ROMのように変数の完全なデコードや最小項の生成は行いません。
プログラマブルロジックシーケンサ(PLS/FPLS)はPLAに似ていますが、いくつかの状態機械を作成できるように、多数のフリップフロップを使用した積分レジスタ出力を備えています。Signeticsは1979年に最初のFPLSを発表しました。[ 11 ]
PALデバイスは、「固定OR、プログラマブルAND」平面に配置されたトランジスタセルのアレイを備えており、入力と出力からの同期または非同期フィードバックに基づいて、各出力に対する「積和」バイナリ論理式を実装するために使用されます。
MMIは1978年に画期的なデバイス、プログラマブルアレイロジック(PAL)を発表しました。プログラマブルORアレイを省略したため、SigneticsのFPLAよりもシンプルなアーキテクチャでした。これにより、部品はより高速、小型、そして安価になりました。PALは20ピン300ミルDIPパッケージで提供され、FPLAは28ピン600ミルパッケージでした。PALハンドブックは設計プロセスを分かりやすく解説しました。PALASM設計ソフトウェア(PALアセンブラ)は、エンジニアのブール方程式を、部品のプログラミングに必要なヒューズパターンに変換しました。PALデバイスはすぐにNational Semiconductor、Texas Instruments、AMDによって二次供給されました。
MMIが20ピンPAL部品で成功を収めた後、AMDは追加機能を備えた24ピン22V10 PALを発表しました。AMDはMMIを買収した後(1987年)、統合事業をVantisとして分社化し、その事業は1999年にLattice Semiconductorに買収されました。

PALを改良したのが、1985年にラティス・セミコンダクター社が開発した汎用アレイロジックデバイス(GAL)です。このデバイスはPALと同じ論理特性を持ちながら、消去と再プログラミングが可能です。GALは、ロジックのバグを再プログラミングによって修正できる設計のプロトタイプ段階で非常に役立ちます。GALのプログラミングと再プログラミングは、PALプログラマを使用するか、対応するチップの場合はインサーキットプログラミング技術を使用して行います。
ラティスGALは、CMOSと電気的に消去可能な(E2 )フローティングゲート技術を組み合わせた、高速かつ低消費電力のロジックデバイスです。同様のデバイスとして、PEEL(プログラマブル電気的消去可能ロジック)がInternational CMOS Technology(ICT)社によって開発されました。
GALチップは、後述する複雑プログラマブルロジックデバイス(CPLD)を補完する、単純プログラマブルロジックデバイス(SPLD)と呼ばれることもあります。
PALとGALは、数百個の論理ゲートに相当する小型サイズのみで提供されています。より大規模な論理回路には、複雑なPLDまたはCPLDを使用できます。これらは、プログラマブルな相互接続によって連結された複数のPALに相当する機能を、すべて1つの集積回路に内蔵しています。CPLDは、数千個、あるいは数十万個もの論理ゲートを置き換えることができます。
CPLDの中にはPALプログラマを使用してプログラムされるものもありますが、数百ピンのデバイスではこの方法は不便になります。もう一つのプログラミング方法は、デバイスをプリント基板にはんだ付けし、パーソナルコンピュータからシリアルデータストリームを送信することです。CPLDには、データストリームをデコードして、指定された論理機能を実行するようにCPLDを構成する回路が内蔵されています。AlteraやAtmel(現在はMicrochip)などの一部のメーカーは、JTAGを使用して.JAMファイルから回路内でCPLDをプログラムします。
PALがGALやCPLDへと発展していく一方で(上記で全て説明した通り)、別の開発の流れも進んでいた。このタイプのデバイスはゲートアレイ技術に基づいており、フィールドプログラマブルゲートアレイ(FPGA)と呼ばれている。FPGAの初期の例としては、1970年代後半にSignetics社が発表した82S100アレイと82S105シーケンサが挙げられる。82S100はAND演算項のアレイであり、82S105はフリップフロップ機能も備えていた。
(注:Signetics社の82S100および類似のICは、ANDプレーン+ORプレーンのPLA構造を採用しています。)
FPGAは論理ゲートのグリッドを使用し、一度保存されたデータは、通常のゲートアレイと同様に変更されません。フィールドプログラマブルという用語は、デバイスが製造元ではなく顧客によってプログラムされることを意味します。FPGAとゲートアレイは似ていますが、ゲートアレイは製造時に工場でのみ構成できます。[ 12 ] [ 13 ] [ 14 ]
FPGAは通常、大型のCPLDと同様の方法で回路基板にはんだ付けされた後にプログラムされます。ほとんどの大型FPGAでは、構成は揮発性であり、電源が投入されるたび、または異なる機能が必要な場合は、デバイスに再ロードする必要があります。構成は通常、構成PROM、EEPROM、またはフラッシュメモリに保存されます。[ 15 ] EEPROMバージョンは、システム内でプログラム可能(通常はJTAG経由)です。
FPGAとCPLDの違いは、FPGAが内部的にルックアップテーブル(LUT)に基づいているのに対し、CPLDはゲート群(例えば積和演算)で論理関数を構成する点です。CPLDはよりシンプルな設計向けであり、FPGAはより複雑な設計向けです。一般的に、CPLDは幅広い組み合わせ論理回路に適していますが、FPGAはマイクロプロセッサなどの大規模なステートマシンに適しています。
これらは、固定機能と、プロセッサ上で実行されるコードによって変更可能な機能の両方を備えたマイクロプロセッサ回路です。自己変更型システムを設計するには、エンジニアが新しい手法を習得し、新しいソフトウェアツールを開発する必要があります。
現在販売されているPLDは、固定機能マイクロプロセッサ(いわゆるコア)をプログラマブルロジックで囲んだ構造になっています。これらのデバイスにより、設計者はマイクロプロセッサの動作を気にすることなく、設計に新機能を追加することに集中できます。また、固定機能マイクロプロセッサは、同じプロセッサを実装するプログラマブルゲートアレイの一部よりもチップ上の占有面積が小さいため、プログラマブルゲートアレイには設計者が独自に設計した回路を配置するためのスペースをより多く確保できます。
PLDは、論理デバイスとメモリデバイスを組み合わせたものです。メモリは、プログラミング時にチップに与えられたパターンを保存するために使用されます。集積回路にデータを保存するほとんどの方法は、PLDでの使用にも応用されています。これには以下が含まれます。
シリコン製アンチヒューズは、チップ内部のシリコンの特定領域に電圧を印加することで形成される接続部です。通常のヒューズとは動作原理が異なり、電流が流れるまでは接続状態を維持するのに対し、アンチヒューズは逆の動作をするため、アンチヒューズと呼ばれています。
SRAM(スタティックRAM)は揮発性メモリの一種であり、電源を切るたびに内容が失われます。そのため、SRAMベースのPLDは、回路の電源を入れるたびにプログラムする必要があります。これは通常、回路の別の部分によって自動的に行われます。
EPROMメモリセルは、ゲート電極に電荷を永久的に閉じ込めることでオン状態にできるMOSFET (金属酸化膜半導体電界効果トランジスタ、またはMOSトランジスタ)です。これはPALプログラマによって行われます。電荷は長期間保持され、 EPROM消去装置と呼ばれる装置でチップに強い紫外線を照射することによってのみ除去できます。
フラッシュメモリは不揮発性メモリであり、電源を切っても内容が保持されます。フローティングゲートMOSFETメモリセルに記録され、必要に応じて消去および再プログラムが可能です。そのため、プロトタイプで使用されるPLDなど、頻繁に再プログラムされる可能性のあるPLDに適しています。フラッシュメモリは、EPROMと同様に電荷を捕捉して情報を保持するEEPROMの一種です。したがって、フラッシュメモリは数年間情報を保持できますが、EPROMほど長期間は保持できない可能性があります。
2005年現在、ほとんどのCPLDは電気的にプログラムおよび消去可能で、不揮発性である。これは、CPLDのサイズが小さすぎて、起動のたびに内部SRAMセルをプログラムする手間を正当化できないこと、またEPROMセルは石英窓付きのセラミックパッケージのため高価であるためである。

消去可能なプログラマブルロジックデバイス(EPLD)は、あらかじめ接続されていないPLDアレイで構成される集積回路であり、接続はユーザーによって電気的にプログラムされます。ほとんどのGALおよびFPGAデバイスは、EPLDまたはEEPLDの例です。
EPROMと同じ技術を使用しているEPLDは、パッケージ内に石英窓があり、紫外線にさらすことで消去できます。[ 16 ] [ 17 ]
多くのPALプログラミングデバイスは、一般的に「 JEDECファイル」と呼ばれる標準ファイル形式での入力を受け付けます。これらはソフトウェアコンパイラに相当します。ロジックコンパイラのソースコードとして使用される言語は、ハードウェア記述言語、またはHDLと呼ばれます。[ 1 ]
PALASM、ABEL、CUPLは低複雑度デバイスでよく使用される一方、VerilogとVHDLはより複雑なデバイス向けの高水準記述言語として広く用いられています。ABELは歴史的な理由から機能が制限されているものの、新しい設計においては、低複雑度設計であってもVHDLの方がより一般的です。
最新のPLDプログラミング言語、設計フロー、およびツールについては、「FPGAと再構成可能コンピューティング」を参照してください。
デバイスプログラマは、ブール論理パターンをプログラマブルデバイスに転送するために使用されます。プログラマブルロジックの初期の頃は、すべてのPLDメーカーが自社のロジックデバイスファミリー専用のデバイスプログラマも製造していました。その後、異なるメーカーの複数のロジックデバイスファミリーをサポートする汎用デバイスプログラマが市場に登場しました。今日のデバイスプログラマは通常、既存のすべてのメーカーの一般的なPLD(主にPAL/GAL相当品)をプログラムできます。ブール論理パターン(ヒューズ)を保存するために使用される一般的なファイル形式は、JEDEC、Altera POF(プログラマブルオブジェクトファイル)、またはXilinx BITstreamです。[ 18 ]
{{cite book}}: CS1メンテナンス: 場所の発行元が見つかりません (リンク)レジスタは、「M」インバータ(M 0
~M
5
)の搭載による柔軟性により、D、JK、またはTフリップフロップとして動的または永続的に構成できます。レジスタの出力は、トライステート出力バッファに到達する
前に
ANDアレイにフィードバックされるため
、ミーリー状態機械とムーア状態機械の開発が可能になります。