標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第240回]

●話の順序として、まずはTK80のKEYレイアウトです

自分だけわかっているつもりで話を進めてしまってはいけませんでした。
数値キーだ、ファンクションキーだなどと勝手に話をしても、具体的なイメージがないことには、わかる話もわからなくなってしまいます。
そこで、まずはTK80のKEYレイアウトです。

図のように5×5=25個のキーが配置されています。
このうち右上の[RESET]はCPUリセット回路に直結しています。
残る24個はI/Oポートの入力と出力につながっていて、ソフトウェアでスキャンすることで、どのキーが押されているかを検出します。

●「つくるCPU」のKEYの写真です



小型のタクトスイッチを利用しています。
コストということもあるのですが、なにしろ基板スペースが無いものですから、小さなキーしか使うことができません。
通常のキースイッチに比べるとちょっとチャタリングが大きくて多少扱いづらいのですが、そこはまあ我慢していただくしかありません。
ちょいと慣れればまあなんとか扱えます。

●「TK80」の回路図です

あ。本物のTK80のことではありません。「つくるCPU」基板上の「TK80」回路です。
その「TK80」回路図は[第120回]でお見せしていますが、その後に大分変更していますから、もう一度お見せすることにいたします。
最終の回路図です。

回路図の中ほどから下がキーマトリクス回路です。
図のようにタテのラインとヨコのラインを組み合わせて、そのクロスした位置にキーを配置するので、マトリクス回路と言います。
回路動作の説明などは、CPU本体の説明が完了したら、やりたいと思いますので、今はやりません。

●「RUN」と「RET」

この2つのキーはほとんど同じ機能です。
LEDのアドレス表示部にプログラムの開始アドレスを表示させた上で(通常「ADRSSET」キーを使います)、「RUN」キーを押すことで、指定アドレスにジャンプしてプログラムの実行を開始します。
普通はそれだけの使い方なのですが、実は「RUN」には付加されている機能があります。
TK80はCPUのレジスタを保存するための特別のメモリ領域をもっています。そのエリアはユーザーが「ADRS SET」「READ INCR」「READ DECR」「WRITE INCR」キーを使って、値を参照したり、書き換えたりすることができます。

「RUN」キーを押すと、そのメモリ領域に書かれている値をそれぞれCPUの対応するレジスタにセットした上で、指定したアドレスにジャンプします。
この機能を利用すると、プログラムでレジスタに初期値を与える代わりに、実行前にレジスタに初期値を与えてからプログラムを開始する、と言う使い方が可能になります。

「RET」は「RUN」とほとんど同じなのですが、「RUN」が、プログラムの開始アドレスを指定して(LEDのアドレス表示部に開始アドレスを表示させて)、そのアドレスからプログラムの実行を開始するのに対して、「RET」は主にステップ動作で、キーを押すたびに1命令ずつ実行させるために使います。
具体的には、「RUN」のように実行開始アドレスを指定するのではなくて、ただ「RET」キーを押すだけで、ステップ動作のために、メモリに退避されていた次の命令のアドレスをプログラムカウンタにセットして、そのアドレスからプログラムの実行を再開します。
このとき「RUN」と同じように(このときはステップ動作によって、そのときのCPUのレジスタの値を全てメモリに退避させてある)レジスタエリアの値をCPUの各レジスタに戻した上で、次のアドレスの命令を実行します。

言葉で説明するよりも、実際に、また写真で説明をした方がわかりやすいと思います。
ですけれど、また時間がなくなってしまいましたので、その続きは次回にすることにいたします。
「RET」で発覚したとんでもない「トラブル」についてのお話も、またその先で、ということになります。
2009.6.4upload

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