そこで述べたように手持ちのEPROMは多くの種類がありますが、下の表に示してあるもののうち、2708と2716は今ではきわめて実用性に乏しく(メモリ容量が少ない、アクセススピードが遅い)、今回のプログラマの対象とするのは2732、2764、27128、27256、27512の5種類とすることにしました。
2732も、これだけ24ピンパッケージで除外したかったのですが、過去に多く使用したこともあって残しました。
まず、基本的な構想をまとめるために代表的な27256を例にとって読み出し、書込みそれぞれのタイミングについて確認しました。右はデータ・シートから引用したタイミングチャートです。
読み出し(上図)
アドレス(A0~A14)を確定し、CE(チップ選択)をLOWレベルにし、さらにOE(出力可)をLOWレベルにすれば、データ・バス(D0~D7)にデータが出力されます。
書込み(下図)
Vpp(書き込み電圧、Vprg)12vを加え、アドレス(A0~A14)を確定し、データ・バス(D0~D7)にデータを確定し、CE(チップ選択)を約100uS(要検討)の間LOWレベルにすることで書込みされます。
これらの制御をお馴染みのArduinoを使うことでおこないますが、問題はアドレスが最大16(A0~A15)、データ・バスが8
(D0~D7)、その他の制御(CE,OE,I2C)に4と多くのポートが必要で使い慣れたArduino Unoではとても足りません。
Arduino Megaを使おうかとも思いましたが、小型のArduino Pro Miniにマイクロチップ社のI/OエキスパンダIC・MCP23017を組み合わせて使うことにしました。
さいわいアドレスは16と多いものの、すべて出力ポートですのでMCP23017で十分につかえます。74HC595を2個使う方法もあるのですが、MCP23017はI2Cで制御できますし、何よりも秋月で@100と安価です、但し少し遅い。(写真)
各ピンの接続は、
・I2Cのアドレスは、A0、A1、A2をGNDにおとして0x20とします。
・SLC→Arduino A5、SDA→Arduino A4
・RESET、VDD→5v VSS→GND
・INTA、INTBは無接続
・GPA0→A0、GPA1→A1あと順にGPA7→A7
・GPB0→A8、GPB1→A9あと順にGPB7→A15
左にMCP23017の制御部分のSketchを掲げました、拡大してみてください。
書き込み電圧生成回路
EPROMの書込みに特有なことは、書込み電圧(プログラム電圧、Vpp、Vprg)が12vまたは21vとチップ供給電圧(VCC)の5vより高いことです。
ここでは実績のあるIC(34063)によるステップアップ・コンバータを使いました。出力電圧の選択は抵抗値を変化させることで容易に出来ます。
この電圧は書き込むEPROMの種類によって選択する必要がありますが、後述する他のピン選択と同様にピンヘッダーをジャンパーピンでショートする方法を採ることにしました。回路図を右に示します。
図中ジャンパーピン2の選択で14vを選択できるようにしてありますが、これは将来、電気的消去ができるEEROMを使用する時の備えです。
左は書き込むEPROMを選択するための各ピンヘッダーへの接続を理解するための図です。
ピン1、27、26、22の4本の接続をEPROMの種類にあわせて、その都度ジャンパーピンを差し替える必要があります。
またピン20はソフトで制御に使います。
図中、右下に27256を例としたジャンパーピンの接続を示しておきました。
左に今回製作したEPROMプログラマーの写真を掲げます。
左上のステップアップコンバータの右が電圧選択部で、その下がEPROM選択ピン群です。
左中央がArduino Pro Miniで、当然のことながらUSB-シリアル・コンバータ経由でパソコンに接続しますが電源も同時に供給されます。
左下のゼロプレッシャー・ICソケットに刺さっているのはI2CEEROMです。
当初アセンブラから出力されたファイル(intel HEX または BIN)をパソコンからEPROMプログラマに直接転送するつもりでしたが、メモリ容量の小さなArduinoを選択してしまったためうまくいかず、時間も無かったので、パソコンで別途I2CEEROMにファイルを書き込み、このI2CEEROMをEPROMプログラマに装着して使用することにしたのです。
右は Tera Termから今回製作したEPROMプログラマを使っているところです。
このプログラマは独りよがり、かつ思い込み先行で作っています。今のところ無事に動いていますが今後どうなるかは保障できません、アマチュアが趣味に使うということでご勘弁を。
・I2Cのアドレスは、A0、A1、A2をGNDにおとして0x20とします。
・SLC→Arduino A5、SDA→Arduino A4
・RESET、VDD→5v VSS→GND
・INTA、INTBは無接続
・GPA0→A0、GPA1→A1あと順にGPA7→A7
・GPB0→A8、GPB1→A9あと順にGPB7→A15
左にMCP23017の制御部分のSketchを掲げました、拡大してみてください。
書き込み電圧生成回路
EPROMの書込みに特有なことは、書込み電圧(プログラム電圧、Vpp、Vprg)が12vまたは21vとチップ供給電圧(VCC)の5vより高いことです。
ここでは実績のあるIC(34063)によるステップアップ・コンバータを使いました。出力電圧の選択は抵抗値を変化させることで容易に出来ます。
この電圧は書き込むEPROMの種類によって選択する必要がありますが、後述する他のピン選択と同様にピンヘッダーをジャンパーピンでショートする方法を採ることにしました。回路図を右に示します。
図中ジャンパーピン2の選択で14vを選択できるようにしてありますが、これは将来、電気的消去ができるEEROMを使用する時の備えです。
左は書き込むEPROMを選択するための各ピンヘッダーへの接続を理解するための図です。
ピン1、27、26、22の4本の接続をEPROMの種類にあわせて、その都度ジャンパーピンを差し替える必要があります。
またピン20はソフトで制御に使います。
図中、右下に27256を例としたジャンパーピンの接続を示しておきました。
左に今回製作したEPROMプログラマーの写真を掲げます。
左上のステップアップコンバータの右が電圧選択部で、その下がEPROM選択ピン群です。
左中央がArduino Pro Miniで、当然のことながらUSB-シリアル・コンバータ経由でパソコンに接続しますが電源も同時に供給されます。
左下のゼロプレッシャー・ICソケットに刺さっているのはI2CEEROMです。
当初アセンブラから出力されたファイル(intel HEX または BIN)をパソコンからEPROMプログラマに直接転送するつもりでしたが、メモリ容量の小さなArduinoを選択してしまったためうまくいかず、時間も無かったので、パソコンで別途I2CEEROMにファイルを書き込み、このI2CEEROMをEPROMプログラマに装着して使用することにしたのです。
右は Tera Termから今回製作したEPROMプログラマを使っているところです。
このプログラマは独りよがり、かつ思い込み先行で作っています。今のところ無事に動いていますが今後どうなるかは保障できません、アマチュアが趣味に使うということでご勘弁を。
2 件のコメント:
参考にさせてもらってます。
ありがとうございます。
2764は1ピンがVPP(21V)で26ピンがNCですね。
コメントを気付かず申し訳ございません。
ご指摘のピンアサイン加筆修正しました。
ありがとうございました。
コメントを投稿