標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第140回]
●RAMのバックアップデータが書き換えられてしまう?
前回と同様に、今回も、お話は少し、前にさかのぼります。
前回のとんでもないトラブルにもめげず、なんとかスイッチ類を基板に実装し、メモリテストに取りかかりました。
結果は順調です。
データWRITE、OKです。
データREAD、OKです。
いよいよ、乾電池を取りつけて、バッテリバックアップのテストです。
アドレスを0000番地から順に何バイトか、トグルスイッチでセットしながら、データを書き込んでいきます。
続いて、書き込んだデータを読み出して、ちゃんと書き込まれていることを確認。OK。
電源OFF。
そして、一呼吸おいてから、電源ON。
アドレススイッチをパチパチやりながら、メモリの内容をチェックします。
OK。OK。全部OK。
うん。うん。今回はなかなかいい調子だぞ。
うん…!?
あれっ?
1バイトだけ、データが消えている?
またしても、なんとなく、いやーな、予感が…。
再び、悪夢か…(正月早々、やってられないよ。まったく)。
落ち着いて、繰り返しテストをしてみると、アドレススイッチをONにして、データを書き込むときの状態のまま、電源をON/OFFすると、RAMのそのアドレスのデータが、データスイッチの設定の通りに書き換えられてしまうことがわかりました。
そのほかのアドレスのデータは変化していません。
どうも、電源ON/OFFのときに、WRITE信号が勝手に出てしまうようです。
さらに、テストしてみると、電源OFFではなくて、電源ONのときに、WRITEパルスが出ているらしいことがわかりました。
オシロで確認してみると。
やっぱり出ていました。
上(CH1)がVccで、下(CH2)がmemoryWRITE信号です。
少し見づらいですけれど、電源ONから20msくらい経ったあたりで、一発、WRITE信号が出ています。
そのあたりを、もう少し拡大したレンジで見てみました。
たまたま誤動作などで出たのではなくて、これはもう、はっきりとしたパルスです(いうなれば、確信犯です。こりゃワルイやっちゃ)。
あらためて、回路図をよく見てみました。
上側がワンステップパルス用で下側がメモリWRITE用の回路です。
メモリWRITEについては、ワンショットにしなければならないというものではないのですが、どうせワンステップ回路に74HC123の半分を使うのですから、メモリWRITEも同じ回路にしておこう、と考えたのです。
適当なパルス幅のワンパルスがほしいようなときには、やっぱり74HC123が手軽に使えて便利です。
しかし、この回路のどこかに、問題があるはずです。
回路図をよーくみていたら…。
気がつきました。
なんのことはありません。
これはパワーONリセットと同じ回路じゃありませんか。
そういうつもりではなかったのですよ。
PUSHスイッチと並列に入っている電解コンデンサはチャタリング防止のためで、その後ろの74HC04ゲートはシュミットトリガ回路です(シュミットトリガ回路については後述します)。
それはそれでよいはずなのですが、電源ONのときには、10KΩを通して2.2μのコンデンサがVccによって充電されるまでの間、74HC123のA入力(pin9)はLレベルになっています。2.2μのコンデンサが充電されてきて、74HC04のpin13の電位が1/2Vccを超えると、74HC123のA入力(pin9)がHになります。そのとき、WRITEパルスが出力されてしまいます。
●74HC123のデータシートです
参考までに。74HC123のデータシート(部分)です。
[出典]National Semiconductor社MM74HC123Adatasheet(赤線、赤四角は筆者)
参考までに、ということでデータシートをUPしたのですが、今あらためて読んでみますと、「あれま、そうだったの?」なんてことが書いてあります。
ついでですから、また脱線してしまいますが、ちょいと道草をしてしまいましょう。
まずは、出力パルス幅なのですが、これはもう、単純明快(General Descriptionの最初の下線部です。is simplyと書いてあります)。
PW=Rext×Cext
単位はPWが秒。RはΩ。CはF(ファラド)です。
この式は、その下のFeaturesでも、わざわざSimple Pulse Width Formulaとして再度出てきています(T=RC)。
今回、WRITEパルスには、R=4.7KΩ、C=1000pF(0.001μF)を使いましたから、出力されるパルス幅は、
T=4700×0.001=4.7μS
になります。
抵抗の単位はΩ(またはKΩ)ですが、コンデンサではFなどふつうは使いません。μFかpFです。
コンデンサの単位はちょいと変わっています。
FとμFとpFの間に、mFとnFがあるはずなのですが、普通は使わないようです(筆者はその単位で表記したコンデンサは見たことがありません)。
普通は1mFのかわりに1000μFを、1nFのかわりに1000pF(または0.001μF)を使います。
上の式の単位は、コンデンサの容量をFではなくてμFで示すと、結果の時間の単位が秒ではなくて、μ秒で得られるので、計算が簡便になります。
●容量の大きなコンデンサを使うときは、注意を
アンダーラインはつけませんでしたが、Featuresのところに、出力パルス幅として、Wide Pulse Range:400ns〜∞(すごい!)と書いてあります。
というからには、そうとうに大きなコンデンサでもつけられる(はずですけれど…。ちょいと、こわいなぁ)。
でも、当然のことながら、なにもしなくてもよい、ということではなさそうです。
そのひとつが、さらに下の図のところにある注意書きです(赤の四角で囲った部分)。
字が小さくて読みにくいですが、下のように書いてあります。
Pin6 and Pin14 must be hard−wired to GND.
あれ、そうなの。
念のため、テスターで、pin6、pin14、pin8の間の導通を測ってみると、ICの内部でつながっているようです。
小さな容量のコンデンサなら多分問題は無いと思いますが、容量の大きなコンデンサをつなぐと、充電や放電のたびに、pin6、pin14とpin8(GND)の間に、ICの内部で大きな電流が流れることになって、ICにダメージを与える危険がありますから、このように(pin6、pin14はGNDに接続)しなさいよ、ということだと思います。
このほかにも注意しなければならないことがあるのですが、それについてはもう少し後の方で書くことにします。
●74HC123の動作
肝心の74HC123の動作について。
Truth Table(真理表)を見ると、これはもう、単純です。
Clear入力も使えますが、Clearは、普通はVccに接続してHにしておきます。
トリガとしてA入力とB入力のいずれかを使います。
A入力を使うときは、B入力はVccに接続してHにしておきます。A入力がHからLになるとき(↓)にQからHパルスが、Q_からLパルスが出力されます。
B入力を使うときは、A入力はGNDに接続しておきます。B入力がLからHになるとき(↑)にQからHパルスが、Q_からLパルスが出力されます。
●74HC123の入力はシュミットトリガでした
こうやって、説明を書くためにFeaturesのところをもう少し読んでみたら、A入力とB入力はシュミットトリガ(Schmitt Trigger)である、と書いてあるのに気がつきました。
また、シュミットトリガが出てきました。
シュミットトリガって、何?と問いたい方もいらっしゃるかと思いますが、それについては、また後ほど。
うーん。気がつかなかった。そうなの?
なんだ、そうなら、74HC04を使ってわざわざシュミットトリガ回路を作る必要などなかったんだ。
じゃあ、その部分は外してしまえるはず(ICが1個減る!)。
ところで(また、余談の余談になってしまいますが)、Schmittとは、これまた変わったつづりです。英語らしからぬ、このつづりは…。
そう言えば、その昔、ナチスドイツの名戦闘機、あれも確か、メッサーシュミットだった…はず。
さっそくWebで検索してみますと。
メッサーシュミットも同じつづりでした。
ともに人名に由来しているようです。
どんどんテーマから離れていってしまいますから、このあたりで止めますけれど、興味がおありのお方は、Webで検索してみてくださいませ。
●ふたたびシュミットトリガ入力です
軌道を修正して、お話をもとに戻します。
AもBもシュミットトリガだと書いてあっても(Featuresの一番下の赤線部分)、その下のConnection Diagramの図にはシュミットトリガ入力を示す記号などついていないじゃないの。本当かなぁ?(筆者は単細胞のわりには、へんなところで疑り深い性格です)
もう少しさぐってみました。
74HC123データシートの後ろの方のページで、こんな図をみつけました。
[出典]National Semiconductor社MM74HC123Adatasheet
おう。おう。確かに。
ちょいと小さいですけれど、A入力もB入力もシュミットトリガになっています。
こんな記号です。
●他のメーカーのデータシート
もう少し詳しく、と思って、別のメーカーのデータシートも見てみました。
[出典](株)東芝TC74HC123APdatasheet(赤線、赤四角は筆者)
われらが日本、「東芝」のデータシートです。
これはまた、実に懇切丁寧です。
日本人のこまやかな性格がよく表れていて、うれしくなってしまいますね。
シュミットトリガ入力については、上昇、下降がゆっくりとした入力(tr=tf=1秒!)でもよい、と書いてあります。
コンデンサ容量については、なんと無制限(No Limit)、ですと!(ホントにすごい)。
抵抗値については、Vccが3V以上の場合には、1KΩ以上となっています。
74HC123は1個のICに2回路はいっています。
なんともご親切なことに、そのうちの片方だけしか使わないときの、もう片方の端子の処理についてまで、書いてあります(赤四角で囲った部分)。
もう少し「東芝」のデータシートを見てみましょう。
●大容量のコンデンサ接続についての更なる注意
[出典](株)東芝TC74HC123APdatasheet
この図を見ますと、文章としては特に指示はしてありませんが、pin14、pin6はGNDに接続している図になっています。
コンデンサ容量が大きくて、そして電源OFFのときにVccが低下する速度が速い場合には、図のようにクランプダイオードをつけることが望ましい、と書いてあります。さもないと、コンデンサが急激に放電するために、IC内のクランプダイオードしか経路がない(Rxでは追いつかない)ので、ICにダメージが加わったり、ラッチアップの可能性があります。
電源容量が大きくて、電源OFFの際の電圧降下速度がゆっくりの場合には、IC内部を流れる放電電流は自動的に制限されるので、ダイオードはなくてもよい、と書かれていますが、まあ、「ころばぬ先の杖」と言いますから、電解コンデンサをつけるような場合には、クランプダイオードをつけておくようにしたほうがいいでしょうね。
今回は、74HC123の説明をしているうちに、時間がなくなってしまいました。
WRITEパルスのお話が中途半端になってしまいましたが、この続きはまた次回にいたしたいと思います。
2009.1.12upload
前へ
次へ
ホームページトップへ戻る