CPLDとは
CPLDとは、プログラムの書き換えが可能な論理回路デバイスのうち、比較的複雑な回路構成の製品です。
「Complex Programmable Logic Device」の略で、CPLDによって製品開発が以前と比較し、低コストでスムーズに行えるようになりました。
CPLDの使用用途
CPLDは民生品から産業機器まで、制御基板内などの中に広く使用されます。CPLDの具体的な使用用途は、以下の通りです。
- デジタルカメラや複合機
- スマートフォン
- 車載制御装置やカーナビ装置
- ゲーム機
CPLDは制御回路の中でも、特に電源回路の管理などに使用されます。回路への電源投入順番の管理や電圧選択回路などの機能を担う場合も多いです。
CPLDの原理
CPLDは複数のプログラマブル論理回路が集積したブロックと、別のブロックを接続する配線領域によって構成されています。ブロックを構成しているのは、AND-ORゲート構造を持ったマクロセルと1ビットの情報を0/1で保持するためのD型フリップフロップ、入出力のためのI/Oピンの3つです。
マクロセルはInputピンからデジタル信号を入力し、ユーザーにプログラムされた論理回路で、Outputピンへ信号を出力します。内部の一次データはフリップフロップで保存します。
配線領域はブロック間を接続する部分で、1~複数個のブロックを経由してデータを出力します。
CPLDのその他情報
1. CPLDとFPGAの違い
CPLDと類似の論理回路デバイスに、FPGAが存在します。FPGAは揮発性メモリを利用していることから、電源を落とすと回路データが失われます。
それに対してCPLDでは、EEPROMやフラッシュメモリのような不揮発性メモリを利用しているため、回路データは保持されるという違いがあります。両者は規模についても違いがあります。
FPGAが数万ゲートを有するのに対し、CPLDは数千程度のゲートしか有しません。そのため、大規模な論理回路はFPGAに行わせ、電源を投入時にFPGAにCPLDがデザインデータを与えるという使い方をします。
また、論理ブロックが配置されている場所によって遅延時間が異なるため、FPGAは遅延時間を予測するのが困難です。それに対して、CPLDは経由するマクロセルの個数が決まっているため予測が容易です。
2. CPLDの歴史
CPLDは約30年前にTTLやCMOSロジックデバイスの置き換えを目的に開発されました。当時は、NOTやANDだけの機能をもつ汎用ロジックICを基板上で組み合わせて回路を構成していました。
テキサスインスツルメンツ (TI) 社の7400シリーズが有名ですが、当時の技術者は数百を超えるデバイスをほぼ暗記していたと言われています。回路が複雑になると数十から数百個の汎用ロジックICが必要なため、基板サイズが巨大になる問題がありました。
トランジスタの微細化が進んだことで、数千、数万個の汎用ロジックICを数個のLSIで実現できるようになったため、CPLDの開発が加速することになりました。
3. CPLDの開発プロセス
CPLD設計の開発プロセスは、論理設計、論理合成、配置配線、タイミング検証、プログラミングのステップに分類されます。
- 論理設計
VerilogやVHDLなどのハードウェア記述言語を用いて回路設計を行います。RTL設計とも呼ばれています。 - 論理合成
ハードウェア記述言語で現した回路を、CPLDで実装可能なゲート回路 (ネットリスト) に変換します。回路記述を解釈し、NOTやANDなどの論理式に変換します。また、この時、回路の動作速度向上やチップ面積を削減するために最適化も行われます。 - 配置配線
ゲート回路 (ネットリスト) の内容をCPLD内部でどのように配置するかを決めます。組合せ回路部分の出力が安定するまでの時間を計算したり、信号間の出力タイミングに差が出過ぎないように調整したりします。 - タイミング検証
CPLD内部の素子に対して遅延時間を定義し、シミュレーションを行います。 - プログラミング
最終デザインを元に、開発ツールから生成されたデータをCPLDに送り込みます。
参考文献
https://www.cqpub.co.jp/hanbai/books/37/37101/37101_1.pdf
https://www.intel.co.jp/content/www/jp/ja/programmable/products/cpld/cpld.html
https://japan.xilinx.com/japan/fpga-koza/chapter01.html
http://www.ieice-hbkb.org/files/10/10gun_01hen_03.pdf#page=23