MC14500B
|
Motorola MC14500B Data 1bit Cycle 〜1.0MHz (1977) |
●14500の特徴
冗談みたいだが、本当にデータバスは1本しかない。
流石に「MPU」ではなく、「ICU」(Industrial Control Unit)という名称であるが、立派にマイクロプロセッサといえるものである。
「Industrial」という名称からもわかる通り、工業用の制御チップとして設計された。
現在はわざわざこのような制約を受けて作ることもないので、使われることはないとは思う。
レジスタも当然のように必要最小限のものしかない。
●14500のピン配列
| RST | 1 | 16 | VDD | |
| Write | 2 | 15 | RR | |
| Data | 3 | 14 | X1 | |
| I3 | 4 | 13 | X2 | |
| I2 | 5 | 12 | JMP | |
| I1 | 6 | 11 | RTN | |
| I0 | 7 | 10 | Flag0 | |
| VSS | 8 | 9 | FlagF |
●14500の構造
一般的なプロセッサにあるプログラムカウンタ等はない。
そのあたりはボードの設計者が自由に作成できる。
外付けしたメモリにプログラムを置いて、命令をチップに送信することで実行する。
命令は4bit(I0[7]〜I3[4])に送る。
命令4bitの残りのbitをデータとしてData[3]への入力やJMP[12]からの出力があった時、プログラムの飛び先と解釈して制御する。
つまり通常はプロセッサが行う部分を、自分で設計できるというエンジニア的な面白さを持っているプロセッサである。
●14500の命令
命令(ニーモニック)は以下の構成となっている。
●命令
| コード | ニーモニック | 意味 | 動作 |
|---|---|---|---|
| 0000 | NOP0 | No OPeration(0) | Flag0[10]にパルスを出力 |
| 0001 | LD | LoaD | Data[3]をRRにロード |
| 0010 | LDC | LoaD Complement | Data[3]の否定値をRRにロード |
| 0011 | AND | AND | Data[3]とRRの論理積をRRにロード |
| 0100 | ANDC | AND Complement | Data[3]の否定値とRRの論理和をRRにロード |
| 0101 | OR | OR | Data[3]とRRの論理積をRRにロード |
| 0110 | ORC | OR Complement | Data[3]の否定値とRRの論理和をRRにロード |
| 0111 | XNOR | eXclusive NOR | RRがData[3]と一致した場合はRR=1、違う場合は0とする |
| 1000 | STO | STOre | RRをData[3]に、Write[2]にパルスを出力 |
| 1001 | STOC | STOre Complement | RRの否定値をData[3]に、Write[2]にパルスを出力 |
| 1010 | IEN | Input ENable | Data[3]をIENにロード(0の時、データは常に0) |
| 1011 | OEN | Output ENable | Data[3]をOENにロード(0の時、STO/STOCで出力されない) |
| 1100 | JMP | JuMP | JMP[12]にパルスを出力 |
| 1101 | RTN | ReTurN | RTN[11]にパルスを出力 |
| 1110 | SKZ | SKip Zero | RR=0の時、次の命令をスキップ |
| 1111 | NOPF | No OPeration(F) | FlagF[9]にパルスを出力 |