スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

4bit CPUをつくる話

こんばんは、Operaです。

長らく電子工作をするようなヒマとやる気がなくはんだごての電源を二ヶ月間も投入しないという異常事態に陥っていましたがなんとか一つばかし作れましたのでそれをネタにしたいと思います。
作ったものはそう、かの有名なCPUの創りかたを参考にオリジナルのアレンジを加えた4bitCPUです。
というのも、CPUをつくるという内容の授業がありまして、その一環で作ったものだったりします。
授業の内容としては3,4人のグループで分担してCPUをつくるという内容になっており、半期の授業で作る分しっかりと時間をとって設計することが出来たので割とこだわりの仕上がりになっていたりします。製作に関しては時間的余裕がなくって夏休み突入で残業がデフォだけどね!!!
実は半年ほど前に2bitのCPUは作ってたのですが、これはその拡張版とでも言うべきでしょうか。

書きたいことはだいたい同じなので上記の記事をそのまんまコピペして手抜き記事を書きたいと思います。

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

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

この本のよさは折り紙つきで、発売から12年が経った2015年8月現在でも増刷が続いておりAmazonの「コンピュータ・ITの周辺機器」カテゴリのランキングで堂々売上1位なぐらいです。
本を読んで実際に製作するのも良し、読み物として読んで楽しむのも良しの内容になっていますので、是非とも読んでみることをおすすめします。大学なら図書館にあったりするんじゃないですかね?

まあステマパートはここらへんにして自分の作った4bitCPUの話をそろそろ。
今回は学校の授業さてその性能はと言うと...

汎用レジスタ : 4bit x 2
アドレス空間 : 4bit(=ROM容量は16byte)
プログラムカウンタ : 4bit
フラグレジスタ : 1bit
算術演算 : 4bitの加算、ビット反転、ビット論理積、比較(A=B)
最高動作クロック : 27MHz以下(ロジックICの動作周波数)
入力ポート : 4bit x 2
出力ポート : 4bit x 2
使われたICの数 : 27個

>超低性能<

アドレス空間4bitってアレですよ、プログラム16行書いたら終わりですよ!!!!前回の2bitに比べたら飛躍的とも言える向上ですがそれでも少ねぇよ!!そのプログラムに用意されている命令を並べると、
ADD A, Im : A + Im
MOV A, B : AにBを代入(以下A←B)
IN1 A : A←IN1
MOV A, Im : A←Im
MOV B, A : B←A
ADD B, Im : B + Im
MOV B, Im : B←Im
IN2 B : B←Im
OUT Im : Imを出力
OUT A : Imを出力
OUT B : Imを出力
INV B : Bのビット反転
JMP Im : Imの番地にジャンプ
JNC Im : フラグが立っていたらImの番地にジャンプ
COM B, Im : B=Imならフラグを立てる
AND B, Im : BとImのビット論理積

※A : Aレジスタのこと。4bitのデータが格納されている
※B : Bレジスタのこと。4bitのデータが格納されている
※IN1 : 入力ポート1のこと。4bitのデータを入力することができる
※IN2 : 入力ポート2のこと。4bitのデータを入力することができる
※IN1 : 出力ポートのこと。4bitのデータを出力することができる
※Im(イミディエイトデータ) : 命令とセットで組み込まれた数値データ。通常、機械語は命令コードと数値データの組み合わせで表現する
※加算命令については加算時に繰り上がり(キャリー)が発生しなかった場合にフラグが立つ

一応ですが、命令がたった16つしかなくてもカウントアップやLチカはもちろんライントレースだってできちゃったりします。
最初は駆逐戦車の中に入れてコイルガン仕込んで自律ライントレレースパンツァーを作ろうとか言ってましたけど完成した回路は学校に回収されることを忘れており無事消えました。
ちなみに命令セットのうちCOM、AND、INV、OUT Aは独自で追加した命令で、また入力ポートも本来一つのところを二つにしています。


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

DSC_0471.jpg

左上が入出力・クロック生成回路、右上が命令デコード回路、左下がROM回路、右下がCPU本体の回路となっています。


自分が設計したのは右側の回路なのでそれだけ紹介を。まずはCPU本体の回路。

DSC_0473.jpg

この回路はデータの読み出し・書き込みや各種演算を回路で、CPUの要となる回路です。
追加命令の影響で、回路内のデータセレクタが増えていたり演算器が増えていたりしてICの数が8個から15個と大幅に増加しております。
CPU本体の回路には確認用のLEDを大量につけています。さすがに基板上に配置するとすし詰めになってしまうのでここだけソケット生やしてLEDモジュールにつなげています。
ちなみにLEDを生やした理由は自分が好きなのもそうですが著者へのリスペクトが込められていたりもします。本にもLEDたくさんあるとかっこいいよねと書いてありますからね。
ちなみにこのブログに来るような方は既にお気づきでしょうが今回の回路は全て基盤加工機を使って製作されています。

DSC_0426.jpg

削る幅が0.5mm程度なのでジャンプしやすく、ハンダ付けが若干難しいですがそれでも配線作業が不要になるのは非常にありがたいです。

DSC_0424.jpg

この基板の場合は切削+穴あけで3時間ほどかかりました。加工中は他の作業をするなり昼寝するなり空を見ながらぼーっとするなり何やってても大丈夫なのでどんなに時間がかかろうが関係ないんですけどね。


次に命令デコード回路です。

DSC_0468-2.jpg

この回路はROMから読みだした命令データをデコードする回路で、デコードされたデータはCPUの各ICへと入力される信号となります。確か追加命令を入れない場合は使用するICが2つほどで収まるはずでしたが、色々命令を追加して回路規模が大きくなった結果9つも使う羽目になってしまいました。
ちなみにこの回路の裏面は...

DSC_0469-2.jpg

シナガワの力士

>シナガワの力士<

最後に軽く動作動画でも。
書籍に乗っているラーメンタイマーのコードをそのまま出しただけですが各所のLEDが点滅していてパチンコみたいだなぁと。いややったことないんですけど。
時間の関係で本来1Hzのクロックを10Hzにオーバークロックしているので実際のところは18秒タイマーだったりします。



まあこんな感じですね、他のグループに比べてそこそこ変なことをしたのにしっかりと動いてくれてよかったです。
やはり基板加工機を使うと基板CADで起こしたデータが間違っていない限り配線ミスが起こらないのが非常に嬉しいですね。
ただし、ランドが非常に剥がれやすいため部品の入換は不可能なのと、配線ミスがあった場合の修正が難しいことが面倒だったりします。
空から100万円入りのアタッシュケースが落ちてきたら迷わず購入するんですけどね、まだまだ値段も高いし趣味レベルで導入することが難しい機械だなとは思います。

そんなこんなで学校の授業の一環でCPU作ってMake成分を摂取することが出来ましたってお話です。
実は10月末の文化祭までにマルチコプターを飛ばさないと予算貰ってる関係で色々アカンかったりするのでそろそろまたマルチコプターをいじりだしたいと思います。
では、また今度。
関連記事
スポンサーサイト

コメントの投稿

非公開コメント

プロフィール

おぺら

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

最新記事
カレンダー
09 | 2017/10 | 11
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 31 - - - -
検索フォーム
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
訪問者数
リンク
ブロとも申請フォーム

この人とブロともになる

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。