FPGAに再入門しようと思いたちFPGAプログラミング大全Xilinx編第2版を頭からやっていく6日目
時期的にも良いので一人Advent Calendarで25日続ける
FPGAプログラミング大全ではCPUを作る方に行かないので今日からはCPUの作り方と合わせてやっていくことにする
25日終了時の目標
4004等の実CPUの実装
目次
# | タイトル |
---|---|
01 | ツール導入 |
02 | 実機テスト下準備 |
03 | 実機テスト |
04 | クロック利用 |
05 | シミュレーション検証 |
06 | TD4 |
07 | 未定 |
環境
【実装ボード】 Digilent Artix-7 35T Arty FPGA 評価キット
【OS】 Windows10
【IDE】 Vivado 2022.2
今日のゴール
TD4の命令セットをまとめる
TD4の仕様
CPUの作り方に載っているTD4を実装できるように仕様をまとめる
大枠
- 4bit CPU
- 演算用レジスタは2つ、それぞれ4bitずつ
- フラグはキャリーのみ
- 加算でキャリーが発生した時に1になるのみ
- 入出力が4bit
命令フォーマット
bit7 | bit7 | bit6 | bit5 | bit4 | bit3 | bit2 | bit1 | bit0 |
---|
上位4bitをオペコード、下位4bitをイミディエイトデータにする
命令セット
命令 | 意味 | オペコード |
---|---|---|
ADD A, Im | AレジスタにImを加算 | 0000 |
ADD B, Im | BレジスタにImを加算 | 0101 |
MOV A, Im | AレジスタにImを入れる | 0011 |
MOV B, Im | BレジスタにImを入れる | 0111 |
MOV A, B | AレジスタにBのデータを入れる | 0001 |
MOV B, A | BレジスタにAのデータを入れる | 0100 |
JMP Im | Imアドレスにジャンプ(絶対アドレスのみサポート) | 1111 |
INC Im | キャリーフラグがない場合のみImアドレスにジャンプ(必ず加算命令の直後のみ実行) | 1110 |
IN A | 入力ポートからAレジスタに転送 | 0010 |
IN B | 入力ポートからBレジスタに転送 | 0110 |
OUT B | Bレジスタのデータを出力ポートに転送 | 1001 |
OUT Im | データをそのまま出力ポートに転送 | 1011 |
今日はここまで