あるIT企業から「新人研修のスケジュールが半日ほど空いているので、何か役に立つことを教えてあげてほしい」というリクエストをいただきました。何がいいでしょうか?あれこれ考えて、マイコンの作成をテーマにしました。現在40歳以降のベテランITエンジニアの多くは、若いときにマイコンの作成を経験しています。それによって、コンピュータの生の姿を知り、様々な基礎知識を得たのです。現在の若きITエンジニアにも、ぜひ同じ経験してほしいと思います。しかし、たった半日で実際にマイコンを作り上げるのは無理でしょう。そこで、マイコンの回路図を色鉛筆でなぞるだけの体験実習としました。講座の概要をWeb上で再現しましょう。

【スライド1】

 皆さんが、目にしているのは、マイコンの回路図です(TIFF形式ファイル「Z80.tif」をダウンロードする:344Kバイト)。マイコンを構成する主要な装置は、CPU、メモリ、I/Oの3つです。これらは、それぞれ独立したICになっています。CPUは、コンピュータの頭脳であり、プログラムを解釈・実行します。メモリは、プログラムを構成する命令とデータを記憶します。I/Oは、コンピュータ本体が周辺装置とデータを入出力する窓口となります。それぞれの役割がわかったら、CPU、メモリ、I/Oを表す四角形を色鉛筆でなぞってください。

 このマイコンのCPUは、今から30年ぐらい前に一世を風靡したザイログ社のZ80(ゼットはちまる)という型番のものです。Z80は、8ビットのCPUです。メモリは、2KBの容量を持つTC5517という型番のものです。8ビットのデータを2K個だけ記憶できます。I/Oは、パラレルで8ビットのデータを入出できるポート(データの受け渡し場所)を2つ持つZ80 PIOという型番のものです。キーボードやディスプレイをI/Oにつなぎたいところですが、ここでは入力装置としてDIPスイッチ、出力装置としてLEDをつないでいます。回路をシンプルにするためです。

 現在の32ビットパソコンに比べると、ずいぶん貧弱な構成だと思うでしょう。でも、この8ビットマイコンの基本的な仕組みは、現在の32ビットパソコンとほとんど同じです。皆さんの上司の中には、皆さんと同じ年齢だった頃、Z80を使ったマイコン作りに夢中になっていた人が多くいるはずです。何を隠そう、私も、その一人です。

【スライド2】

 回路図の読み方を覚えておきましょう。配線が込み入っているので、電線を表す直線が交差してしまう部分があります。交差した部分に●がないなら、そこはつながっていません。立体交差していると考えてください。交差した部分に●があるなら、そこはつながっています。CPU、メモリ、I/Oは、0Vと+5Vの電源で動作します。それぞれの装置を電源とつなぐ線を色鉛筆でなぞってください。

 Z80 CPUとZ80 PIOを動作させるには、クロック信号(カチカチと0V、+5V、0V、+5V、・・・を繰り返す信号)が必要です。水晶を内蔵したクロックジェネレータという装置が、クロック信号を発生してくれます。Z80 CPUとZ80 CPUのCLK(Clock)というピンにクロックジェネレータをつないでください。

 ICのピンに示されたCLKなどの略語は、そのピンの役割を示しています。略語と一緒に示されている番号は、ICのピン番号です。これでCPU、メモリ、I/Oが動作を始めます、と言いたいところですが、まだメモリにプログラムが何も入っていないので、動作は不定というか暴走状態です。

【スライド3】

 コンピュータは、CPUを中心に動作します。CPUとメモリ、およびCPUとI/Oの間でデータが相互に受け渡されます。そのための線のことをデータ線と呼びます。Z80 CPUは8ビットCPUなので、データ線が全部で8本あります。D0~D7という略語のついたピンです(D=Data)。これをメモリとI/Oにつないでください。

 データは、2進数でやりとりされます。データ線1本で、2進数の1桁を伝えます。データ線が0Vなら2進数の0、+5Vなら2進数の1を表しています。8本のデータ線で、8ビットの2進数を伝えられます。こういう仕組みになっているので、皆さんは、新人研修で、あれこれ2進数の勉強をするのですよ。

【スライド4】

 メモリの中には、データを格納する8ビットサイズの箱がたくさん並んでいます。I/Oの中にも、8ビットサイズの箱が複数あります。どの箱とデータの受け渡しをするかは、アドレス線で指定されます。アドレスは、箱の番号を意味する値です。Z80 CPUのアドレス線は、A0~A15の16本あります(A=Address)。したがって、0000000000000000~1111111111111111まで65536通りのアドレスを指定できます。ここでは、メモリにはA0~A7の8本のアドレス線をつなぎ(メモリの一部だけを使います)、I/OにはA0とA1の2本のアドレス線だけをつなぎます。

【スライド5】

 CPUがメモリとI/Oのどちらを対象としているかを示す線、およびCPUが読み出しと書き込みのどちらを行うかを示す線をつなぐ必要もあります。このような線を制御線と呼びます。CPUが持つMREQ(Memory Request)は、メモリを対象とすることを示す制御線です。IORQ(I/O Request)は、I/Oを対象とすることを示す制御線です。そして、RDは読み出し(RD=Read)を示し、WR(Write)は書き込みを示す制御線です。

これらの略語には、上付き線が付いています。上付き線は、ICのピンが0Vのときに有効になることを意味しています。たとえば、CPUがメモリを読み出したいことを示すときは、MREQピンとRDピンが0Vになります。CPUがメモリに書き込みたいことを示すときは、MREQピンとWRピンが0Vになります。4つの制御線を、メモリとI/Oにつなぎましょう。それ以外にも、BUSAK、M1、INTといった制御線がありますが、ここでは気にしなくてOKです。

【スライド6】

 これで、マイコン回路の主要な配線は完了です。皆さんは、どのように感じたでしょうか? 「コンピュータってシンプルなんだなぁ!」と感じたことでしょう。クロック信号によってCPUが動作し、プログラムを解釈・実行します。CPUの動作は、メモリの読み書き、I/Oの読み書き、そしてCPU内部で演算することだけです。これは、回路図を見れば明らかですね。

 それでは、最後に、理解度チェック問題にチャレンジしていただきます。ちゃんと回路図を色鉛筆でなぞってくれたなら、とっても簡単でしょう!