復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第292回]
●ロジアナ波形への疑問
注意深い読者でしたならば、あるいはこれまでにお見せしましたロジアナ波形におかしなところがあることにお気付きかもしれません。
ええ。
かくいう私もロジアナの波形をもとにして説明を書いておりますときに、「あれえ、この波形はおかしいんじゃないの?」ということに気が付きました。
しかしその時点でそれを追求し始めますとまたしても進行がストップしてしまいます。
そこでその件につきましては、作業が一段落してからゆっくり確認しよう、ということでしばらく棚上げにしてきました。
今もまだ記事としては途中の段階なのですが、実際の検証作業としましてはやっと一段落つきました。
ですのでこの機会にその問題について少し落ち着いて考察してみました。
下の波形は[第288回]でお見せしました。
当初の回路のままでは、Z80で追加された命令がもとで誤動作が発生する可能性があります。
そこでそれを回避するためにSTOP回路に変更を加えました([第287回])。
下の波形は変更後のSTOP回路が正しく動作しているところを観測したロジアナ波形です。
ここで私はプローブ01のAの波形がおかしいことに気が付きました。
皆様はお気付きになられましたでしょうか?
このAについては、[第288回]では「データバスの値がEDHなのでその期間はHになります」というように説明をいたしました。
しかし注意深くこのロジアナ波形を見てみますと、その説明では納得できない点があることに気がつきます。
その下のプローブ08〜15はデータバスD0〜D7の波形なのですが、その波形を見ますと、実際にデータバスの値がEDHであるのは、約300ns近辺までです。
しかし「データバスの値がEDHだからHになっている」というプローブ01の波形は、それよりも100nsあとまでHを維持しています。
これはおかしい、と思いました。
データバスの値がEDHでなくなったあとはFFHになっています。
ひょっとすると、このときに説明しました回路がFFHでもHになるのではないか、という疑いが出てきました。
ことのついでに、その回路についても説明を補足しておくことにいたします。
下の図は[第287回]の回路図のうち、CB、DD、ED、FDの各コードを検出する部分のみを取り出したものです。
この回路はその後にZ8S180にSTという信号があることがわかったため、E−80(仮称)ミニコンでは用済みになってしまいました。
ですので、この回路の動作については今更あれこれ詮索する必要もないとも言えるのでありますが、しかし、とりあえず今は使わないことにした回路でありましても、おかしいぞと不審に思うところが出てきましたら、それをそのままにしておくことは、あるいは将来に禍根を残すことになるやもしれません。
あ。
まあ、それほど大げさに言うほどのものではありませんでしょうけれど、とにかく、納得できないことに出会いましたら、追求して疑問をクリアしておくことが肝要と思います。
説明を続けます。
回路の上半分はCBを検出する部分で、下半分がDD、ED、FDを検出する部分です。
回路の理解を助けるために、各コードを2進数で表記してみます。
左は16進数で、右はその2進数表現です。
CB 11001011
DD 11011101
ED 11101101
FD 11111101
ビット0、3、6、7は全部1になっています。
それを検出しているのが左上の回路です。
この出力は、CB検出回路へもDD、ED、FDを検出する回路へも伝えられています。
CBはD1=1、D2=0ですから、74HC04と74HC08でそれを検出しています。
またCBはD4もD5も0です。
その場合のみ左下のOR回路の出力は0になり、それは反転して1としてCB検出回路に伝えられています。
一方DD、ED、FDではD1=0、D2=1ですから、74HC04と74HC08でそれを検出しています。
そしてDD、ED、FDではD4、D5は少なくともいずれか一方は1ですからOR回路の出力がそのまま後段に送られます。
そこで先ほどの疑問に戻ります。
上の回路を見る限り、FFのときに(A)がHになることは考えられません。
それなのに。
D0〜D7がEDHではなくなってFFHになってしまったあとでも(A)がHになっているのは、一体なぜなのでしょうか?
おかしいことはまだあります。
MREQとM1がLになっている期間は−100ns〜100nsあたりの200nsで、アドレスバスA0〜A7(プローブ16〜23)の出力もその期間のみ39Hになっていて、それから後ろはリフレッシュアドレスに変わっています。
このときはメモリは(DRAMではないので)アクセスするような回路にはなっていません。
ということはMREQとM1がともにLである−100ns〜100nsよりも後ろは、メモリからはなにも出力されていないはず、ということになります。
しかし、それにしてはデータバスにEDHが出力されている期間が異常に長いように思われます(そしてAの期間はそれよりもさらに長いのです)。
ここまで考えてきて、その理由の一部については、少しはわかったような気がしてきました(でもその時点では、まだなんとなくすっきりしないものが残ったのですけれど)。
データバスは4.7KΩの抵抗でプルアップされています。
実際にはデータバスの2箇所でプルアップしていますから、2.3KΩでプルアップしていることになります。
メモリからのデータ出力がなくなると、もともとHだったビットはそのままHを維持しますが、それまでLだったビットはプルアップ抵抗によって、Hになります。
この場合LからHになる速度は結構ゆっくりしています。
オープンコレクタ回路の出力がLからHになるときと同じです。
そのような信号をオシロで観測すると弧を描いてゆっくりと上昇する様子が見られます。
このためその上昇する信号がゲートの閾値(スレッショルド。74HCの場合には1/2Vdd=2.5V)を越えて、実際にHと認識されるまでにはある程度の時間がかかります。
ロジアナの波形でD1とD4がLからHになるのにおよそ200nsの遅れがあるのは、おそらくそのためだと思われます。
しかしそこはまあそういうことだと納得したとしましても、それよりもさらに100ns近くも遅れて立ち下がるプローブ01のAはいったい何なのだ、という疑問は依然として残ります。
こうなりますと、どうやら上の回路のどこかに、その謎を解く鍵が隠されているように思えます。
というよりも、そのようにしか思えません。
どこかというよりも、とにかくおかしいところはすでに特定できております。
おかしいのはD1とD4がLからHになるところです。
上の回路のロジックを考えますと、たとえばD1の場合、クサいのはその入口にあります74HC04です。
そこで、74HC04の入口と出口、pin11とpin10の波形をロジアナで測定してみました。
カメレオンUSB+ロジアナのプローブ00を74HC04のpin11に、そしてpin10にプローブ01を接続しました。
ただそれだけでは分かりにくいので、プローブ02にMREQを、そしてプローブ03にM1を接続しました。
そのようにして、信号を測定してみましたところ、意外な結果になりました。
なんでも実際にやってみるものなのですよねえ。
これがそのようにして測定をおこなったロジアナ波形です。
プローブ00が74HC04のpin11、プローブ01がpin10の波形です。
3800nsと4800nsのあたりに、プローブ00(74HC04pin11)では細かいパルスが観測されています。
しかし74HC04の出力であるpin10(プローブ01)はそれには全く反応していません。
それどころか、pin11の入力信号がしっかりとHになったあとも、74HC04の出力側pin10はHのままになっています。
なんとパルスの出始めから見れば、たっぷり200ns以上もの間、74HC04の出力は入力には無関係であるかのごとくH出力を継続しているのです。
なんじゃこりゃあ???
ただのHCMOSゲート、インバータが1段だけでこの結果は、ありえません。
うそっ。
これは、まさか74HC04が壊れているう?
そうとしか思えません。
しかし。
一年生じゃありませんものねえ。
駆け出しの頃はときたまICやトランジスタから焦げ臭いにおいや煙が立ち上ったり、突然パチンとはじける音がして、壊してしまったこともありましたが、それは遠い昔のお話です。
今頃になって、ICを壊してしまうなんて、まだまだそれほどぼけてはおらぬはず。
むむ。
しからば不良品か?
うむ。それなら可能性としてはゼロではない。
でも、ことのついでに申し上げますと、過去30年以上の私の経験からしますと、74HCなどの不良は、(少なくとも、日立、東芝、TIなどのブランドにおきましては)ほとんど記憶にありません。
非常に信頼性は高いと思います。
するとこの信じられない波形の謎は一体全体何が原因なのか?
このありえへん波形の謎は、74HC04の不良でも、回路のミスや不具合によるものでもありませんでした。
わかってしまえばああそういうことかと、あっさり納得できてしまう、ごく当たり前のことだったのでありますが。
さて。
皆様には、それが一体どういうことだったのか、お分かりになりますでしょうか?
この一見ありえないように思える波形の謎は、それがICの不良でも、回路の不具合(ゲートの出力端子が他の出力とショートしている等)でもないとしましたら、残る可能性は一体何なのでありましょうか?
おそらく聡明なる読者諸賢におかれましては、それしかないという唯一の結論にすでに到達されてみえるものと拝察いたします。
ええ。
かくいう私めも、それしかないと推論いたしました。
でも。
それを実証いたしますのは、なかなか手間なことでありました。
なにしろ高速で変化するデータバスの波形をオシロで捉えて、それを写真に撮るといいますのは、なかなかに難しゅうございます。
あっ。
つい、ヒントを申し上げてしまいました。
実は。
この問題を解く鍵は、今回の文章の中にもしっかりと書いてあります。
次回、解決編です。
乞う。ご期待。
ワンボードマイコンでCP/Mを![第292回]
2013.1.13upload
前へ
次へ
ホームページトップへ戻る