IM5600 256 bit TTL PROM

MOS構造のトランジスタ素子によるプログラマブルROM (PROM)が一般化する以前、ユーザプログラマブルなROMとしてバイポーラ素子によるヒューズPROMがいろいろと使われていた時期がありました。Intersil社のIM5600も、そのようなバイポーラPROMのひとつです。1語8 bit構成で全32語の256 bitを記憶できます。

IM5600
16ピンプラスチックDIPです。これは1981年製。

通常のTTL ICと類似のバイポーラプロセスで作られているため、高速で、アクセスタイムは50 nsです。MOSプロセスの1702Aで1 us程度、2708で450 ns程度ですから、一桁違いますか。そのかわり、消費電力も大きく、256 bitのROMなのに最大100 mAも消費します。0.5 Wというわけで、16ピンのプラスチックパッケージのICで消費するにはかなり大きな消費電力です。

ピン配置はこのようになっています。
DO0 1     16 VCC
DO1 2     15 CS*
DO2 3     14 A4
DO3 4     13 A3
DO4 5     12 A2
DO5 6     11 A1
DO6 7     10 A0
GND 8     9  DO7
GNDとVCCが電源で、DO0 - DO7がデータ出力、A0 - A4がアドレス入力、CS*がチップセレクト信号と、ROMとしてはもっともシンプルな信号入出力となっています。入力は電圧電流とも標準のTTLレベル規格に合致しています。ただし、DO0 - DO7はスリーステートでなくて、オープンコレクタ出力となっています。
IM5600とピン互換のROMは多く、それだけ広く使われた素子ではあります。少し並べてみると、

