【'24/4/4追記】

XC9500シリーズで唯一生産が続いていたXLシリーズがとうとう生産中止になってしまいました。

詳細はこちら

【'24/4/4追記終わり】

 

このブログでよく扱っている古いパソコンにはZ80というCPUが使われていますが、このZ80に繋ぐ回路をいろいろ作っているとほぼ必ず必要になる回路があります。

それがアドレスデコーダです。

 

詳しい話は省きますが、8bitのデータが特定のパターンになっているかどうかを判定するのがアドレスデコーダです。

フロッピーとかFM音源などパソコンに繋がっているデバイスは自分が選ばれているかどうかをアドレスデコーダを使って判断します。

 

アドレスデコーダは8bitの入力から1bitの出力を行なう論理回路です。(Z80の場合)

AND回路とNOT回路の組み合わせになるので、汎用ロジックICで組むとICが二つ必要になります。

 

このように汎用ロジックICで論理回路を組むと実装面積が多くなります。

そこで任意の論理回路を自由に構成できるICが登場しました。1980年台半ばのことです。

それがPLD(Programmable Logic Device)です。

まんまの名前です(笑

 

最初にPALが登場し、その後GAL→CPLDと世代が進むにつれ回路規模が大きくなっていきました。

 

○汎用ロジックICとCPLDの実装面積比

 

これは前に作ったPC-8801FH用の拡張メモリボードの制御回路部分です。

赤線で囲った部分のICをCPLDにすると、おおよそ斜線部分の面積になります。

しかもCPLDの回路の半分が未使用のまま残ります。

汎用ロジックICとCPLDの実装面積効率の違いがわかると思います。

【'21/12/27追記】

上はPLCC版のCPLDを想定して書いていました。

VQFP版ならさらに小さくなります。

【'21/12/27追記終わり】

 

◇◇◇

 

レトロハードに繋げる回路でアドレスデコーダが必要になったときに、最初に頭に浮かんだのがGALだったんですが、さすがにもう入手できないだろうし仮に入手できても書き込む環境が作れないだろうと、汎用ロジックICで組んでいました。

 

先日MSX用のFM音源を改良しようとしたときに、CPLDの在庫と書き込み環境を調べたら今でも環境を構築できることがわかりましたので、CPLDでアドレスデコーダを作ってみました。

 

しかし、アドレスデコーダは入力は多いですが、出力は1bitです。

これに対し、CPLDは出力が36~216もあります。

アドレスデコーダに使うには結構オーバースペックでした。

 

GALなら8~10出力ですし汎用ロジックIC一つ分の大きさでCPLDよりも小さいので、基板実装上も効率がよくなります。

 

そこでダメ元で調べてみたら、GALがまだ生産されていることがわかりました。

後発のCPLDがディスコンになっているのに、更に古いGALがまだ生産されているとはビックリです。

 

そこでいままで諦めていたいろいろなことを調べて、実はまだ今でもいろいろできることがわかったので、まとめておきます。

 

◇◇◇

 

前置きが長くなりましたが、今でも

・PROMの入手と書き込み

・GALの入手と書き込み

ができることがわかりました。

 

・RPOM/GALの入手

今でもMicrochip(Atmel)がOTP EPROM、GAL、CPLDを生産していました。

https://www.microchip.com/

から、

Products→Programmable Logic→SPLD/CPLD

Pruducts→Memory→OTP EPROM

を辿ると、現在生産中の品種を確認できます。

購入はmouserやDigi-Key,マルツオンラインなどで扱っています。

 

【'19/02/13追記】

・CPLDの入手

 上記のとおりMicrochip(Atmel)が継続生産しているほか、XilinxもQFPのXC9500XLの生産を継続しているようです。

以前XC9500/XLの生産状況を確認したときは5V電源もしくは5VトレラントでPLCCのものしか調べてなかったんですが、最近Xilinxのディスコン情報を確かめたらXC9500XLのQFP(VQFP/TQFP)のディスコン情報がありませんでした。

購入はDigi-Keyで扱っています。

(マルツオンラインでも扱っていますが、MOQ(最低注文数)がアマチュア向けじゃありません。)

【'19/02/13追記終わり】

 

・GALのコンフィグレーション

MicrochipがWinCUPLという無償のソフトを公開しています。

インストールに必要なシリアルコードもソフトのダウンロードページに載っています。

H/W記述言語がVHDLではなくCUPLというものですが、アドレスデコーダを組むくらいならさほど難しくはありませんでした。

【'20/1/9追記】

これまでGALとかCPLDとかの開発環境を入れていたPCのOS、Windows7のサポート期限が迫っているので、いままで試していなかったWinCUPLをWindows10のPCにインストールしてみました。

ですが、WinCUPLはWindows10(64bit)では動きませんでした。(Win10(32bit)は未確認です。)

XilinxのIDEはWindows10で動作させる方法がありましたが、WinCUPLはWindows10で動作させる方法がすぐには見つからなかったので、とりあえずWindows7の環境も残しておかないといけないようです。

【'20/1/9追記終わり】

【'20/2/2追記】

WinCUPLの実行ファイルを調べてみたらVB6で作られていることが分かったので、VB6のランタイムをインストールしたら、Windows10ProのPCでは動作するようになりました。

ですが、Windows10HomeのPCではファイルを読み込むと落ちます。

う~ん、DLL地獄にでも落ちているのかなぁ。

【'20/2/2追記終わり】

 

・PROM/GALの書き込み

TL866II Plusという書き込み機が現行品として売られています。

amazonでも取り扱っています。

 

書き込みソフトも専用のものがWebで公開されています。

割と頻繁にアップデートされていて、対応デバイスが増えていっています。

 

◇◇◇

 

このTL866II Plus、FlashROMの書き込みにも対応しています。

さらにはPICやAVRなどのマイコン、それに繋ぐシリアルEEPROMにも対応しているようです。

私の手持ちのFlashROMのうち、対応していないのは日立(現ルネサス)のHN58C256だけでした。

この石は書き込みにコマンドを使わないので、対応する必要もないということなのでしょう。

【'20/1/31追記】

最新のV9.16でHN58C256にも対応されたようです。

(デバイスリストには出てきますが、実際に書き込んでの確認はしていません)

【'20/1/31追記終わり】

【'20/2/14追記】

V9.16で対応していたのはHN58C256APでしたが、HN58C256Pで使えることを確認しました。

【'20/2/14追記終わり】

 

FlashROM(EN29F002、W29C020)や、Microchip(Atmel)のOTP EPROM(AT27C020)、GAL(ATF16V8)に書き込みできることも確認しました。

自作したMSXでの書き込み環境だと数時間かかる256KBのFlasahROMの書き込みが、TL866II Plusでは2分ほどで終わります。

さすが専用機材、早いです。

 

まさか今になってPROMの書き込み環境が構築できるとは思っていませんでした。

これ、すごく便利です。