2bitCPUを作りました

こんにちは、Operaです。

気づけば前回の更新から時間が経ってしまいましたね。
一応その後の基板加工結果を書いておきたいのですが、残念ながら基板加工機側のCADでKiCADのデータを上手く読み込むことができず、見事失敗して結局ユニバーサル基板で組んでしまいました...
なかなか基板加工機を使うのも難しいですね、KiCADのようにユーザーが少ないとなかなか厳しい物があるようです。

まあ例のごとく学業が忙しく試験があったりして全くもって工作ネタを消化できていないので時は遡り四ヶ月ほど前に作りました2bitCPUのネタを引っ張り出してこようかと思います。

まあまずなんでCPUか?って話ですよ。
普通ブラックボックスとして扱われていて最先端技術を駆使して作られているだろうCPUを作ろうと思う人間なんていうのはいないように思うわけですが実は電子工作をかじったことがある人間なら誰でも知っているだろうこんな書籍があるんですね→CPUの創りかた

この書籍では汎用ロジックICを使って4bitのCPUを創る方法を懇切丁寧に説明してあるのですが、ノリが緩いのもあり難しい内容でもすんなりと頭に入ってくるわけですね。
僕はちょくちょく読み返しながら読んでいったら普通に理解できたので、既にロジックICの基礎が頭に入っている方なら簡単に理解できる内容かと思います。
また、オームの法則レベルから説明してあるのでまるっきりの初心者でも何度も読み返せば理解することができるかと思います。まあ理解できたとしてそこから製作するのは茨の道でしょうが...

本を読んで実際に製作するのも良し、読み物として読んで楽しむのも良しの内容になっていますので、是非とも読んでみることをおすすめします。大学なら図書館にあったりするんじゃないですかね?

まあステマパートはここらへんにして自分の作った2bitCPUの話をそろそろ。
今回は学校の自主制作のネタとして使ったので、本当は4bitで作りたかったのですがあまり時間も無かったのでできなかったわけですね。ですので2bitのCPUとしました。さてその性能はと言うと...

汎用レジスタ : 2bit x 1
アドレス空間 : 2bit(=ROM容量は2byte)
プログラムカウンタ : 2bit
フラグレジスタ : 未実装
算術演算 : 2bitの加算のみ
最高動作クロック : 27MHz以下(ロジックICの動作周波数)
使われたICの数 : 10個

>超低性能<

アドレス空間2bitってアレですよ、プログラム4行書いたら終わりですよ!!!!そのプログラムに用意されている命令はというと、
MOV A, Im : レジスタにイミディエイトデータを書き込み
OUT A : レジスタのデータを出力ポートに出力
ADD A, Im : レジスタのデータにイミディエイトデータを加算
JMP Im : イミディエイトデータのアドレスにジャンプ
※Im(イミディエイトデータ)とは・・・命令とセットで組み込まれた数値データ

一応ですが、命令がたった4つしかなくてもカウントアップやLチカぐらいはできるんです...(それしかできません)

そして完成した2bitCPUがこちら。

PK7_60832.jpg

なんか三枚ぐらい基板が刺さってますね、一応左からクロック・リセットモジュール、DIPスイッチROM、出力ポートになっています。
マザーボードに基板が刺さってるだなんて、ホンモノのPCみたいでしょう?
動作するとこんな感じです。

PK7_61002.jpg

一応Lチカさせてるつもりですがそう見えませんね、そりゃ写真だもの。
本の作者さんがデバッグ用にLEDたくさんつけるとカッコいいよねと書いていたので至る所の信号線にLEDをぶら下げました。
一応デバッグには役立ったような、役立たなかったような...まあカッコいいので良しとします。
プログラムに関しては、Lチカやカウントアップの動作を確認できましたが、何故かジャンプ命令がうまく働かないタイミングがあったり。原因が全く持って不明だったので無かったことに。

ちなみに裏面はこんな感じです。

PK7_60842.jpg

当初の予定ではめっちゃ焼きそば配線(スパゲッティではない)のはずでしたが幸い配線量が少ないのと、基板が広かったのでジャンパ線少なめでどうにかなりました。

ここからは細かいハナシ。
ROM基板はこんな感じになっています。

IMG_20150612_1323162.jpg

なんでROMなのにDIPスイッチかって?元々の本の内容がそうだったし、わざわざ不揮発性のまともなメモリを買うより書き込みも読み込みも簡単だからさ。
ここには命令2bit+数値データ2bitの4bitのセットが4つ分格納されているので、スイッチの数もそんな感じになっています。

romBoard2.png

実はこの基板だけCAD使って設計してたり。3D表示楽しい。

クロック・リセットモジュールはただのNOTを使った発振回路とパワーオンリセットのモジュールです。

IMG_20150612_1323272.jpg

各スイッチは左からリセットスイッチ、手動クロックスイッチ、クロック速度切替スイッチ、自動クロック/手動クロック切替スイッチとなっています。クロックは平常時は1Hz/10Hzの選択となっていますが、本気を出してCR定数を変えるとMHzオーダーの動作も夢ではない...?

製作途中に完成した基板を乗っけてそれっぽい気分を味わっていく。

IMG_20150612_1323372.jpg

この手の複雑は配線作業については、回路図を印刷して配線済みのところを塗っていくと非常に便利です。塗る手間よりデバッグする手間。

IMG_20150612_1323472.jpg

製作に関しては一週間もかからず完成したような気がします。まあ本に書いてあるとおり4bitで作っていたら配線量が倍近くになるのでもっと時間がかかるかと思いますが。

以上、ただでさえ最低限の動作しかできない4bitCPUを2bitにまで縮小して作ってみたお話でした。
自分でCPUの命令セットを考えたりするだなんてとても贅沢なお話です、みなさんも自分の手で自分だけのCPUを作ってみてはどうでしょうか?

では、また今度。
関連記事
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

おぺら

Author:おぺら
強電から弱電まで狭く浅くやっています。
強電:コイルガン(充電&発射部)、テスラコイル
弱電:コイルガン(制御)、鉄道模型版PRC&CTC、マルチコプター

最新記事
カレンダー
03 | 2017/04 | 05
- - - - - - 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 - - - - - -
検索フォーム
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
訪問者数
リンク
ブロとも申請フォーム

この人とブロともになる