目次

まえがき
この本の目的について
この本の内容に関して
前提知識
表記関係について
第1章 自作CPUというテーマ
1.1 電子工作
1.2 ブラックボックスへの追及
1.3 ロジックIC
1.4 自作CPU 流派の違い
1.5 ロジックIC派の利点
第2章 マイクロコンピュータ
2.1 コンピュータを構成する要素
2.2 組み合わせ回路と順序回路
2.3 レジスタ
2.4 クロックとリセット
2.5 アドレスとメモリ
2.6 マイコンとは
2.7 自作マイコン
第3章 TTM8-CPU
3.1 TTM8の特徴
3.2 ブロック図
3.3 TTM8のレジスタの説明
3.4 ALU
3.5 アドレス空間
3.6 プログラムカウンタ
3.7 CPU制御部
3.8 スタック
3.9 命令実行の流れ
3.10 プログラム組み方
3.11 命令セット
3.12 プログラム例
3.13 プログラムボード
3.14 拡張I/O
第4章 TTM8詳細回路
4.1 クロックとリセットの構成
4.2 RAMの構成
4.3 レジスタの構成
4.4 ALUの構成
4.5 プログラムカウンタの構成
4.6 スタックポインタの構成
4.7 制御バス
4.8 アドレスデコーダの構成
4.9 命令デコーダの構成
4.10 命令コントローラの構成
4.11 プログラムボードの構成
第5章 TTM8にI/Oを付与する
5.1 拡張I/Oを自作しよう
5.2 外部レジスタ
5.3 GPIOを実現
5.4 PWMを実現
5.5 拡張I/Oのアイデア
付録A 回路図
付録B サンプルプログラム
あとがき

まえがき

 初めまして、電子ライダーと申します。あなたがこの文章を読んでいるということは、自作CPUに興味があるということですね。うれしい限りです。あなたは自作CPUというニッチなテーマに、なぜ興味を抱いたのでしょうか。

 CPUというのは、電子工作を生業としない方でも何たるかを知っていると思います。自作PCをされる方などは、このCPUはどうだとか、あのCPUはどうだとか、深い知識をお持ちなのではないでしょうか。ところで、自作PCでも電子工作でも、CPU(あるいはマイコン)というものは、誰かが用意してくれているものを買ってきて使うものです。何かよくはわからないけれど計算をしてくれる石ということで、便利に使うことができますね。この「CPUは使うものだ」という概念を取っ払った人のみが、自作CPUという境地にたどり着けるのだと思います。あなたはこういう風に考えたのではないでしょうか。「CPUはどういう仕組みで動いているのだろうか」と。少なくとも私はそうでした。例によって、私もマイコンを使った電子工作を長年(とはいっても、電子工作を始めてから現在まで10年ぐらいですが…)やってきました。学生時代のロボット製作なんかは、私の人生を振り返っても、特に素晴らしい思い出のひとつです。ですがそんな素晴らしい活動のなかでも、もやもやがあったのです。作製した回路では、マイコン内がブラックボックスであったという事実です。便利なツールというものは、各段にハードルを下げることにつながります。最近では特に、その方針が強い製品が出ていると感じます。それを否定するつもりは毛頭ありませんし、むしろいい傾向だと思っています。間口を広げることで、電子工作沼に引き込みやすくなりますしね。しかしながら、便利ツールというものは、同時にブラックボックスを多くしてしまいがちです。マイコンへのプログラムがレジスタの書き換えを行っているということを知っている方が少なくなっているのではないでしょうか。そんなブラックボックスへと興味を持ってくれた方へ、この本が役立てばいいと思っています。

