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

復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります

[第276回]


●アドレスセット回路の動作波形

前回はE−80(仮称)ミニコンのフロントパネルスイッチ操作について、Address set & Readの動作を説明しました。
時間がなかったものですから文章だけで説明しましたのでわかりにくかったかもしれません。
そこで今回は前回説明しました、パネルスイッチを使ってアドレスを設定する回路動作をロジアナを使って記録いたしました。
その記録した波形をお見せしながら再度説明をいたします。
なおここで使いましたロジアナにつきましては「TTLだけでCPUをつくろう[第374回]」でご紹介いたしました。
超ローコストですぐれもののロジアナ(カメレオンUSB+ロジアナキット)です。

説明に入ります前に、ロジアナのプローブを接続したラインを、[第274回]でお見せした回路図上にプロットして示します。


今回は00〜25を使いました。
回路図上の信号としては00〜07と24、25の10ラインです。
回路図にはありませんがデータバスD0〜D7に08〜15を、またアドレスバスの下位A0〜A7には16〜23を接続しました。
回路の動作が確認できればよいので、今回はA8〜A15にはプローブは接続しませんでした。

これが測定した結果です。

アドレスセット+メモリリードの操作はREADスイッチをONにすることで行われます。
READスイッチは中点復帰式(momentaly。押している間だけ接点が閉じ、離すと元に戻る)のスイッチです。
そのスイッチ信号によって74HC123から出力されたワンショットパルスによって回路動作がスタートします。
74HC123のQ出力にロジアナのプローブ00を接続し、その立ち上がりを測定開始トリガとしました。
READスイッチをONにする前に、STOPスイッチをONにしてCPUをM1のタイミング(命令OPコード読み込み)でウェイトさせてあります。
そのときのアドレス表示は××0CHで、データバスにはメモリのそのアドレスの値21Hが出力されています。

さて、READスイッチをONにすると74HC123のpin13からHパルスが出力されます。
これがプローブ(00)の信号です。
この信号(正確にはpin4からの出力信号)はメインボードに送られて、メモリアクセスの禁止信号になります。
そうしてメモリからの出力を禁止するとともに、同時に(05)をアクティブにすることによってデータバスにコードC3Hを出力します。
データバスの信号がメモリの値からC3に変わる様子がはっきりとわかります。
このC3がデータバスに乗るまで十分な時間を稼ぐために遅延回路が使ってあります。
この遅延回路はIMSAI8080にはありませんが、必要と判断して入れてあります。
その遅延によって、ゆっくりとWAIT信号(01)がOFFになります(8600nsあたりです)。
するとCPUが動き出し、データバスのコードC3Hを読み取ってM1が終了します。
MREQ(24)の@のところです。
MREQ(24)とM1(25)がHになります。

CPUはコードC3Hを解読して、その結果、次にデータバスからジャンプ先アドレスの下位8ビットを読み込みます(A)。
このとき回路では2段のFF(74HC73)がMREQ+RD信号をクロック入力(02)にして、その出力を変化させます。
最初のMREQ+RDによって(03)がHになります。
(03)と(04)の出力によって(05)(06)(07)がコントロールされます。
なおMREQ(24)はこれよりも前にも短い期間出力されています。
しかしこれはRDを伴っていませんからダイナミックメモリのためのリフレッシュサイクルだと思います(この期間だけアドレスが変化しています)。
アドレスバスにはメモリの次のアドレスがCPUから出力されていますが、これは回路によって無視され、データバスには(06)によって、スイッチの下位データ、ここではABHが乗せられ、CPUに読み込まれます。
同様にして次のメモリ読み込みサイクル(B)で(07)によってスイッチの上位データ、ここでは89Hがデータバスに乗せられ、CPUに読み込まれます。

その結果次のサイクル(C)でM1信号が出力され、アドレスバスにはジャンプ先アドレスが出力されます(ここでは下位のABHだけが見えています)。
それと同時にWAIT(01)がアクティブ(L)になって再びCPUが停止します。

データバスには…、あれなにも出力されていませんねえ。

あ。
うっかりしていました。
まだメモリからの出力が禁止されたままでした。
それでデータバスはFFHになっています。
74HC123からの出力パルス(00)はスイッチのチャタリング回避と、ジャンプ命令の実行動作が確実に完了するまでの時間を確保するために、数msecの間Hになっています(同時にメモリへのアクセスを禁止しています)。
それを忘れていました。

むむ。
サンプリングタイム50MHzでは、(00)が終わる前に測定が終了してしまいました。
仕方がありませんから、もう一度10MHzでやり直しました。

(00)がOFFになるとデータバスにメモリからのデータが出力されました(やれやれ)。

そのときのパネルの様子です。

スイッチの設定の通りにLEDが点灯しています。

ワンボードマイコンでCP/Mを![第276回]
2012.12.27upload
2021.12.28回路図を修正

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