2017.10.7
前へ
次へ
ホームページトップへ戻る

マイコン独立大作戦
CRT/VGAIF+KEYIF+SDCARDIFボードの製作

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
WindowsパソコンにUSB接続して使う現行方式はそれなりに便利ではありますが、ときとしてWindows
のしがらみから開放されて、小さいながらも独立した一個のパソコンとして機能したいと思うこともあります。
昔はそれが普通のことだったのですが、安価なCRTディスプレイが生産中止となって久しい今日ではそれ
は叶わぬことと諦めていたのですが…。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜

[総合第101回]


●27C512 WRITER

何回も書きましたように、ROM/RAM/RTCボードには27C4001、27C1001、27C512、27C256を実装することができます。
そのうち27C4001、27C1001、27C256については今までの回で動作を確認済みです。
残るは27C512です。
ROM/RAM/RTCボードを設計、試作した当初は27C512については考えていませんでした。
私の頭の中では27C512は過去の石でした。
まあUVEPROM(紫外線消去型ROM)そのものがしっかり過去の石ですけれど。

それがなんで途中から追加することになったのか、といいますと。
実は近日中に皆様に公開予定のあるプロジェクトで27C512を使うことを思い立ったからです。
27C512はちょいと半端な感じのROMです。
容量は27C256の倍、64KBですが、これを8ビットのシステムで使おうとするとレガシィな8ビットCPUのメモリ空間を27C512だけで占有してしまいます。
RAMが置けません。
つまりは32KBずつに分けてバンク切り換えで使う、ということにせざるを得ません。
どうせバンク切り換えにするのなら、ちまちまと27C512などを使わなくとも、27C1001とか27C4001を使えば十分なプログラム空間を得ることができます。
というのがその半端な感じの理由です。

しかし27C512には27C4001や27C1001にはない大きなメリットがあるのも事実です。
27C4001や27C1001は容量は8ビットCPUにとって十分過ぎるほどなのですが、27C256の28ピンに対して4ピン増えて32ピンとパッケージサイズが大きくなってしまいます。
既存のボードでROM容量を拡大するために27C4001や27C1001を使おうとすると、そのままでは実装することができませんから、最初から設計をし直さなければなりません。
きちきちで設計していた場合など、お手上げです。
その点27C512は27C256と同じ28ピンでしかも端子配列はA15を追加する以外は27C256と同じですから、わずか1本の配線を追加するだけで、同じサイズの基板に載せることができてしまいます。
もっとも上に書きましたように、バンク切り換えのための回路を追加する必要はありますが。

幸いROM/RAM/RTCボードは最初からバンク切り換え仕様ですから世話はありません。
そのまま27C512も載せてしまうことができます。
他のプロジェクトで27C512を使うことになりましたので、軽い気持ちでROM/RAM/RTCボードにも27C512を載せることにしてしまおう、と決めてしまいました。
軽い気持ちで決めたのはよいのですけれど、そういうことになりますと、27C4001、27C1001のときと同じことで、「27C512 WRITERが要る」ということになってしまいます。

ま、しかし「昔は27C512 WRITER回路も作ったはずだし27C256と同じ28ピンだから、27C256 WRITERの配線をちょっと直して、書き込みプログラムもちょいと変更すればよいはず」とこれまた軽く考えてしまいました。
まあ、いつものことなのですが、実際にしっかり検討する段階になりますと、それほど簡単には済まないのであります。
確かに27C512は27C256にA15を追加しただけですから、それを回路に実装する分にはバンク切り換えについてだけ配慮すれば別にどうということもないのですけれど、プログラムの書き込みということになりますと、話は別なのでした。

こちらが27C256です。

[出典]National Semiconductor社NM27C256DATASHEET

そしてこちらが27C512です。

[出典]STMicroelectronics社M27C512DATASHEET

えええ!?
VppがG(OE)端子と同じ?
やばいよ、これは。

27C256でVPP専用端子だった1番ピンにA15を配した結果、行き場がなくなったVPPをOEと兼用にしてしまったのでしょう。
確かに書き込み中はOEは使わないわけですからそうするしかないか、とも思うのですけれど。
じゃあベリファイはどうするの?

ということで、こちらが27C256のプログラム(書き込み)モードの波形です。

[出典]National Semiconductor社NM27C256DATASHEET

書き込み中はVPPを+12Vに上げたままにしておいてCEに書き込みパルスを送ります。
1バイトのデータを書き込むごとにデータを読み出して照合(ベリファイ)して、うまく書き込めていなければ再度書き込みパルスを出して追加書き込みをします。
このとき(ベリファイのとき)はOEだけをLにすることでデータを読み出すことができます。
書き込みのときはCEを書き込みパルスとして使うために、通常のREADのときのようにCEとOEを同時にLにできないので、そのようにしてあるのだと思います。
READとWRITEでのCEの使い分けはVPP端子に与える電圧によって決ります。
下は27C256のモードによる端子のまとめです。

[出典]National Semiconductor社NM27C256DATASHEET

そしてこちらが27C512のプログラムモードの波形です。

[出典]STMicroelectronics社M27C512DATASHEET

一見すると27C256と同じことをしているようなのですが。
27C256と違ってVPPとOE(G)を同じ端子で兼用してしまっています。
ということは27C256のときのようにVPPを+12Vに上げたまま、CEもHにしたままでOE(G)をLにするというわけにはいきません。
どうするかというと、結局ベリファイのときもREADと同じようにOE(G)とCEをLにしてデータを読み出すしかないということになります。
下は27C512のモードによる端子のまとめです。

[出典]STMicroelectronics社M27C512DATASHEET

この表にはベリファイがありません。
ベリファイのときにOE(G)端子の電圧をどうするのかについては文章で記載されていました。


[出典]STMicroelectronics社M27C512DATASHEET

やっぱりベリファイのときは、通常のREADと同じでCEとOEをともにLにするということのようです。
いや。
それは困る…。

次回に続きます。

CRT/VGAIF+KEYIF+SDCARDIFボードの製作[総合第101回]
2017.10.7upload

前へ
次へ
ホームページトップへ戻る