A 4bit toy CPU "TD4" from "CPU の創りかた" by 渡波郁.
This chip has a CPU and a program memory.
It has three modes; "Load", "Read" and "Execution".
The mode can be selected with ui_in[6] & ui_in[7].
Truth table for mode select
ui_in[6]: Read | ui_in[7]: Execution | Operating mode |
---|---|---|
0 | 1 | Execution |
0 | 0 | Load |
1 | 1 | Execution |
1 | 0 | Read |
For every operating mode, each pin has a different function; for detailed pin assignments, refer to info.yaml
渡波郁 著 "CPU の創りかた"の 4bit CPU TD4 を実装しました.
純粋な TD4 のみを実装したわけではなく,プログラムを格納する 8bit 16word の ROM もチップ上に実装しています.
そのため,プログラムを ROM に書き込む Write モード,ROM の値を読み取る Read モード,プログラムを実行する Execution モードの 3 モードを取ります.
この切換は ui_in[6]及び ui_in[7]によって行えます.
上に掲載した真理値表(Truth table for mode select)を参照してください.
また,ピンの機能は動作モードにより異なります.
その割り当てはinfo.yaml
を参照して確認してください.
このプロジェクトはセキュリティ・キャンプ 2025 全国大会 開発コース L2 ゼミの指導の下行われました.
cd test/
make -B
# | Input | Output | Bidirectional |
---|---|---|---|
0 | Load: OpCode(0) / Read: NC / Exe: Input(0) | Load: NC / Read: OpCode(0) / Exe: RegA(0) | Load: Immediate(0) / Read: NC / Exe: Output(0) |
1 | Load: OpCode(1) / Read: NC / Exe: Input(1) | Load: NC / Read: OpCode(1) / Exe: RegA(1) | Load: Immediate(1) / Read: NC / Exe: Output(1) |
2 | Load: OpCode(2) / Read: NC / Exe: Input(2) | Load: NC / Read: OpCode(2) / Exe: RegA(2) | Load: Immediate(2) / Read: NC / Exe: Output(2) |
3 | Load: OpCode(3) / Read: NC / Exe: Input(3) | Load: NC / Read: OpCode(3) / Exe: RegA(3) | Load: Immediate(3) / Read: NC / Exe: Output(3) |
4 | Always: NC | Load: NC / Read: Immediate(0) / Exe: RegB(0) | Load: Address(0) / Read: Address(0)/ Exe: NC |
5 | Always: NC | Load: NC / Read: Immediate(0) / Exe: RegB(1) | Load: Address(1) / Read: Address(1)/ Exe: NC |
6 | Load: Read / Read: Read / Exe: NC | Load: NC / Read: Immediate(0) / Exe: RegB(2) | Load: Address(2) / Read: Address(2)/ Exe: NC |
7 | Always: Execution | Load: NC / Read: Immediate(0) / Exe: RegB(3) | Load: Address(3) / Read: Address(3)/ Exe: Carry |