PAL(Programmable Array Logic)を深掘り:仕組み・設計フロー・実務での使いどころ

PAL(Programmable Array Logic)とは何か

PAL は Programmable Array Logic の略で、プログラマブルロジックデバイスの初期形態のひとつです。基本的には、プログラマブルな AND ネットワークと固定の OR ネットワークを持ち、ユーザが論理積和(sum-of-products)形式で論理関数を実装できるようにした集積回路です。1970年代後半に広く普及し、ワイヤラップやディスクリート論理に替わるグルー論理として使われてきました。今日では CPLD や FPGA に置き換えられる場面が多いものの、低コスト・低消費電力が求められる場合やレガシーボードのメンテナンスにおいて今も利用例があります。

歴史と背景

PAL は 1970年代末から 1980年代にかけて、EPROM や PROM を用いた固定ロジックや配線による実装に代わる手段として登場しました。初期の PAL はヒューズによる一度だけのプログラマブルデバイスで、後に EEPROM やフラッシュで再プログラム可能な派生品が登場しました。再プログラム可能なデバイスとしては GAL(Generic Array Logic)や、さらに複雑な CPLD/FPGA が続きます。これらの流れで、PAL は設計の迅速化とコスト削減に寄与しました。

基本アーキテクチャと動作原理

典型的な PAL の構造は次のようになります。

  • 入力バッファ:外部の入力信号が取り込まれる。
  • プログラマブル AND アレー:入力または入力の否定を選んで_AND_項を形成する。ここが書き換え可能で、どの入力を AND に結びつけるかを決める。
  • 固定 OR アレー:AND 項の出力を OR 結合して各出力信号を生成する。OR 配線は固定で高速。
  • マクロセル:各出力の構成要素。出力の反転、出力バッファ、場合によってはフリップフロップを内蔵して登録出力を実現する。

この構成により、設計者は論理和の和集合として表現できる任意のブール関数を実装できます。注意点としては、OR 側が固定であるため、AND 側の数と OR 側での共有リソースが制約となり、複雑な式を直接配置できない場合は分割や最適化が必要になります。

デバイスタイプと実装技術

PAL デバイスにはいくつかのバリエーションがあります。

  • ヒューズベース(OTP, one-time programmable):一度プログラムしたら変更不可。初期の主流。
  • EEPROM/フラッシュベース:書き換え可能で開発やフィールドアップデートに便利。GAL や ATF シリーズに代表される。
  • 出力タイプの違い:トライステート、オープンコレクタ、三端子出力など。
  • ロジック規模:一般的な型番では 8 〜 22 線程度の I/O を持ち、マクロセル数で表現される。

また、パフォーマンスはプロセス(バイポーラ/CMOS)やデバイス世代で変化します。バイポーラ・PAL は高速だが消費電力が高め、CMOS ベースの GAL は低消費電力で再書き込み可能という特徴があります。

プログラミングと設計フロー

PAL の設計は次のような流れで行われます。

  • 仕様化:必要な論理関数、タイミング、I/O、電源・電圧などを決める。
  • 論理設計:ブール式や状態遷移図で回路を記述。複数の論理式を AND-OR の形に整理する。
  • 言語による記述:かつては PALASM、ABEL、CUPL などのハードウェア記述言語で記述してコンパイルする手法が一般的だった。
  • 合成と配置(コンパイル):ツールが論理式をマクロセルに割り当て、プログラミングビットストリームを生成。
  • プログラミング:生成されたビットストリームをプログラマ(ライタ)に送り、デバイスをプログラムする。
  • 検証:実機でタイミングや機能を検査する。

設計ツールはデバイスのリソース制約を考慮して論理を最適化します。特に複雑な論理を小さな PAL に押し込む際は、手動で式を再構成したり、複数デバイスに分割する判断が必要です。

PAL とその周辺技術の比較

PAL の直接的な後継や派生には次のようなものがあります。

  • GAL(Generic Array Logic):再書き込み可能な PAL の代替。EEPROM を採用し、開発・修正が容易。
  • CPLD(Complex Programmable Logic Device):複数のマクロセルを統合し、より大規模なロジックを実現。設計の集約が可能。
  • FPGA(Field-Programmable Gate Array):より柔軟で高密度。組込みの RAM、DSP ブロックなども内蔵。

実務では設計規模やコスト、消費電力、再プログラム性、立ち上げまでの時間(タイムトゥマーケット)を考慮して最適な選択を行います。単純な glue logic やレガシーデザインの交換には今でも PAL/GAL が有効です。

設計上の留意点とベストプラクティス

  • 資源制約を意識する:AND 数やマクロセル数、入力の反転使用可否などデバイス仕様を必ず確認する。
  • 論理の最適化:冗長な項を削り、共有できる AND 項を見つける。ツール任せにせず手動最適化が有効な場面がある。
  • タイミング設計:出力が登録出力かコンビナショナル出力かで伝播遅延やセットアップ/ホールドを検証する。
  • 電力と温度:バイポーラ vs CMOS の特性評価。消費電力と動作温度域を確認する。
  • 信頼性:ヒューズ型は一度きり、EEPROM は書き換え回数に限度がある点に留意する。

具体例:単純なデコーダと FSM の実装イメージ

(概要)3ビット入力のデコーダを一つの PAL で実装する場合、各デコード出力は入力の組合せごとの AND 項で表現されます。状態機械を入れる場合は、各状態ビットをマクロセルの FF にマップし、次状態ロジックを AND-OR で表現します。実機では入出力ピン割り当てやクロック配線を最適化することが重要です。

現代における PAL の地位と活用例

現代では、FPGA と CPLD の普及により PAL の新規採用は減少しましたが、次のような場面で依然有用です。

  • コスト最優先の量産機:低単価で十分なロジック量の場合。
  • レガシー機器の保守:既存設計の交換や代替部品として。
  • 教育用途:論理の基本やプログラマブルロジックの学習教材として。

まとめ

PAL はプログラマブルロジックの歴史的かつ実用的な技術であり、AND-OR 構成を基盤とすることで単純かつ高速なロジック実装を可能にします。今日のハイエンド FPGA ほどの柔軟性はないものの、低コスト・低消費電力・短納期という要件では今でも価値があります。設計時にはデバイス固有の制約とタイミングを十分に理解し、適切に最適化することが成功の鍵です。

参考文献

Programmable Array Logic - Wikipedia

Generic Array Logic - Wikipedia

ABEL language - Wikipedia

Xilinx - FPGA メーカー情報

Lattice Semiconductor - GAL/CPLD 製品情報