標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第141回]
●お話は、またまた前回の続きです
前回は、電源ONのときに、WRITEパルスが「確信犯」のように一発、出されてしまう、というお話をしました。
その顛末についてのお話の前に74HC123の説明に入ってしまい、そこで時間切れになってしまいました。
今回はなんとか、くだんのWRITEパルスにお話を戻したいのですが、どうも、今回もまた、お話はそれてしまったままで終わりそうです。
先回は、74HC123の説明に入る前の部分で、PUSHスイッチのチャタリング防止のために設けたRC回路が、「パワーONリセット回路」と同じ働きになっていて、これが74HC123のトリガになっているのではないか、というお話をしました。
実は、そこのところは「イントロ」の部分で、そのあと、74HC123の動作について説明をしたあとで、
「パワーONリセットの回路がA入力だとすると、それでWRITEパルスが出る、というのはおかしい」
というふうに、お話を持っていくつもりだったのですが、眠い目をこすりながら書いているうちに、そんなことはすっかり忘れてしまって、「おやすみなさい。さようなら」になってしまいました。
74HC123のA入力は、HからLになる(↓)ときに、パルスが出力されるはずなので、パワーONのときのように、LからHになる(↑)ときにパルスが出力されるはずはない(…はずなのです)。
それなのに、現実には、そうとしか思えないことがおきていて、それがまた悩ましくて、うんうんうなってしまったのです。
その悩ましい顛末については、のちほどまたゆっくりと説明をいたします。
(ほんとに、正月からこっち、災難続きで、もういやになってしまいます)
●シュミットトリガってなにもの?
とにかく、お話の順序として、前回の説明の続きから、再開することにいたします。
74HC123のデータシートを読んでみると、74HC123のA、B入力は、どちらもシュミットトリガになっていることがわかりました。
それならば、わざわざ74HC04を使ってシュミットトリガ回路を作ったりしなくても、PUSHスイッチからの信号を、74HC123に直接入力してしまってもよい、ことになります。
せっかく74HC04で作ったシュミットトリガ回路ですが、外してしまうことになりそうです(ということを前回書きました)。
でもせっかく「74HC04でつくったシュミットトリガの回路図」を皆様にご披露したことでもありますし、前回、「後ほど説明します」とお約束したことでもありますから、ここで、シュミットトリガについて、説明しておきたいと思います。
●速度の速い素子ではRC回路は要注意
CMOS回路でも、4000番シリーズなどは動作がわりと遅いので、それほどでもないのですが、74HCは74LSと比肩できるほど、応答速度が速いICです。
そういうICに入力としてRC回路(とくにR、Cが大きい場合)などからの信号をつなぐと、ときとして困ったことになります。
上の図は今回のPUSHスイッチ入力回路の一部をもとにして、例示したものです。
R2はゲートの保護用の抵抗です。
図の右側は、コンデンサC1がR1を通して充電されていくときの、ゲートの入力と、出力の信号波形を模式的に示したものです。
R1とC1がともに大きいと、ゲートに入力される波形が上昇するときの勾配はゆっくりしたものになります。
すると、こんなことになってしまいます。
入力信号がスレッショルド電圧付近をゆっくりと横切るため、ノイズなどの影響で出力にチャタリングのような波形が現れてしまいます。また、もっとこわいのは、スレッショルド近くでは擬似的に入力オープンに近い状況になるとも考えられるため、Vcc側とGND側の出力トランジスタが両方ともONになって、過電流が流れてしまう可能性も出てきます。
シュミットトリガ回路はそのようなことを防ぐための回路です。
ゲート自体がシュミットトリガになっているICもあります。
代表的なものは74HC14です。
74HC14は74HC04の各ゲートをシュミットトリガゲートにしたものです。
●74HC14のデータシート(部分)です
[出典]Fairchild Semiconductor社MM74HC14datasheet
●シュミットトリガの動作の説明です
はい。これがシュミットトリガですよ。
っていきなり74HC14を見せられて、これを使ってくださいねー、で終わってしまったら、なんだかわかったような、でもやっぱり何もわからなかったような気になってしまいます。
そこで74HC04を使った回路を利用して、その動作を説明してみたいと思います。
74HC04を使ってシュミットトリガ回路を作るには、図のようにインバータを2個つなぎます。入力と出力を同相にして、出力から入力にゆるい正帰還(ポジティブフィードバック)をかけるためです。
R1は入力保護も兼ねていますが、R2と組み合わせて、ヒステリシスの度合いを決定するのにも使われています。
R1とR2は適当な値でよいのですが、R1:R2=1:5〜1:10くらいが適当だと思います。
さて動作の説明です。
最初はコンデンサが放電してしまって、A点が0Vというところから、開始することにします。
このとき、B点もC点も0Vなので、なんの変化もおきません。
そこからスタートします。
コンデンサはVccから抵抗を通じてゆっくりと充電されていきます。
A点が74HC04のスレッショルド電圧である1/2Vccつまり+2.5Vまで上昇したとき、B点、C点の電圧はどうなるでしょうか。
もしもR2がなかったとすれば、A点=B点ですから、B点もスレッショルド電圧となって、出力Cは+5Vになります。しかしすでに説明したように、B点がゆるやかに上昇しているとすると、B点が長くスレッショルド近くの電圧にとどまるため、出力Cは不安定になります。
それに対して、図の回路ではR2が利いてきます。
A点が+2.5Vになっても、その瞬間には、C点はまだ0Vですから、そのときのB点は+2.5V〜0Vの間を、R1とR2で分圧した値になります。
R1:R2=1:10ですから、B点の電圧は、2.5×10/11≒2.27Vとなって、まだスレッショルド電圧に達しませんから、出力Cは0Vのまま安定しています。
では、いったいA点が何Vになったら、C点の出力が反転するのか、といいますと、同じようにして、A点をA、B点を2.5Vとして、抵抗分圧の比をあてはめて計算すればよいのです。
この場合には、(A−2.5):2.5=1:10ということですから(小学校で習いましたよね)、
10A−25=2.5 つまりA=27.5/10なので、A点が2.75Vにまで上昇したときに、やっとB点がスレッショルド電圧に達して、C点の出力が反転して+5Vになるのです。
うーん。まだ、なんだか、この回路の意味がよくわからないなあ。
なにか手品みたいに、ごまかされてしまったみたいだけれど、それでもやっぱりB点の電圧がゆっくり上昇していくことに変わりはないのでしょ?
だったら、またほんの少しだけノイズなどの影響でB点の電圧が下がったら、C点の出力がふたたび反転して0Vになってしまうんじゃないの?
ところが、そうではないのです。
そのようにして、ひとたび、C点の出力が反転して+5Vになった直後に、B点の電圧はどうなるでしょうか?
A点が+2.75VでC点が+5Vですから、B点の電圧は、これも小学校で習いましたよね(抵抗と電圧のことではありません。比例の法則のことです)。
(5−2.75)×1/11+2.75≒2.95V
ほんと。手品みたいですね。ほんの一瞬前には+2.5VだったB点の電圧は、いきなり約0.5V上昇して+3V近くになってしまいました。
これなら少しぐらいノイズが乗ったって、出力が反転する恐れはもうありません。
それでは逆に、A点の電圧が何Vまで下がったら、C点の出力が反転して0Vになるのでしょうか?
これもさきほどと同じ計算で求められます。
A点がA、B点が2.5Vですが、今度はC点が5Vですから(A点はB点よりも低くなります)、
(2.5−A):(5−2.5)=1:10になります。
これを変形すると、
25−10A=2.5ですから
A=22.5/10つまりA=2.25Vということになります。
以上の説明のように、B点の入力が、LからHへと上昇していく場合には、その入力信号源A点の電圧が+2.75Vまで上昇して、やっとB点がスレッショルド電圧を超えることになりますが、逆に、入力信号がHからLへと下降する場合には、A点が+2.25Vまで低下したときにやっとB点がスレッショルド電圧を下回ります。
このようにある値が上昇するときと、下降するときで、トリガとなる閾値が異なるようにすることを、ヒステリシス(をつける)といいます。
クーラーやファンヒーターの温度調節などもヒステリシスを利かせています(そうしておかないと、設定温度近辺でやたらON/OFFを繰り返すことになってしまいます)。
最後に、念のために、先ほどと同じように、A点が+2.25Vまで低下して、B点がやっとスレッショルド電圧になって、出力Cが0Vになった直後に、B点がどうなるかを計算で求めてみることにします。
A点が+2.25VでC点が0Vですから、B点は、一番はじめの計算と同じで、2.25×10/11≒2.05Vになってしまいます。
シュミットトリガ回路はこのように、入力信号が危険地帯であるスレッショルド近くをゆるやかに横切るのを防ぎ、入力電圧値を瞬間的に+2.05Vか+2.95V(この説明での抵抗比の場合の数値です)へと強制的に変更してしまうという、なんともかしこい回路なのです。
シュミットトリガ回路は74HCなどのデジタル回路では、主としてスレッショルド近辺での誤動作を防止する目的で使われますが、トランジスタやOPアンプなどのアナログ回路では、立ち上がり、立ち下がりがなまってしまった波形をシャープな立ち上がり、立ち下がりの波形に変える、「波形整形」の目的で使われるようです。
●シュミットトリガについて、あともう少し
シュミットトリガゲートの例として、74HC14を紹介しました。
その前に、74HC123の入力はシュミットトリガであるというお話もしました。
そのほかにも、たとえば「つくるCPU」の回路で使っている、8ビットのバスバッファ、74HC244や74HC245もシュミットトリガ入力なんですよ、ということを書こうとしました。
ところが、その説明の参考とするために、74HC244や74HC245のデータシートを調べてみると、どうも様子が変なのです。
どこにも、シュミットトリガについての記載がありません。
Texas Instruments社のデータシートにも、Toshibaのデータシートにも、はっきりしたことは書かれていないようです。
実は筆者は普段はCQ出版社の「74シリーズ規格表」というのを、ずっと愛用しています。ずいぶん古いもので、今確かめてみたら、96年版でした(!)。
主に74LSについての規格表なのですが、74HCについても記載されているので、それをいつも参考にしていたのです。
で、74HC244と74HC245について。
その規格表では、メインの説明としては、74LS244、74LS245としての規格なのですが、ともに入力はシュミットトリガということになっています。
それが、Webでデータシートを調べてみると、どこかおかしい。
これは、もう少しはっきり調べてみる必要があるようです。
やっとFairchild Semiconductor社のデータシートに明記されていることがわかりました。
まずは、74LS244と74LS245のデータシートからお見せします。
●74LS244のデータシート(部分)です
[出典]Fairchild Semiconductor社DM74LS244datasheet
ちょっと図が見にくいようですけれど、Connection Diagramを見ると、ゲートがシュミットトリガになっていることがわかります。
●74LS245のデータシート(部分)です
[出典]Fairchild Semiconductor社DM74LS245datasheet
74LS245もシュミットトリガ入力です。
そこで、今度は74HC244と74HC245のデータシートです。
●74HC244のデータシート(部分)です
[出典]Fairchild Semiconductor社MM74HC244datasheet(赤線は筆者)
赤線を引いた部分を見ると、「シュミットトリガ入力ではない」とはっきり書いてあります。
あれまあ。シュミットトリガじゃない!
…74LS244とは違っているんだ。
これは、全く、知りませんでした。
●74HC245のデータシート(部分)です
[出典]Fairchild Semiconductor社MM74HC245datasheet(赤線は筆者)
こちらも、「シュミットトリガ入力ではない」と書いてあります(赤線の部分)。
うーん。てっきり、74HCは74LSと同じだと思ってしまっていましたが、このように、違っているものもあるんですね。
今後は、気をつけるようにしなければ、いけませんね。
と。今回もまた、しっかりと横道にそれてしまいました。
メモリバックアップの話から、
電源ON時に勝手にWRITE信号が出てしまうことがわかって、しかもその原因と考えられるところが、どうもいまひとつ辻褄があっていないようだ、
というお話になって、さて、それがどうなったのか。
そのお話にもっていかなければならないのですけれど、今回も軌道修正できず、に終わってしまいました。
そのあたりのお話につきましては、また次回にいたしたいと思います。
2009.1.14upload
前へ
次へ
ホームページトップへ戻る