常に『なぜ(?)』に興味がある私。ファミコンやパソコンに触れるたびに、どうやって動いているの(?)とか考えてしまうのでした。
偶然にも、中学生の時にクラスメートだった友人の影響で電子回路へ触れる機会があり、そしてそれらが『簡単だ』と思えてしまい、ますますこの分野にのめりこんでいき、そして独学で勉強を始めたのです。
https://…/2010/02/23/ 電子少年 た~さまの自叙伝・第1回 ~小学生高学年の出会い~
https://…/2010/09/11/ 電子少年 た~さまの自叙伝・第2回 ~一つ知れば十の疑問~
https://…/2010/09/14/ 電子少年 た~さまの自叙伝・第3回 ~私にでもできるのでは(?)(?)~
そして、自分自身の手でマイクロプロセッサを自由自在にコントロールしてみたい・・・・
自分にとっては他のどんなテレビゲームよりも刺激的で楽しい物語だったのです。
そしてなんと言う幸運。シャープのパソコンX1の心臓部として搭載され親しみなれたZ80マイクロプロセッサは大幅な値崩れをおこして、超安値。¥1,000円以下! 試しにチャレンジすることができる時代になっていたのです。
・セカンドソース シャープ製LH0080A Z80マイクロプロセッサ |
ソフトウェアの視点からみたハードウェアというのは知っていたつもりでも、実際に配線して動かすためには、いろいろと調べなければならないのです。
この時代、良い本を探す以外に情報を得る方法は無し! しかし八王子は恵まれているのか、自転車で山を降りて八王子駅まで行けば工学書をたくさん取り揃えている本屋が存在していて、立ち読みして自分のレベルに合った本を見つけだします。
まずは、相手を知ることから・・・・
・Z80実用マイコン製作 |
長年(←そんなでも無いけど。)の疑問だった、バス上にぶら下げた各種のチップが『プログラムから見た特定のアドレスにだけ反応するのって、なんで(?)』なんてのも、アドレスデコーダーと呼ぶ回路を外付けしてあげて教えてあげているんだぁ~と氷解。
その頃(だったっけ(?)、バイブルと呼ばれるZ80の全てがまとまった本とも出会い、ますますお勉強!
・Z80ファミリ・ハンドブック |
極端な話、プロセッサから伸びる『バス』と呼ばれる線の束に、各種チップをぶら下げていき、プロセッサからあれこれ指示が来るからその指示通りに周辺回路が動けばよいのです。
そんなやり取りを延々と続けているだけなので、パソコンの設計は『いかに所定の時間内にプロセッサの指示に応答できるか』という時間の概念をひたすら突き詰めていくことになります。(細かい話をするとノイズとかいろいろありますが・・・・)
そして、前出のバイブルには、このような各種タイミングを規定した仕様が提示されています。
・各種信号の時期が定義された"タイミングチャート" |
一番上が、PCの世界でも良く聞く『クロック』信号。最近だと1.2GHzとか2GHzとかありますが、この世代では4MHz。
1クロック目の立ち下がりで、プロセッサは『意思表示』をするので、『4クロック目の立ち上がりまでにデータを準備しろ』とか規定されています。(実際はもっと細かくて、50ナノ秒以内とか・・・・)
・各種タイミングのパラメータが定義された表(AC特性) 数値の単位は [nS](ナノ秒) |
時間の単位も、1[S](秒)では長すぎるので、工学系では良く出てくる単位が登場!
1 [S](秒) = 1,000 [mS](ミリ秒) = 1,000,000 [μS](マイクロ秒) = 1,000,000,000 [nS](ナノ秒)
そして、前回の自叙伝で登場したゲート回路とかにも、それぞれ『入力を与えたら出力が確定するまでの時間』が規定されていて、それらを何段も組み合わせると回路の先頭に信号が到着してから、最終段の回路で出力が確定するまでの時間が積算されていくし、メモリチップ自体もデータを読み書きするのに250[nS]かかるとか規定されていて・・・・
これらをとにかく所定時間内に動かせばよいのです。
いろいろ分かってくると、自分で仕様を決めます。
- プロセッサ周波数 4MHzではタイミング設計が微妙なので、2MHzに半減させる。(←当時中学生~高校生になりたての私にはこれが限界!(?))
- メモリはROM32kバイト・RAM32kバイトを搭載。ダイナミックRAMだとさらにタイミング設計が難しくなるので、ここは高価だけれど高速で設計がしやすいスタティックRAMにする。
- 自分のX1には搭載されていなかった、各種Z80ファミリのチップを使いたい! CTC、PIO、SIO、DMAとか。でも最初はこれも除外して、単なるパラレルインプット/アウトプットをラッチ回路と3ステートバッファで用意するのみ
とか。いろいろ実験したいけど、最初の腕試しでは性能はぐっと我慢して、動かすことを目標に回路設計・・・・
・Z80ファミリーチップ 上から・・・・ Z80-PIO パラレル入出力チップ 複雑な割り込み制御が可能なデジタルI/O Z80-SIO シリアル入出力チップ 2チャンネルの非同期通信/同期通信可能なチップ/SDLCも可能 Z80-CTC カウンター/タイマー 4チャンネルのカウンター/タイマー 当然複雑な割り込みが可能 |
今みたいにPCでCADみたいなこと・・・・なんてできるわけが無い時代ですから、設計は全て紙と鉛筆と頭脳!
(以後、写真で紹介する資料類は、後年に作ったVer.2/Ver.3とかのやつです。初代の設計資料はさすがに出てこなかった・・・・試行錯誤して新しいのを書いては、古いのを捨てていたと思われます。)
・ルーズリーフの紙っぺらに手書きで仕上げた回路図 (註:上の写真のアドレスデコーダの文字の場所違うじゃん。もっと上!) |
この当時は電卓ですら高価で自分のものなんて無いから、全部紙で計算していたのかなぁ(?)(?)(?) よく覚えていない!
中学生の時はボディートレーニング部、高校は柔道部と、部活で体を酷使していたので、逆に休日は体を休めるためにこんなことをしていたのかしら(?)(?)(?) よく覚えていない!
私は学校の成績も悪くて、周りからは散々『勉強しろ~』と説教され続けたのですが、自分ではコッチ(電子回路の勉強のことね。)の方がよほど自分のためになるし将来メシを食べるのにも有効だし、何より面白いし・・・・と勉強そっちのけでした。
つづく。
このシリーズの日記で登場する出来事はすべて事実なのですが、時系列の検証がいい加減です。その辺りは目をつぶってお楽しみくださいませ。