プロセッサの追加設計 3(sltiu 命令と bne 命令、lw 命令)と動作実験 4-2

実験の概要

本実験では、プロセッサの追加設計と動作実験を行う。これにより、プロセッサの追加設計の手順とプロセッサの動作の理解を目指す。 本実験では、sltiu 命令と bne 命令、lw 命令が未実装なプロセッサを例とし、追加設計を行い、これらの命令が正しく実行されるプロセッサを完成させる。また、その動作を実際に動作させて観察する。

プロセッサの追加設計 3

動作実験 4-1 の sltiu 命令と bne 命令、lw 命令が未実装なプロセッサについて、追加設計を行い、これらの命令を正しく実行するプロセッサを完成させなさい。 また、そのプロセッサと動作実験 4-1 の print_all_char.bin を FPGA 上に実現し、その動作を確認せよ。

本実験を下記の 1, 2, 3, 4, 5 の手順で行いなさい。
1. sltiu 命令のためのメイン制御回路の追加設計
2. bne 命令のためのメイン制御回路の追加設計
3. lw 命令のためのメイン制御回路の追加設計
4. 論理合成
5. FPGA を用いた回路実現

なお、本実験で追加設計を行う sltiu 命令と bne 命令、lw 命令のアセンブリ言語は表 1 のとおりである。
表 1: sltiu 命令と bne 命令、lw 命令のアセンブリ言語
区分 命令 意味
条件判定 sltiu rt,rs,immediate rt = (rs < immediate) ? 1 : 0
条件分岐 bne rt, rs, address PC = (rs != rt) PC + 4 + address*4 : PC + 4
データ転送 lw rt, address(rs) rt = メモリ[rs + address]

また、本実験で追加設計を行う sltiu 命令と bne 命令、lw 命令の機械語は図 1 のとおりである。
sltiu
001011 rs rt immediate
I 形式 6 ビット 5 ビット 5 ビット 16 ビット
31  26 25  21 20  16 15      0
bne
000101 rs rt address
I 形式 6 ビット 5 ビット 5 ビット 16 ビット
31  26 25  21 20  16 15      0
lw
100011 rs rt address
I 形式 6 ビット 5 ビット 5 ビット 16 ビット
31  26 25  21 20  16 15      0
図 1: sltiu 命令と bne 命令、lw 命令の機械語

1. sltiu 命令のためのメイン制御回路の追加設計

本実験では、動作実験 4-1 で動作を確認したsltiu 命令と bne 命令、lw 命令が未実装なプロセッサについて、追加設計を行う。

本実験では、動作実験 4-1 で使用したプロセッサのメイン制御回路の Verilog HDL 記述 main_ctrl.v を使用する。 main_ctrl.v は、ディレクトリ mips_de2-115 内のサブディレクトリ MIPS 内にある。

ソースファイル main_ctrl.v 中のコメント、追加設計 3 のヒント(1)〜(8)の周辺を、適切に変更せよ。

2. bne 命令のためのメイン制御回路の追加設計

本実験では、bne 命令についての追加設計を行う。

本実験では、動作実験 4-1 で使用したプロセッサのメイン制御回路の Verilog HDL 記述 main_ctrl.v を使用する。 main_ctrl.v は、ディレクトリ mips_de2-115 内のサブディレクトリ MIPS 内にある。

ソースファイル main_ctrl.v 中のコメント、追加設計 3 のヒント(9)〜(13)の周辺を、適切に変更せよ。

3. lw 命令のためのメイン制御回路の追加設計

本実験では、lw 命令についての追加設計を行う。

本実験では、動作実験 4-1 で使用したプロセッサのメイン制御回路の Verilog HDL 記述 main_ctrl.v を使用する。 main_ctrl.v は、ディレクトリ mips_de2-115 内のサブディレクトリ MIPS 内にある。

ソースファイル main_ctrl.v 中のコメント、追加設計 3 のヒント(14)〜(21)の周辺を、適切に変更せよ。

4. 論理合成

本実験では、追加設計後のプロセッサならびに命令メモリ、その他周辺回路の論理合成を行う。

論理合成には、追加設計後の main_ctrl.v と動作実験 4-1 で使用したその他プロセッサの Verilog HDL 記述一式、print_all_char.bin から生成した メモリ・イメージファイル rom8x1024_DE2.mif を使用する。

追加設計後の main_ctrl.v を、プロセッサなど一式のディレクトリ mips_de2-115 内の、サブディレクトリ MIPS 内に置く。

更に、 ディレクトリ mips_de2-115 に cd し、print_all_char.bin の rom8x1024_DE2.mif がそこにあるのを確認して、図 2 のように論理合成を行う。

quartus_sh --flow compile DE2_115_Default
図 2: quartus_sh を使ったプロセッサの論理合成

なお、論理合成には計算機の性能により 5 分から 20 分程度の時間がかかる。 論理合成が完了すると、ディレクトリ mips_de2-115 内に FPGA にダウンロード可能なプロセッサ等の回路一式のストリーム・アウト・ファイル DE2_115_Default.sof が生成される。

5. FPGA を用いた回路実現

本実験では、追加設計後のプロセッサの実際の動作を観察し、動作実験 4-1 で観察した結果との比較を行う。 本実験には、論理合成により生成された プロセッサなど回路一式のストリーム・アウト・ファイル DE2_115_Default.sof を使用する。 DE2_115_Default.sof を quartus_pgm を用いて DE2-115 ボード上の FPGA にダウンロードし、動作させよ。

プロセッサが実行するマシン・コードprint_all_char.binはディスプレイ下部に61種類の文字を表示するプログラムである。 key3を連打してプロセッサにクロックパルスを送り、プロセッサにPC=0x0000番地から60個程度の命令を実行させ、ディスプレイ下部に異なる文字が2つ表示されるかどうかを確認せよ。 異なる文字が 2 つ表示されるはずである。

また、 動作実験 4-1 で確認された、動作実験 4-1 の 3 の 1, 2 で予想した結果と異なる動作について、その動作に変化がないかどうかを確認せよ。 動作実験 4-1 の 3 の 1, 2 で予想した結果と同じ動作になったはずである。

完成版の sof を動かしてみたい場合は、ここからダウンロードできる。

参考書