標準TTLだけ(!)でCPUをつくろう!(組立てキットです!)
(ホントは74HC、CMOSなんだけど…)
[第110回]
●今まで説明してきた命令を整理してみました
いままで1枚目の試作基板と2枚目の試作基板の回路について説明してきましたが、先回までで、作成した試作基板に実装した命令回路については、説明を全て完了したことになります。
ここで、どれだけの命令について説明をしてきたかを表にまとめてみました。
命令コード | アセンブラ表記 | 説明(初出)回 |
01 ddd sss | MOV rm, r | 第40回 |
01 ddd 110 | MOV r, M | 第40回 |
01 110 110 | HLT | 第53回 |
00 ddd 110 | MVI rm, imm | 第49回 |
00 ddd 100 | INR rm | 第58回 |
00 ddd 101 | DCR rm | 第58回 |
10 000 sss | ADD rm | |
10 001 sss | ADC rm | |
10 010 sss | SUB rm | |
10 011 sss | SBB rm | |
10 100 sss | ANA rm | |
10 101 sss | XRA rm | |
10 110 sss | ORA rm | |
10 111 sss | CMP rm | |
11 000 110 | ADI imm | |
11 001 110 | ACI imm | |
11 010 110 | SUI imm | |
11 011 110 | SBI imm | |
11 100 110 | ANI imm | |
11 101 110 | XRI imm | |
11 110 110 | ORI imm | |
11 111 110 | CPI imm | |
00 000 111 | RLC | |
00 001 111 | RRC | |
00 010 111 | RAL | |
00 011 111 | RAR | |
11 000 011 | JMP addr | 第61回 |
11 011 010 | JC addr | 第63回 |
11 010 010 | JNC addr | 第63回 |
11 001 010 | JZ addr | 第63回 |
11 000 010 | JNZ addr | 第63回 |
11 110 010 | JP addr | 第63回 |
11 111 010 | JM addr | 第63回 |
11 101 010 | JPE addr | 第63回 |
11 100 010 | JPO addr | 第63回 |
11 001 101 | CALL addr | 第97回 |
11 011 100 | CC addr | 第97回 |
11 010 100 | CNC addr | 第97回 |
11 001 100 | CZ addr | 第97回 |
11 000 100 | CNZ addr | 第97回 |
11 110 100 | CP addr | 第97回 |
11 111 100 | CM addr | 第97回 |
11 101 100 | CPE addr | 第97回 |
11 100 100 | CPO addr | 第97回 |
11 001 001 | RET | 第98回 |
11 011 000 | RC | 第98回 |
11 010 000 | RNC | 第98回 |
11 001 000 | RZ | 第98回 |
11 000 000 | RNZ | 第98回 |
11 110 000 | RP | 第98回 |
11 111 000 | RM | 第98回 |
11 101 000 | RPE | 第98回 |
11 100 000 | RPO | 第98回 |
11 vvv 111 | RST vec | |
11 011 011 | IN port | 第106回 |
11 010 011 | OUT port | 第106回 |
00 pp0 001 | LXI rp, imm1 | |
11 pp0 101 | PUSH rr | 第69回 |
11 pp0 001 | POP rr | 第70回 |
00 110 010 | STA addr | 第64回 |
00 111 010 | LDA addr | 第64回 |
11 101 011 | XCHG | 第91回 |
11 100 011 | XTHL | 第100回 |
11 111 001 | SPHL | 第93回 |
11 101 001 | PCHL | 第93回 |
00 pp1 001 | DAD rp | |
00 pp0 010 | STAX rx | 第66回 |
00 pp1 010 | LDAX rx | 第66回 |
00 pp0 011 | INX rp | 第95回 |
00 pp1 011 | DCX rp | 第95回 |
00 101 111 | CMA | |
00 110 111 | STC | |
00 111 111 | CMC | |
00 100 111 | DAA | |
00 100 010 | SHLD addr | 第104回 |
00 101 010 | LHLD addr | 第104回 |
11 111 011 | EI | |
11 110 011 | DI | |
00 000 000 | NOP |
こうしてみると、いささか自画自賛になりますけれど、よくぞここまでやってきたもの、と感慨もひとしおです。
でも、いつまでも感慨にひたっているわけにもいきません。
まだ片付いていない命令がいくつか残っています。
なかでもADD、SUB、AND、OR、XOR、CMPという、肝心かなめの演算命令が全く手付かずで残っています。
さて、どうしましょう?
じつは、これらの命令の回路についても、すでに設計は完了しています。
3枚目の基板として、配線作業もはるかな昔(?)に完了済みです([第8回])。
もっとも、最終チェックはまだ済んでいませんけれど…。
ほんとうは、2枚目の試作基板にのっている命令の回路について説明をしながら、3枚目の試作基板の図面チェックを進めていくつもりでした。
でもなんだか気が進まなくて、ずっとそのままになってしまいました。
●作るべきか、それとも、作らざるべきか。それが問題だ…
最初は、この基板を組立キットとして商品化しよう、という意気込みでスタートしたのですが、命令の説明を続けていくうちに、「いくらなんでも、こんなものすごいものを商品にするのはムリ」という感じがだんだん強くなってきてしまって、それとともにやる気もだんだん失せてきてしまいました。
内部データバスを4ビットにして、命令の数も少なくしたらどうだろうか、という案についても検討をしてみました([第11回])。
この案はなかなかに魅力的で、いずれぜひ実現してみたいと思います。
しかし、それはそれ。
いまは、この作りかけのキットをどうするか、です。
なにしろ、2枚目の基板がこんなすごいことになってしまったものですから、多分、3枚目の基板も無事ではとても済みそうにはない。
ということは、せっかく作業した3枚目の基板の配線図も多分全面的に手直ししなければならないのではなかろうか。
もう商品化はほぼムリなことは決定的になったいま、使い物にならない試作基板のチェック作業をして、その結果、大幅な変更作業をしたところで、果たしていったい何になる?
勢い込んで設計をしてはみたものの、当初は本当に動作するかどうか、という、不安半分、でも興味津々といった趣きもあったのですけれど、ここまでくると、あとの回路も基本的には、動作することはほぼ間違いありません。
なおさら作る気が失せてしまいます。
いっそ、止めてしまおうか。
でも、それでは、せっかくここまで読んで来てくださった皆様のご期待を、多分裏切ってしまうことになります。
やっぱり最後まで、やらなくっちゃ。
うーん。なんとも、悩ましい。
いや。実際、私自身としても、何とかしたい。
せっかくここまでやってきて、ここで中止してしまうのは、なんとも残念ではあります。
しかしながら、この、使い物にならない3番目の基板の試作を続けるというのも、なんともムダだというのも事実です。なんたってタダで試作基板を作ることはできません。それなりに費用もかかりますから、ムダなことはしたくありません。
さて、どうしましょう。
なんだか、ハムレット状態であります。
いったい、ごくノーマルな人間にとっては、ムダとわかっていることをするのは、なかなかに苦痛なものだと思います(そもそもこの私がノーマルかどうか、と問われると、ちょいと自信はないのですが)。
なにかそれなりの価値があることなら、労をいとわない、のですけれど…。
●しかし、悪魔のささやきが…
悪魔のささやき、なのでしょうか、ねえ。
思いついて、しまったんですよ。
残りの回路の試作をやって、それもムダにならないようにやるってことを。
う。いや。確かに、それなら、まんざら、ムダではない。
しかし、ムダではないけれど、そこまでやるのは、あまりといえばあまりに、異常、というか、バカ…。
つまりですねぇ。
今のままで、3枚目の基板を作るのは全くといっていいほどムダ。
でも、このまま止めてしまうのでは、中途半端のそしりを免れない。
では、いっそのこと、すでに検証済みではあるけれど、回路変更のジャンパ配線でスパゲティと化してしまった1枚目と2枚目の基板の回路を3枚目の未検証の回路と合体させて、1枚の基板にしてしまって、それの試作基板を作ることにしたら、どうだろうか。
それならば、試作費用は1回分で済むから、3枚目の試作を単独でやるのとそれほど変わらない。
お、お、お。なんと、恐ろしい考えだこと。
この、ものすごい回路をもう一度、最初から、ですと!
でも、ついに、悪魔にとりつかれてしまったらしい、この私は、身悶えしつつも、頭の中で計算をしておりました。
当初、必要なICは300個。しかし検証を進めていく中でムダな回路を省くこともできてきたし、3枚を1枚にまとめることで、それぞれの基板にあった重複している回路を1つにまとめることもできるはず。
ざっと頭の中で計算してみたところ、なんとか2割ていどカットできそうな感じ。
問題は基板のサイズだが、現在の試作基板は、1枚目が23cm×23cm=529cu、2枚目が23cm×33cm=759cu、3枚目は23cm×31cm=713cuだから、合計は2007cu。
けれど、3枚目は少し空きがあるので、ここは少なめにできるし、3枚を1枚にすることで配線のための面積もカットできるはず。
すると、もしICが2割カットできるのならば、基板面積は25%〜30%減はなんとか可能なのでは。
2000cu×0.7=1400cu
ちょいと大きい基板になってしまうけれど、タテ31cm×ヨコ48cmの基板ならば、=1488cu、おお、ちょうど、ぴったり!
これなら、なんとか、商品化も可能なのでは…。
しかし、そのためには、もう一度、最初から(!)、基板の配線作業をしなければならない、という、なんともとんでもない、作業をクリアする必要が…!
お、お、お。神さま、仏さま(じゃ、なかった。ああ、悪魔よ)。
●ついに、試作2号基板です!
いくらなんでも、これはちょいと荷が重い。
もともと3枚に基板を分けた理由も、こんなとてつもないボリュームの回路を1枚基板で配線をする自信が無かったことと、CADソフトもそれだけのボリュームに耐えうる能力があるのかどうかもわからなかったため、などの理由からでした。
こんなことを、うかつに書いてしまって、途中で、やっぱり出来ませんでした。止めておきます。などということになったのでは、恥じさらしもいいところです。
やっぱり、実際に作業をしてからでないと、これはなかなか書くわけにはいきません。
じつは、ここのところ、記事を書くペースが落ちていたのは、バックグランドでこっそりと、その作業中だったから、なのですよ。
これが、その試作2号基板の配線図です!
まだやっと一通りの配線作業が終わったばかりで、これからプリンタに出力して、回路図とつきあわせチェックをしなければなりません。
2008.11.12upload
前へ
次へ
ホームページトップへ戻る