IC・トランジスタで出来たコンピューターを設計・製作するためのブログ
Jeans & Development | 電子ブロック工房 | 三日坊主 | フロントページ |
ニーモニック表 [CPU]
2007年4月27日
演算命令
INC A
DEC A
INC B
DEC B
INC C
DEC C
COMP A,D
ADD A,D (結果は、Zレジスタに入る)
NOT A (結果は、Zレジスタに入る)
NOT D (結果は、Zレジスタに入る)
AND A,D (結果は、Zレジスタに入る)
OR A,D (結果は、Zレジスタに入る)
SHL A (上位ビットにCF2を使いシフト。下位ビットはCF1へ)
SHR A (下位ビットにCF2を使いシフト。上位ビットはCF1へ)
ジャンプ命令
JMP (ジャンプ先は、Jレジスタの値)
JZ (ジャンプ先は、Jレジスタの値)
JNZ (ジャンプ先は、Jレジスタの値)
JC (ジャンプ先は、Jレジスタの値)
JNC (ジャンプ先は、Jレジスタの値)
LOOP(ジャンプ先は、Jレジスタの値)
JMPF(MOV CS,Z 及び MOV IP,J)
INC A
DEC A
INC B
DEC B
INC C
DEC C
COMP A,D
ADD A,D (結果は、Zレジスタに入る)
NOT A (結果は、Zレジスタに入る)
NOT D (結果は、Zレジスタに入る)
AND A,D (結果は、Zレジスタに入る)
OR A,D (結果は、Zレジスタに入る)
SHL A (上位ビットにCF2を使いシフト。下位ビットはCF1へ)
SHR A (下位ビットにCF2を使いシフト。上位ビットはCF1へ)
ジャンプ命令
JMP (ジャンプ先は、Jレジスタの値)
JZ (ジャンプ先は、Jレジスタの値)
JNZ (ジャンプ先は、Jレジスタの値)
JC (ジャンプ先は、Jレジスタの値)
JNC (ジャンプ先は、Jレジスタの値)
LOOP(ジャンプ先は、Jレジスタの値)
JMPF(MOV CS,Z 及び MOV IP,J)
CPUのスペック案 [CPU]
2007年4月27日
レジスタは8ビット、メモリ空間の1ワードは4ビットの変則型にしようと思う。メモリ空間は、16ビットのアドレス指定で64Kワード(32Kビット)。CS・DSを用いたセグメント指定により、256ワードごとに空間を分割して使用する。
Aレジスタ(8ビット) - 演算用
上位4ビット:AHレジスタ
下位4ビット:ALレジスタ
Bレジスタ(8ビット) - メモリアドレス指定用
上位4ビット:BHレジスタ
下位4ビット:BLレジスタ
Cレジスタ(8ビット) - カウンタ
上位4ビット:CHレジスタ
下位4ビット:CLレジスタ
Dレジスタ(8ビット) - 演算補助
上位4ビット:DHレジスタ
下位4ビット:DLレジスタ
Jレジスタ(8ビット) - ジャンプ先指定
Zレジスタ(8ビット) - 代入および演算結果格納
上位4ビット:ZHレジスタ
下位4ビット:ZLレジスタ
Fレジスタ(4ビット) - フラグ格納用
CF1(キャリーフラグ)
CF2(シフト・ローテート用フラグ)???
ゼロフラグはない(Zレジスタがゼロフラグを兼ねる)
サインフラグはない(Zレジスタ上位1ビットがサインフラグを兼ねる)
IP(8ビット) - 命令実行位置
CS(8ビット) - コードセグメント
DS(8ビット) - データセグメント
最初の設計では、インテル型にしてみた。スタックの実装は、とりあえず先送りにする。
Aレジスタ(8ビット) - 演算用
上位4ビット:AHレジスタ
下位4ビット:ALレジスタ
Bレジスタ(8ビット) - メモリアドレス指定用
上位4ビット:BHレジスタ
下位4ビット:BLレジスタ
Cレジスタ(8ビット) - カウンタ
上位4ビット:CHレジスタ
下位4ビット:CLレジスタ
Dレジスタ(8ビット) - 演算補助
上位4ビット:DHレジスタ
下位4ビット:DLレジスタ
Jレジスタ(8ビット) - ジャンプ先指定
Zレジスタ(8ビット) - 代入および演算結果格納
上位4ビット:ZHレジスタ
下位4ビット:ZLレジスタ
Fレジスタ(4ビット) - フラグ格納用
CF1(キャリーフラグ)
CF2(シフト・ローテート用フラグ)???
ゼロフラグはない(Zレジスタがゼロフラグを兼ねる)
サインフラグはない(Zレジスタ上位1ビットがサインフラグを兼ねる)
IP(8ビット) - 命令実行位置
CS(8ビット) - コードセグメント
DS(8ビット) - データセグメント
最初の設計では、インテル型にしてみた。スタックの実装は、とりあえず先送りにする。
フリップフロップ [配線]
2007年4月27日

1ビットあたり、7400 を一つ、MOSFET を一つ、ダイオード2つ、抵抗を一つの設計。
この回路は、4/26の2つの回路の折衷案。フリップフロップ部分と入力の選択に7400を、出力の選択にMOSFETを用いている。
フリップフロップ [デジタル回路]
2007年4月25日

RAMの基本となる、記憶回路。記憶自体は2つのNANDで実現できるが、選択信号による接続・非接続の部分に3つのNANDが要りそう。再考の余地あり。
もしかしたらこの部分は、はじめからMOSFETで組んだ方が楽かもしれない。

一方で、ROMの方はダイオード一本で1ビット出来そうである。もしかしたら、ROMの容量を上げて、RAMの容量は必要最小限に抑えるかもしれない。
XOR回路 [デジタル回路]
2007年4月25日

XOR回路はすなわち、ビット加算回路である。キャリービットは、入力値のANDで得られる。多ビットの加算には、この加算回路を二つ用いる。この場合のキャリービットは、両方のキャリービットのORで得られる。
NAND 回路 [デジタル回路]
2007年4月25日

基本的には、オープンコレクタを多用することになると思う。上記のMOSFETを用いた回路の出力はオープンコレクタではないが、オープンコレクタとして用いるときは、MOSFETを一つだけ用いればよい。