PLD(Programmable Logic Device)
PLD(Programmable Logic Device)とは、内部の論理構成をユーザ自身が書き換え可能な半導体デバイスである。回路の大部分を固定された標準ロジックで構成するASICなどとは対照的に、PLDはシステム要件が変化しても柔軟に対応しやすい点が特筆される。代表的な例としてCPLD(Complex Programmable Logic Device)やFPGA(Field Programmable Gate Array)が知られており、小規模な制御回路から高速演算を要する用途までカバーできる多様性が魅力である。
概要と歴史
PLDの歴史は1960~70年代にさかのぼる。初期のデバイスはROMやPROM(Programmable Read-Only Memory)を利用して論理を実装する方式が主流であったが、その後AND-ORアレイ構造を組み合わせたPLA(Programmable Logic Array)が登場し、柔軟な論理設計を実現できるようになった。その後GAL(Generic Array Logic)やCPLDといった技術革新が進行し、今日では数百万の論理要素を搭載するFPGAへと発展した背景がある。
This is the #Altera EPXA10 #Excalibur Development Board circa 2003.
– EPXA10F1020C2 Programmable Logic Device (PLD) with 1,000,000 #ASIC equivalent gates 38,400 logic elements.
– Embedded processor stripe containing an ARM922TTM 32-bit RISC microprocessor.
– SDRAM controller
-… pic.twitter.com/X8oH3CaNCA— BehindTheCode with Gerry (@_BehindTheCode) September 6, 2024
PLDの種類
PLDにはいくつかの種類が存在し、代表的なものとしてPAL(Programmable Array Logic)、GAL(Generic Array Logic)、CPLD(Complex Programmable Logic Device)、FPGA(Field Programmable Gate Array)がある。PALやGALは構造が比較的単純で、小規模な論理回路に適している。一方、CPLDやFPGAはより多くの論理ブロックと柔軟な配線構造を持ち、複雑で大規模な論理設計に対応する。これらのデバイスは用途や規模に応じて選定される。
GAL(Generic Array Logic)
GAL(Generic Array Logic)は、PAL(Programmable Array Logic)の発展形であり、機能の汎用性と再プログラミング性を兼ね備えた中小規模のプログラマブル論理デバイスである。PALと同様にAND-OR構成を基本とするが、EPROMやEEPROM技術により繰り返し書き換えが可能であり、開発中の試作や設計変更に柔軟に対応できる点が特徴である。また、複数の論理機能を1つのデバイス内に統合できることから、配線の簡素化や基板の小型化にも貢献する。
これは過去の代表作だったPC-9801用の改造CPU。コア周辺にある4つのGAL(※)に僕の独自ロジックが焼いてある。
※GAL:Programmable Logic Device(PLD)の一つ。EEPROMベース。その後PLD→CPLD→FPGAへと大進化した出発点ともいえる初期のプログラマブルデバイス。 pic.twitter.com/pfuHcz6fNR
— qnɔoqɹɐɯ☄まあぼ@cub (@marbocub) January 16, 2024
CPLD(Complex Programmable Logic Device)
CPLD(Complex Programmable Logic Device)は、複数の論理ブロック(マクロセル)と、これらを接続するプログラマブルインターコネクトから構成される中規模のPLDである。GALやPALに比べてより大規模な回路を実装可能であり、決まった構造を持つためにタイミング特性が安定しているという利点がある。記憶にはEEPROMが用いられ、電源投入後すぐに動作できるため、ブートローダや制御信号の生成など即時性が求められる用途に適している。
Today's recommended products!
Model number:5M2210ZF256C4N
Manufacturer: Altera
Category:Embedded – CPLD (Complex Programmable Logic Device)If you are interested in these products, please feel free to contact me at sales16@lkrelec.com! pic.twitter.com/w6nSiWVjLK
— LKR Electronic (@LkrElectronic) October 16, 2023
FPGA(Field Programmable Gate Array)
FPGA(Field Programmable Gate Array)は、高度な再構成性を持つ大規模なPLDであり、論理ブロック(LUT)、フリップフロップ、メモリブロック、DSPブロックなどから構成される。配線は柔軟なスイッチマトリクスにより構成可能で、並列処理や複雑な状態遷移回路の実装に優れる。FPGAは一度の設計で多様な機能を実装できるため、プロトタイピング、エミュレーション、AI推論、画像処理、通信処理など多岐にわたる分野で利用されている。コンフィギュレーションには外部メモリが必要な場合もあるが、自由度の高い設計が可能である。
Dive into the world of immense FPGA power with our detailed analysis of the XC3S5000-4FG900I. Whether you're an FPGA veteran or new to the field, join us as we explore the comprehensive capabilities and diverse applications of this advanced programmable logic device. pic.twitter.com/W25gu8cYyX
— ChipsX (@x_chips88563) September 25, 2023
内部構造と動作原理
CPLDは複数のAND-OR論理をまとめたマクロセル群を配線資源で結合し、プログラミングにより論理定義を行う構造である。FPGAはロジックエレメント(LE)と呼ばれる小規模な演算ブロックを数多く配置し、それらをSRAMスイッチやフューズで構成された配線ネットワークで結合する仕組みを採用する。これにより動作クロックや演算ユニットの設定が柔軟になる。
設計フロー
PLDの設計フローは、ハードウェア記述言語(HDL)による論理記述から始まる。次に合成ツールを用いて回路を論理ブロックに分解し、ターゲットデバイスに合わせた最適配置を行う。さらに配置配線ツールで論理ブロック間の物理的接続を決定し、タイミング解析を通じて性能や正確動作を検証する。最終的に生成されるビットストリームをPLDに書き込み、実機検証を行うことで完成する流れである。
用途とメリット
PLDは開発期間の短縮や設計リスクの低減に大きく寄与する。特に試作品段階や少量多品種の製品で活用されるケースが多く、必要に応じて機能を書き換えられるため、ソフトウェア的な感覚でハードウェアを更新できる点に強みがある。ハードウェアを修正するたびに新たなテープアウトが必要なASICとは異なり、PLDは一つのデバイスで多様な要求に対応可能となる。
使用例
PLDは、制御装置、通信機器、医療機器、産業用ロボット、自動車電子制御ユニット(ECU)など、さまざまな分野で使用されている。たとえば、FPGAはソフトウェアで処理するには重すぎるリアルタイム処理や、カスタム画像処理アルゴリズムの実装などに活用される。また、通信プロトコルの試作や、センサデータ処理回路の組み込みなどにも応用される。
進化の背景
PLDがここまで進化した背景には微細化技術の進展がある。FPGAなどは動作周波数の高速化や数多くのDSPブロック内蔵により、かつては専用LSIが必要だった信号処理を1チップでカバーできるようになった。さらに開発ツールの進歩やIPコアの充実も後押しし、AI推論の加速器やネットワーク制御など、高度な演算領域でもPLDが活躍の場を広げている。
コメント(β版)