この本の目的について

 この本は私、電子ライダーが開発したオリジナルCPU、TTM8について解説する解説本です。TTM8はロジックICを組み合わせて作製されたCPUで、FPGA上で開発するときとはまた異なる工夫ポイントがあります。そういったポイントをこの本でお伝えできればいいですね。最も読んでいただきたい方は、TTM8を買っていただいた方です。基本的に組立キットとして販売しているTTM8ですが、組み立てた後にも価値を提供したいと考えています。この本はその価値のひとつです。内部構造を学んでいただくことで、自作CPUというテーマに目を向けていただけると嬉しいですね。実は、TTM8はI/Oを備えていません。I/Oを得るためには、拡張基板を接続する必要があるのですね。この拡張基板ですが、ユーザー自身に作っていただきたいと思っています。いきなり自作CPUは難しくても、拡張基板であれば作っていただけるのではないか?という考えのもとです。もちろん、TTM8をまだ手にしていない方にも読んでいただける内容となっています。聞けば情報科の大学では、FPGA上でCPU作製をする授業があるみたいです(筆者は電気科です)。そんな、これからCPUの仕組みについて学んでいこうという方の手助けになれば嬉しいです。

この本の内容に関して

 内容に関しては慎重に吟味し、誤ったことがないように気をつけていますが、筆者は専門家でもなければ生業にしているわけでもありませんので、情報取得のひとつの手段としてとらえてください。また、内容は基本的には開発したTTM8における名称、機能で解説しています。一般的なCPUとは違ったこともあるかもしれません。

前提知識

 自作CPUというテーマはニッチなテーマではあるものの、確立したテーマのひとつです。そのため、自作CPUを学ぶための素晴らしい本がたくさん出版されています。TTM8を解説する上で必要となる知識は簡単には解説しますが、詳しくはないです。この本で解説しきれない部分は素晴らしい本たちに任せることにして、あくまで私でしか解説できないTTM8に焦点をあてます。ここでは前提知識として必要となる用語と、解説はするものの専門的な用語をまとめておきます。後にご自身で調べるときに、単語がわかれば調べられるからです。

 ・2進数

 ・16進数

 ・レジスタ

 ・ALU

 ・命令カウンタ

 ・スタック

 ・スタックカウンタ

 ・CPU

 ・FPGA

 ・bit

 ・フリップフロップ

 ・オペコード

 ・ニーモニック

 ・オペランド

表記関係について

 本書に記載されている会社名、製品名などは、一般に各社の登録商標または商標、商品名です。会社名、製品名については、本文中では©、®、™マークなどは表示していません。

第1章 自作CPUというテーマ

この章では、本書のテーマである自作CPUについて解説します。自作CPUとはどんな存在なのか、挑むことで何を得ることができるのか。

1.1 電子工作

 電子工作、楽しいですよね。この本を読んでいるあなたはきっと、電子工作を日頃から嗜むお方であると存じ上げます。ところで、あなたの電子工作のテーマは何ですか。一口に電子工作といっても、数多の種類がありますよね。アナログ回路、デジタル回路、あるいはメカ部分やソフト部分に重きを置いた作品なのかもしれませんね。私の場合、それが自作CPUだったというわけです。ところで、自作CPUは電子工作なのでしょうか。一般的には、FPGA上で構成される自作CPUは電気ではなく、情報分野ではないのかと思われるかもしれません。話は変わりますが、近年では機械を動かすのに必ずといっていいほど、マイクロプロセッサ(MPU)が使われます。MPUというものは、ソフト次第で何でもできるのがよいところで、機械に合わせて専用回路を構成するまでもなく、ソフトを変えるだけで電気回路自体は汎用的に使用できるからです。MPUが発明される前は、機械に合わせた専用回路が開発されていました。昔の機械の中にある回路はワンチップでプロセッサが載っているのではなく、回路全体でコンピュータでした。さて、この本で最初の節であるこの場で何が言いたいかといいますと、みなさんに昔と同じような専用回路を創る電子工作を思い出していただきたかったのです。これは紛れもなく、電気屋さんの領域ですよ。

