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

新製品の紹介(プチ連載です)
27C256WRITER組立キット

〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
たまにはちょいと息抜きで小品も作ってみたいものです。
簡単にチョイチョイと…。
でも、なかなかそうは簡単にはいかなくて、いつものごとく回を重ねてしまうことになるのかも…。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜


[第12回]


●27C256WRITERは82C55に接続します

前回からの続きです。
27C256WRITERは82C55に接続して使います。
82C55は8255の時代からずっと使ってきてその操作については熟知しているつもりだったのですが。
ついうっかりやらかしてしまいました。

前回の回路のどこが問題だったかということを説明するためには、まずは27C256の書き込みプログラムについて説明しなければなりません。
27C256の書き込み方法は、CMOS以前の27256やもっと以前の2764などの書き込み方法が基本になっています。
製品によって多少の差異はあるものの基本的な書き込みのアルゴリズムはほぼ一致しています。

こちらは2764Aのデータシートです。

[出典]Intel Corporation 2764A Datasheet(September 1989)

今から25年以上も前のものです。
そしてこちらはM27C256Bのデータシートです。


[出典]STMicroelectronics M27C256B Datasheet(May 2006)

こちらは10年前です。
時代もメーカーも型番も違います。
書き込みプログラムも細部を見ると異なっているのですが、基本的なアルゴリズムは共通しています。
今回問題になったのは、VERIFYのところでした。

試作品基板を使って、手元にあった複数のメーカーの27C256を使って書き込みテストをしていましたら、メーカー、型番によって時々書き込みエラーが発生するものが出てきました。
最初はたまたま不良品に当たったのかと思いましたが、過去には滅多にそういうケースはありませんでしたので、これはどこかにおかしいところがあるに違いないと思ってどこに原因があるのか追求してみることにしました。
書き込みプログラムと回路図を見比べて、それと上でお見せしたフローチャートとを比較して考えているうちに、どうもとんでもないミスをしていたかもしれないことに気が付きました。

こちらは2764Aの書き込みパルス波形の図です。

[出典]Intel Corporation 2764A Datasheet(September 1989)

図の一番上のADDRESSESのところを見ると”STABLE”と書いてあります。

こちらはM27C256Bの書き込みパルスの図です。

[出典]STMicroelectronics M27C256B Datasheet(May 2006)

こちらもアドレス(A0−A14)は”VALID”になっています。
STABLE(安定した)もVALID(確かな、しっかりした)もPROGRAM〜VERIFYの間はアドレスを変化させてはならない、ということを意味しています。
そこでやっと、「あああああ、ここだあ」と気が付きました。
そこだったのでした。

27C256WRITERは82C55に接続して使います、と書きました。
82C55(8255も同じ)は8080の時代からある最もポピュラーな周辺LSIで、使い方も簡単なのですが、時として悩まされてしまう「欠点」があります。
それはモード設定を行なうと、出力ポートの出力がLになってしまうことです。

前回お見せした回路図を下に再掲します。


この図の左側は26pinフラットケーブルコネクタになっていて、その先はND80Z3.5(ND80ZV)やMYCPU80の増設I/Oボードの82C55に接続するようになっています。
PA0〜PA7はAポート、PB0〜PB7はBポート、PC0〜はCポートの各ビットです。
27C256のD0〜D7はBポートに接続されます。
書き込み時はA〜Cポートは向きを全部出力に設定します。
ところがベリファイのときはBポートは入力に設定し直さなければなりません。
厄介なことに82C55は特定のポートだけを単独に設定することができません。
ベリファイのときはBポートだけを出力から入力に切り換えるだけで、A、Cポートは出力のままなのですが、それでもコマンドとしてはA〜Cの全ポートを再設定することになってしまいます。
するとそのとき(ベリファイをしようとしたとき)にAポートとCポートの出力が全部Lになってしまいます。
少ないポートをやりくりするためにA8〜A14はデータラッチ(74HC373)を使いましたので、その影響からは免れています。
またOE、CE、Vppなどの回路を考えたときには、82C55のこの困った振る舞いを意識していましたので、ここにもちゃんとラッチ(74HC175)をかませました。
しかし。
ぬぁんということか。
A0〜A7については完全に失念しておりました。
というか、まさかアドレスラインのところにSTABLEやVALIDが入っているなどとは思ってもいませんでした。
まあ、はっきりいえば、データシートをいい加減に見ていたために見落としていた、ということです。

で。
下の図のようにA0〜A7にも74HC373をかませたところ、書き込みミスは発生しなくなりました。

うーん。
ここまでするとなると、82C55を使うメリットは半減してしまいますが、それでもせっかくND80Z3.5(ND80ZV)にはもとから備わっているものですから、利用しないよりはましでありましょう。
あ。
MYCPU80の場合にはI/Oボードを増設して使うことになりますから、さらにメリットは薄れてしまいますが、そこはまあ互換性の維持ということでご了承くださいませ。

ところで。
ハードに詳しい方の中には、82C55には双方向モードがあったはず、とお思いの方もいらっしゃるかも。
ええ。
確かにモード2ではAポートだけは双方向ポートとして使うことができます。
しかしその場合にはCポートの大半を特別の用途に使ってしまいますし、その機能からすると、モード2は8ビットパラレル通信をハンドシェイクで使うための機能だと思います。
このモード2は今回の用途にはちょっと使いづらいです。


[出典]OKI Semiconductor MSM82C55 Datasheet

ということで最終的に74HC373を2個配置して作り直した27C256WRITER基板です。


27C256WRITER組立キット[第12回]
2016.2.10upload

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