最終更新日時:2022-07-26 23:37:47
ちょっとEPROMライタが必要になったので作ってみました。
例の如く汎用ロジックICのみで、です。
もう作ることもないでしょうが備忘録的にまとめておきます。まとめておいてもロジックICだけでEPROMライタを作るという人はそう多くなさそうなので不必要な情報かもしれませんが(笑)
RS-232Cの負電圧がなんかうまく出ないとかなぜか書き込みデータが97->98->99...となってほしい所97->96->96->96...となっておかしいとかいろいろありましたがそれはおいおい追記します。(多分)
記事を書きたくても時間よやる気が足らん。そのため情報が薄いのは仕方なし。
まず、UV-EPROMとは紫外線を当てると全領域が消去され(全領域を0xFFになる)、高電圧をかけ書き込みパルスを与えると任意の値を書き込むことができる(H->L方向のみ)ROMデバイスの一種です。
ちなみにEPROMは窓に光を当てると起電力が発生します。
このツイート
を見てもらうとわかりますが、確かに起電力が発生しています。また、
ここ
では電卓を動かしていますね。すごい。
このような魅力的なデバイスを使っていこうと思います。
さて、この書き込み装置ですが、この書き込み装置はパソコンからRS-232Cで書き込みデータを受信し、そのデータをEPROMに書き込みます。
書き込みが終わるとEPROMからデータを出力させデータを読み取りパソコンに送り返すことでパソコン上でベリファイ(検証)させることで完全に書き込みが完了したかをチェックするという流れで次々と1Mbit分データを書き込む寸法です。
書き込みデータの中で0xFFは特別な意味があって、この場合は書き込みのプロセスをパスして読み取りのみを行います。こうすることで書き込み回数を減らしちょっとEPROMにやさしいかもしれません。(どのタイミングでEPROMが痛むのかは不明。もしかしたら書き込み電圧を加えた時点で痛んでいるかもしれない。)
そして書き込みはパスしてもEPROMからは読み出しを行うのでこれを利用するとROMリーダになります。実は書き込み電圧を加えていなければ書き込みパルスを加えても問題ないとされていますが少し気分が悪いので気分的にそうしています。
0xFFを特別な用途で使ってしまっては0xFFを書き込みできないのでは?
となるかもしれませんが、EPROMはもとよりL->Hの方向にしか書き込みでは操作できないため、すべてHの0xFFは書き込み動作では不要です。つまり、0xFFは特別な処理に割り当てても問題ありません。
こういった動作で装置をつくりました。
書き込みの制御を考える。
まず脳死でデータシートを眺めましょうか。
M27C1001(ALL DATASHEETより)
ここの17ページ、Figure 9が書き込みに関するタイミングの図のようです。
これを見ると書き込みパルスが95~105μsの間で、パルス発射前後は最低でも2μs間データを保する必要があるようです。
また、ベリファイのためにデータを読み出す際には書き込みから4μs開けるなどなどありますね
他にもいろいろありますが、早くても遅くてもいけない書き込みパルスの100μsを基準にして進めていけば何とかなりそうだということで設計を進めていきました。
ぱぱぱーっと必要そうなタイミングを書き出した後、ロジックICの4017という10進カウンタをベースにタイミングチャートを引いてみました。
cnt_clkは4017に実際に入るクロックでパソコンからのデータ受信待の際にクロックの供給を止めていることを示しています。
クロックはreceive(RS-232Cモジュールからのデータ受信完了フラグ)が立ったらクロックを供給開始して書き込みプロセスを始めます。
まずバスを転送モードに設定(transfer)し、シフトクロックを供給することで受信データを書き込みレジスタに転送します②
転送はSPIモドキで行い、完了後③~⑤の間書き込みレジスタの出力を有効にしてそのちょうど中間の④で書き込みパルスをEPROMに与えます。するとクロック1周期を100μsだとすれば前後に2μs以上開けているので安全に書き込みができるはずです。
バスがかち合わないように最低1クロック分開けてEPROMの出力に切り替えたいのですが、バス制御用のD-FFに与える信号の都合上色々あって2クロック分開けざる負えないため⑥すべてのバス出力を無効にしたのち⑦ではお休みします。
⑧でEPROMの出力を有効にした状態でレジスタにクロックを与えベリファイ用のデータを用意し、⑨で転送モードに切り替えRS-232Cの送信レジスタに読み取ったデータを転送します。
送信するデータを用意できたところで送信パルスをRS-232Cに送りベリファイデータをパソコンに送信、各状態をリセット、アドレス指定用カウンタをインクリメントを行い1byte分の書き込みは終了です。
これを128kbyte分繰り返します。
回路を考える。
回路図はまともに引いていないのでありません。ちゃんと図面引くほどでないうえにちょっと面倒だったので…(汗)
ホワイトボードに書いた制御用の回路図(モドキ)を一応出しておきます。あっているとは限りません。
クロックは100μsを作りたいので家に転がっていた20.04MHzの水晶を11分周して作りました。
95~105μsを作られれば74123のようなワンショット回路などでもなんでも構いませんが、私はなるべく正確にしたかったので水晶で書き込みの制御に使うクロックと共用する形で作りました。
波形
スポンサードリンク
動画
動画をわざわざ作るのも面倒だったので暫定で実験記録用の映像をそのままうpしました。
制御回路のテスト。EPROMを使わずに書き込みレジスタまでの通信が正常に動作するかのテスト。
関連するページ
-
NAND(74HC00)だけで16bitCPUを作る[NLP-16] このページはNAND素子のICである74HC00のみを用いて16bitCPUを作るという馬鹿みたいなことを纏めたページ。 また、早速だが使っているICは7400ではない。以前は”7400でCPUを作りたい”にしていたが詐欺なので変えた。 使用しているのはC...(以下略)
記事作成日時:2022-02-27 15:47:09
最終更新日時:2023-09-12 03:59:52
-
電子工作 修理 TOP ここでは私が製作した物や修理したものについて書こうと思う。記事の内容については責任を一切負うつもりはない。 主な製作の方向性は私が製作したいと思えたものを作っている。そこには何ら崇高な目的も技術的に重要な要素もない。欠片もない。一個人での開発の集積場であり、何かを啓発するつもりもない。...(以下略)
記事作成日時:2022-02-27 15:41:38
最終更新日時:2022-02-27 17:30:32
-
EPROMライタを汎用ロジックのみで作りたい ちょっとEPROMライタが必要になったので作ってみました。例の如く汎用ロジックICのみで、です。もう作ることもないでしょうが備忘録的にまとめておきます。まとめておいてもロジックICだけでEPROMライタを作るという人はそう多くなさそうなので不必要な情報かもしれませんが(笑)まず、UV...(以下略)
記事作成日時:2022-06-27 00:07:59
最終更新日時:2022-07-26 23:37:47
-
製作経緯・他 はじめに言ってしまうと、もともとは74HC00でCPUなど作るつもりはなかった。では、もともと何で作るつもりだったかというと機械式リレーで作るつもりで計画していた。ガシャガシャと音を立てて目で、耳で動いているのがわかる、そんなところ惹かれてどうしても自分の手で作り出したい。そのためにリレーを750個購入して、いざ作ろうということでリレーの状態を調べたところ700個くらい...(以下略)
記事作成日時:2022-02-27 15:53:37
最終更新日時:2022-02-27 17:30:44