2012年7月26日木曜日

Architecture

とうとう最後のユニットであるオペレーションデコーダにとりかかる。この時点で、全体のアーキテクチャを決めなくてはならない。設計に際して変更あると思うが、現時点での構成は下図のとおり。
ALUは現時点でAdd,Thru, Incrだけだが、追加しても基本的な構成は変わらない。
条件分岐はALUからのCarryと、Xレジスタの0検出だけである。条件分岐で次の命令をスキップするのはアドレスを2個進める方法と、次の命令をNOPに変える方法があると思うが、後者を採用する。
後は、いかに命令セットをアーキテクチャに合わせてリレー数を減らすか、だが、拡張性も考慮してある程度クリーンな設計にしたい。考え中の命令セットは下記のような感じ。
01 [8bit] Im => X
10 [8bit] Im => Y
11 [8bit] JMP (Im => PC)
00 0000 [4bit] NOP
00 0001 [4bit] loadRAM => X
00 0010 [4bit] loadRAM => Y
00 0011 [4bit] store X => RAM
00 0100 0001 if zero skip next
00 0100 0010 if carry skip next
00 1000 0000 mov X => Y
00 1000 0001 add X+Y => X
00 1000 0010 Incr X => X
00 1000 [0011 - 1111] reserved for additional operator
最上位2bitで、Im(即値)かJMPかオペレーションかが判断でき、
もしオペレーションであれば、中位4bitでメモリアクセス系か、ifか、ALUか判断できる。
もしメモリアクセス系であれば、下位4bitで指定したアドレスに直接アクセスできる。逆に言うとRAMのアドレス空間は16byteだが、0x00はJMPなので実質15byte。実際は3byteしか作ってないが。
全部0ならNOPで、実装していないアドレスをアクセスしても安全である。
リレーはうるさいので(寿命の問題もあるし)、HALTとリスタートの割り込みも必要かもしれないがまだ未定。



2012年7月16日月曜日

Memory Unit

RAMとROMができたのでアドレスデコーダに接続して動作テスト。

上がアドレスデコーダ、真ん中が10WORDのROM、下が1WORDのROM+3byteのRAM。RAMは0x00-0x03に、ROMは0x20-0x29にマッピングされている。
実は設計ミスでアドレスデコーダの配線をやり直してるので、ここまでくるのに結構苦労したのだ。とにかく、メモリはリレーを消費する・・・
それから、eBayでDPDTのリレーを59個調達した。$0.6/DPDTなので激安だと思う。これで10WORD追加できる

2012年7月4日水曜日

Address decoder

次はアドレスデコーダである。トーナメント的にリレーを組めばいいのだが、例えば6bitをフルアドレッシングするには1+2+4+8+16+32=63ものリレーが必要になってしまう。そこで、下位3bit(8WORD)を1blockとして、上位3bitでblock enableを指定する。こうするとリレーは(1+2+4)x2=14個ですむ。
回路図には描いていないが、データバスに接続するかどうかのselSのリレーもある。
SRAM用にはセンスアンプ(とは名ばかりの単なるリレーコイル入力)と、R/W切り替えのリレーが回路図の下半分。SRAMはまだ構想段階だが。
アドレスデコーダとROMを接続して動作確認中。左が以前作った10WORD ROM、右がアドレスデコーダ。上の8LEDがアドレス、下の10LEDが読み出したデータ。次はこれに接続するRAMを作ることにする。どうやらSRAMは半導体のstaticRAMを意味するっぽい.
この場合リレーなので、RRAMと呼ぶことにする。

2012年7月1日日曜日

ROM

ROM1bitにつきリレー一個というのは無駄に思えて、なんとか減らせないかと無い頭を絞って考えたが、結局見つからなかった。抵抗差を利用すれば4bitまでなら抵抗マトリックスだけでも使えそうだが、それでも制御用のリレーを考慮すると得にならない。A/Dコンバータも使えないし・・・。スキャンも考えたが逆に多くなる。おそらく、昔の人もいろいろ考えて結局マトリックスの交点に一素子が使われているのだろうが、その考え方の過程を知りたいぞ。

これでは進まないので、1bit1リレーで作り始める。まず回路図。

10WORDS(100bit)のROMボード。裏面の半田付けに心が折れそうになった。。。ラッピングワイヤの半田のノリが悪すぎる。

表側。ぎりぎり入った感じ。
10ワードでは少ないのでリレーが手に入れば追加したいけど大変だからしたくない。