プログラマブルロジックデバイス
狭義のPLD (Programmable Logic Device) とは、小規模なプログラマブルロジックデバイスであるPAL (Programmable Array Logic) とGAL (Generic Array Logic) の総称である。
PAL: ANDアレイが書き換え可能で、ORアレイが固定のもの。
PLA: ANDアレイ、ORアレイとも書き換え可能のもの。
GAL, PLD: ANDアレイが書き換え可能、ORアレイが固定で、ORアレイの出力をANDアレイに入力できるもの。
また広義のPLDとして、後述のCPLDおよびFPGAまでを含めてPLDと表現する場合もある。
1990年代後半、各FPGAメーカーは顧客のアプリケーションの要求から、高速化、大規模化を推し進めてきた。
2000年代に入ると、単なるユーザーロジック領域の拡大ではなく、機能ブロックをあらかじめデバイスに盛り込み、高性能化を謳った製品群を開発した。 それまでのFPGAでは、メモリ、加算/乗算器ひいてはCPUといった機能はRTLを論理合成することにより、FPGAの規模が許せばユーザーロジック上に構成できたが、性能やリソースの面で不利となる。 そこでデバイスによっては、CPUコア、SRAMブロック、乗算器、PLL、DSP等の使用頻度の高い回路要素をあらかじめハードマクロとして搭載し、複雑なシステムをひとつのFPGA内に高効率で実現できる様にしたものもある。
また、入出力特性もTTLレベル、CMOSレベル、3.3V、2.5V、1.8Vなどの電圧に対応可能で、PCIやAGPといった各種標準I/F用に合わせた信号レベルを設定することもできる。
FPGAには回路情報の保持要素としてEEPROMを用いるデバイスがある。これは、回路の設定変更に手間がかかる一方で、電源を切っても回路情報を保持しているため、電源投入後に直ぐに使用できるほか、回路情報を内部に持っているため、設計のノウハウが漏れないという利点もある。