1.2 ブラックボックスへの追及

 便利なものはたいていの場合、中身が見えません。今やたいていの人が持っているスマホがどうやって動いているか、車がどうやって走っているのか、知っていますか?私はよく知りません。これはハードウェアエンジニアにとっても同じで、便利に開発を進めようとすると、ブラックボックスを使わざるをえないことがあります。マイコンを使うことはできるけれど、マイコンを創れる人は少ないでしょう。これはつまり、マイコン内部はブラックボックスだということです。自作CPUというテーマは、このブラックボックスへの追及です。どうやって動いているか不明な存在を明らかにすることで、心のもやもやを晴らしてあげようとするわけです。自作CPU最大の益はこれです。

1.3 ロジックIC

 ロジックICというものをご存じですか。需要も少なくなって、生産終了品が多くなっています。74シリーズと4000シリーズが有名どころです。ANDとかORなど、論理演算はプログラムを書く人ならご存じでしょう。たとえば7408では、2入力のAND素子が4つ封入されています。論理演算以外にもエンコーダ、デコーダ、トライステート、レジスタ、カウンタなど様々あります。昔の機械に合わせた専用回路は、これらを組み合わせて構成されていました。昔の基板を眺めてみると、DIPのICがたくさん並んでいる様子が見てとれるはずです。ICに書いてある型を読んでみましょう。74LSxxと書いている場合がほとんどだと思われます。

図1.1: ロジックIC

1.4 自作CPU 流派の違い

 自作CPUと一口に言っても、流派があるのはご存じでしょうか。大きく分けてふたつに分かれます。ソフトウェア派とハードウェア派です。そもそもCPUを構成するための論理回路というものは、「真」と「偽」の2値で示す概念的なものであるので、回路を電気で組む必要性はないです。伝達速度含め様々な点で大変便利だから、電気が使われるのです。ソフトウェア派では、CPUをパソコン上で再現します。さらにFPGA 1 に書き込んで現実世界に召喚します。いずれにしても、ソフトウェアでCPUを構成する方法です。対して、ハードウェア派は、論理回路の構成を実際の電子部品で行う流派です。TTM8構成で採用しているロジックICを用いた構成が最も一般的ですが、なかには、トランジスタやリレーで組んでしまう猛者もいます。実際に配線を組まなくてはならないので、自作CPUという題材も相まって、非常に密な回路となることが多いです。

 ソフトウェア派とハードウェア派が存在しますが、多くの場合、ソフトウェア派を選択する人が多いです。開発が安易な点、配線を考慮しなくてよい点、再現性、FPGAを用いれば現実世界にも召喚できる点。ほとんどの要素で優れているからです。わざわざハードウェア派を選択して開発を進める稀有な人は、それを選択した明確な意思を持っていると考えます。これは私個人の考えなのですが、ソフトウェアというものはどうしても、現実世界に手に取れる形では存在できないものです。だから、完成した達成感と実感はハードウェアと比べると薄いと、私は思っています。ハードウェアという簡単に変えられず、リアルに重さを感じられる"物"としての存在は訴えかけるパワーは別格であると、これまでの工作経験からの確信です。こうした点から、私はハードウェアを選択するのです。

図1.2: 自作CPU流派の例

1.5 ロジックIC派の利点

 ハードウェア派の中では一般的な手法であるロジックICを用いた構成方法は、様々な点で利点があります。箇条書きでこれらを記すと、以下のようになります。

 ・ハードウェアで構成する利点を得られる

  ─リアルに重さのある"物"を創ることができる

  ─CPUを構成する配線が目に見える

  ─内部信号を観察しやすい(LEDをぶら下げるなど)

 ・ブラックボックスがない回路を構成(ロジックICの内部はたいてい明らかにされている)

 ・トランジスタやリレーで構成するより小規模な回路となる

 以上の点から、TTM8ではロジックICで構成しています。なんとか片手で持つことができるサイズに収めることができました。

1. 論理回路を書き換え可能にするIC

試し読みはここまでです。
この続きは、製品版でお楽しみください。