部品名   メーカ     記憶素子
IM5600   Intersil   p-n junction
6330-1   MMI        Fuse (NiCr)
HM7602   Harris     Fuse (?)
DM74S188 NS         Fuse (TiW)
DM8577   NS         Fuse (?)
SN74S188 TI         Fuse (TiW)
93417    Fairchild  Fuse (?)
AM27S08  AMD        Fuse (poly silicon)
82S23    Signetics  ?
MSL8515  OKI        p-n junction
M54730   Mitsubishi Fuse (NiCr)
MB7051   Fujitsu    p-n junction
と、こんなにあります。
この表の部品名とメーカについてはそのままの意味ですが、記憶素子の欄については注釈が必要だと思います。以上のTTL型のPROMは、すべて大電流で内部回路の一部を焼き切ることによって記憶する手法が使われています。その焼き切る部分の性質について、記憶素子の欄に書いてあります。?のところは手元の資料では不明なものですが。大まかに金属の細い線を焼き切って書き込みを行うものをヒューズPROMと呼びます。あの、電気機器に大電流が流れて危険なことが生じないように保護回路の一部として使うヒューズと同じ原理ですね。たとえばMMI社の6330-1はニクロム合金の細い配線を焼き切るかそのままの状態で使用するかで0と1を記憶します。IM5600などにはp-n junctionと記入してありますが、これは接合形PROMということで、内部のバイポーラトランジスタのベース接合部分を大電流で破壊することによって書き込みを行うものです。外からみれば、ヒューズPROMとたいして違わないので、接合形PROMもまとめてヒューズPROMと呼ぶこともあります。
ピンコンパチブルでアクセス速度などもほぼ同等のPROMでも、記憶部分はメーカごとにこれだけバリエーションがあります。内部の細かい点は性質が異なるのです。それを反映して、以上の素子のプログラム条件はほとんどすべて異なります。Intersil社のIM5600とFujitsu社のMB7051が同じ書き込み方式である以外は違うのです。しかも、同じPROMでも製造時期によって書き込み方式が異なったり、書き込み精度を上げるために書き込み方式がひんぱんにバージョンアップされることもありました。その結果、PROMにデータを書き込むROM WriterはPROMメーカからライセンスを与えられたうえで製造しなくてはならず、非常に高価な装置となりました。1702以降のUV EPROMではピン互換製品同士ではほぼ等しい書き込み方式となっていたのと対照的です。
これらのTTL PROMは消去できない構造となっています。焼き切ってしまったヒューズや接合面を元の状態に復元することはできないのです。そのためメーカ出荷時に充分にテストするわけにはいきません。データを試しに書き込んで、そのデータをきちんと読み出せるかテストしたら、もう他の用途には使えなくなりますから。それで、どうしても出荷した製品の一部に不良品が混じってしまうことになります。一部に不良品が混じるといっても、場合によっては3割近い不良品が混じるのですからたまりませんが。いや、もちろん数%の不良率ですむ場合も多いですけど。
さらに、これらのPROMに書き込む条件というのが尋常ではありません。内部回路の一部を破壊するわけですから、あたりまえといえばあたりまえかもしれませんが。データの出力端子には通常の読み出し時には最大でも20 mA程度までしか流してはいけないのに、書き込み時には200 mAも流す必要があります(IM5600の場合)。その際、むりやりに200 mA流すため、通常動作時の電源電圧は5 Vなのに、出力端子には最大で28 V加える必要があります。普通のTTL ICの場合だと、電源端子や入出力端子に7 V以上加えると破壊する可能性がありますから、28 Vというのは充分に高圧です。
書き込み時に充分にヒューズや接合面を焼き切らなくては、中途半端に切れかかった状態になって、一時的には書き込みが成功したようにみえても、温度などの条件が異なると切れていないと内部回路が判断してしまう可能性もあります。逆に必要以上に書き込みパルスを加えたり、電流を流しすぎると、切るべきヒューズや接合面以外の内部回路まで破壊して、PROMの故障の原因になるかもしれません。というか、実際に破損します。
PROMメーカは、自社の製造責任による不良品かいいかげんな性能のROM Writerによる書き込み不良か判断できないため、PROMメーカ自身がライセンスを与え性能を検定したROM Writer以外による書き込みで生じた不良品についてはいっさいクレームを受けつけない方針をとっていました。焼き切る部分の製造ばらつきによって微妙に焼き切れやすいものや切れにくいものが発生して、それが不良品となってしまうことがあるため、メーカ自身も書き込み方式をたえず工夫して、若干のばらつきがあってもそれなりに正しく書き込めるように書き込み方式のバージョンアップが行われたりします。そのバージョンアップの通知は、ちゃんとメーカと契約してライセンスを受けたROM Writerメーカにしか即座には行われなかったりとかありまして、ROM Writerを製造する企業も限られてしまいます。しかも、ROM Writer製造側から考えれば、特定PROMメーカの特定のPROMにしか書き込めないようなROM Writerというのは売れませんから、ほとんどのPROMメーカとライセンス契約を行う必要があったり、そんなこんなでやたらに特殊で大きくて高価な代物になってしまいます。
書き込み方式自体もかなり面倒な手続きが必要です。
IM5600の場合、電源電圧やDO0 - DO7以外の入力端子(書き込み時にはDO0 - DO7もプログラミングパルスの入力端子となります)は通常動作時と共通で簡単ではあります。ただし、DO0 - DO7に加えるプログラミングパルスはかなりややこしい仕様です。工場出荷時にはすべてのビットが0になっています。特定アドレスの1を書き込みたいビットDOxひとつだけ(同時に複数のビットを書き込めません)について、CS*をHレベルにしてA0 - A4には書き込みアドレスを与えた状態にして規定の時間が経過した後、まずは20 mAの定電流源から電流をむりやり流しこみます。この状態でDOxの電圧が7 V以上なら正常です。それを確認してから、200 mA, 7.5 usの定電流源からの書き込みパルスを与えます。ただし、この際にはDOxが28 V以上になってはいけません。7.5 usが経過したら、再び20 mAの定電流をDOxに与え、そこから0.7 us後にDOxの電圧を測定します。DOxの電圧が7.0 V以上なら、再び200 mAの書き込みパルスを与える操作を繰り返します。7.0 V未満になったら、20 mAの定電流を与えたままさらに10 us待ち、再びDOxが7.0 V未満か確認します。7.0 V未満なら一応は書き込めたことになり、さらに確実に書き込むため、200 mA, 7.5 usと20 mA, 0.7 usのサイクルを4回繰り返しておきます。そこで次に1を書き込むビットを探して書き込みを続けます。なお、アドレスを変化させるときにはDO0 - DO7はオープンの状態にしておかなくてはなりません。こうやって、短いパルスを繰り返し加えながら書き込めたか確認することで、必要以上のダメージを素子に与えずに記憶素子の製造ばらつきに対処しているわけです。
メーカによっては、書き込みパルス幅がパルスの繰返し回数の関数になっていたり(繰返し回数に比例してパルス時間を長くする)、書き込みがうまくできたか確認する際に電源電圧について読み出し時の電源電圧範囲より少し高い電圧と少し低い電圧を与えた状態で両方とも正常に読み出せるか確かめよというところとか、さまざまな工夫があります。もちろん書き込みパルス時間や各端子に与える電圧電流など、ぜんぜん違います。
こういった装置を、マイクロコンピュータが利用可能かどうかという時期に製作しなくてはならないのだから、ROM Writerメーカもたいへんですね。

こういった小容量TTL ROMの用途ですが、コンピュータの通常のプログラムを格納するには小容量過ぎて使いにくいかもしれません。なんといっても32 Byteしかありませんから。しかし、紙テープからプログラムをロードする最低限のブートローダの記憶用には、1, 2個もあれば十分だったりしますから、使用可能です。その他、アクセスタイムの高速性を活かしてマイクロプログラムの記憶用にも使えないことはないですが、よほど小規模なマイクロプログラム以外はもう少し記憶容量の大きいチップを使った方が楽でしょうね。
そのほかに、小規模のロジック回路の置き換えとして、小容量TTL ROMを利用することも可能です。こちらのほうが利用価値が高いでしょうね。現在ではPALとかGALの類の小規模プログラマブルロジックアレイが、この分野でもっぱら使用されています。しかし、1970年代から1980年代前半にかけては、PALの類は存在しないかかなり珍しい存在だったので、TTL ROMが使われることもあったのです。
IM5600のA0 - A4をある論理回路の入力信号(場合によってはCS*も回路の入力信号として利用可能)、DO0 - DO7を論理回路の出力信号として、考えることが可能です。つまりA0 - A4の特定の組み合わせについてDO0が1になる回路という具合にみなすわけです。IM5600の場合だとアクセスタイムが50 nsですから、普通のTTL ICのゲートを3段組み合わせたものと速度的には変わりません。したがって、適度に複雑なゲート回路の置換に使用すれば、速度的には同等で部品数を数分の一に減少させることが可能です。
 

Return to IC Collection