ワンボードマイコンをつくろう!(パソコンの原点はここから始まった)
TK80ソフトコンパチブル!8080、Z80マシン語からBASICまでこれ1台でこなせます
当記事は2009年11月から「TTLでCPUをつくろう!」というタイトルの もとにほとんど毎日連載をしてきたものを再編集したものです。 2011.6.29
前へ
次へ
目次へ戻る
ホームページトップへ戻る
☆特注品Z80ボードND80ZHの機能説明
TK80コンパチブルで、その上中日電工オリジナルのND80Zとしても動作するというZ80CPUのワンボードマイコンを企画し、その開発準備をしていたところに、ND80Zの特注品の開発依頼をいただきました。製品名はND80ZHです。
新企画のZ80ボード(ND80ZV)はこのあとで製作することになりますが、基本的な機能はND80ZHと共通していますから、まずはND80ZHの機能を説明します。

[第22回]

[第6回]で、ステップ回路の説明に入りかけたところで、INT信号とNMI信号の説明に行って、そこで終わってしまって、その続きについて、書いてありませんでした。
そういえば、NMIについても、まだもう少し書くことがありました。
あちこちずいぶんやりっぱなしで、きてしまっています。

●ふたたびステップ回路の説明です

今回も引き続いて、Z80版TK80ボード(ND80ZH)のお話です。
お話の流れとしては[第6回]の続き、ということになります。

TK80のステップ動作はINT信号入力による割込みを利用していました。
TK80は、INT信号と同時にデータバスに乗せられるRST7命令(16進コードはFF)によって、0038番地からの割込み処理プログラムが実行されることで、ステップ動作の処理をおこなっていました。
その仕組みについてはCPUをつくろう![第241回]あたりで説明をしています(ここの説明はTK80のステップ動作というよりも、MYCPU80の「TK80回路」のステップ動作の説明、ということなのですけれど)。

8080は、INT信号を受け付けると、その直後にデータバスから8ビットの命令コード(RST命令)を読み込みます。
そのRST命令によって、0000〜0038に、8バイトおきに配置された割込み処理ルーチンを実行します。

Z80も8080のINT割込み処理と全く同じ動作をさせることができます。
ただし、8080のINT信号はHアクティブでしたが、Z80のINT信号入力はLアクティブであることだけが異なっています。

さらに、Z80では、この8080互換の割込み処理のほかに、2つの異なる割り込み機能を備えています(NMI割り込みのことではありません)。
ですがそれについての説明をはじめると、また話が横にそれていってしまいます。
ですから、Z80の、8080互換の割込み以外の割込みについてはもう少し後で説明することにいたします。

Z80は8080の全ての命令をそのまま実行できます。
またTK80のステップ動作で使われている、RST7割込みも、Z80は同じように実行することができます。
それなら、ステップ動作の回路も、TK80と同じ回路にすればよいか、といいますと、そういうわけにはいかないのです。

RST7割込みの動作や、ステップ動作の仕組みはTK80と同じですけれど、8080とZ80とでは、そのステップ動作で使う信号が異なっているために、TK80と同じ回路は使うことができません。
そのことを説明するために、まずMYCPU80でのTK80回路のステップ動作について復習をしてみましょう。

MYCPU80のTK80回路のステップ動作の説明はCPUをつくろう![第248回]にあります。
回路図とタイミングチャートを使って説明をしています。

RST7命令の割込み動作をさせるためには、EI命令を実行して割込みを受付可能にしておかなければなりません。
このEI命令の実行と、それによって実際に割込みが受付可能になるタイミングとの間には、1命令のタイミングラグがとられています。

割込みが受け付けられると、自動的に割込み禁止状態になってしまうため、割込み処理が終わって、次の割込みを受付可能にするためには、割込み処理ルーチンの終わりのところで、EI命令を実行することになります。
通常の割込み処理ルーチンはサブルーチンになっているはずなので、割込み処理ルーチンの最後の命令はRET命令になります。
するとEI命令は、そのRET命令の前に置くことになります。

ところで、もしEI命令の実行直後に割込みが受付可能にされたとすると、そのときまでにINT信号がすでに入力されていた場合、割込み処理プログラムの最後のRET命令の実行前に、次の割込みが受け付けられてしまいます。
これでは多重割込みが発生してしまいますから、EI命令の実行によって、割込みが受付可能になるのは、そのEI命令の次の命令(つまりRET命令)が実行されたあと、になるようにCPU内部の回路が組まれているのです。

ながながと割込み許可のタイミングについて説明をしたのにはわけがあります。
じつは、TK80回路のステップ動作の仕組みは、その割込み許可のタイミングをもう1命令延長することによって実現しているからです。

ステップ動作の処理プログラム(じつはRST7割込みプログラム)の終わりに、EI命令が実行されて、最後のRET命令で、ユーザプログラムに戻った直後に、次の割込みが受け付けられるのではなくて、そこでユーザープログラムが1命令実行されたあとに、次の割込みが受け付けられるようにできれば、ステップ動作をさせることができます。

CPUをつくろう![第248回]で説明をしたMYCPU80のTK80回路のステップ動作は、割込み許可状態を保持しているフリップフロップの出力信号と、OPコードフェッチ信号をもとにフリップフロップを使って、さらにもう1命令分の遅延回路を構成しています。

しかしこの仕組みをそのままZ80CPU回路で使うわけにはいきません。
なぜなら、CPUをつくろう![第248回]で説明をした、MYCPU80のTK80回路のステップ回路で使用した、割込み許可状態を保持しているフリップフロップの出力信号も、OPコードフェッチ信号もCPU内部の信号だからです。
MYCPU80はCPUそのものの回路ですから、そのCPU回路の内部にTK80のステップ回路を組み込んでしまうことができたのですが、そのステップ回路をCPUの外に作るためには、当然それなりの工夫が必要になってきます。

では、8080CPUのTK80では、ステップ回路をどのようにして実現していたのでしょうか?
というところまで、やっとのことでお話をしてきましたが、本日はタイムアウトになってしまいました。
この続きは、また次回にいたします。
CPUをつくろう!第454回(2010.3.11upload)を再編集

ワンボードマイコンをつくろう![第22回]
2011.6.29upload

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