大和田/Multi-cycle Mini MIPS Processor for SFL
をテンプレートにして作成
[
トップ
] [
新規
|
一覧
|
単語検索
|
最終更新
|
ヘルプ
|
ログイン
]
開始行:
[[大和田/SFL]]
*Multi-cycle mini MIPS Processor for SFL [#n6c41bed]
コンピュータアーキテクチャ論で扱うマルチサイクルMIPSプロセッサをSFL記述で設計しました。~
~
命令セットや回路構成はパターソン&ヘネシーのコンピュータの構成と設計に基づいていますが、~
4つの即値命令(addi, andi, ori, slti)の追加を行っています。~
また、SFL記述向けに一部の回路構成を見直しています。~
~
シミュレーションにはsfl2vlを用いてverilogでテストベンチを書いて行っています。
----
#contents
**ダウンロード [#od539ae5]
|Multicycle mini MIPS Processor|&ref(mips_multi_sccp.tar.gz);|
**命令セット [#y0df9e31]
パターソン&ヘネシーのコンピュータの構成と設計の巻末資料のMIPSのアセンブリ言語と機械語のまとめを参考にしています。
|区分|命令|形式|例|意味|実行クロック数|
|算術演算|add|R|add $s1, $s2, $s3|$s1=$s2+$s3|4|
|~|sub|R|sub $s1, $s2, $s3|$s1=$s2-$s3|4|
|~|addi|I|addi $s1, $s2, 100|$s1=$s2+100|4|
|論理演算|and|R|and $s1, $s2, $s3|$s1=$s2&$s3|4|
|~|or|R|or $s1, $s2, $s3|$s1=$s2|$s3|4|
|~|andi|I|andi $s1, $s2, 100|$s1=$s2&100|4|
|~|ori|I|ori $s1, $s2, 100|$s1=$s2|100|4|
|データ転送|lw|I|lw $s1, 100($2)|$s1=memory[$s2+100]|5|
|~|sw|I|sw $s1, 100($2)|memory[$s2+100]=$s1|4|
|条件分岐|beq|I|beq $s1, $s2, 25|if($s1==$s2) goto PC+4+100|3|
|~|slt|R|slt $s1, $s2, $s3|if($s2<$s3) $s1=1 ; else $s1=0|4|
|~|slti|I|slti $s1, $s2, 100|if($s2<100) $s1=1 ; else $s1=0|4|
|無条件ジャンプ|j|J|j 2500|goto 10000|3|
**状態遷移図 [#bfac25ea]
CENTER:&ref(mips_multi_state.png);
**フォルダ構成 [#v9dfaa89]
フォルダ構成は以下のようになっています。
-mips_multi
--rtl : 各モジュールのSFLファイル
--sim : シミュレーションファイル
--asm : アセンブリファイル
***rtlディレクトリのファイル [#u5ed1268]
|Makefile|コンパイルのためのスクリプトを書いたファイル&br; % make で全てのSFLファイルをコンパイルする|
|aluctrl.sfl|ALUコントローラ|
|aluctrl.h|~|
|ctrl_multi.sfl|主制御ユニット|
|ctrl_multi.h|~|
|extend.sfl|データ拡張ユニット|
|extend.h|~|
|memory.sfl|主記憶ユニット|
|memory.h|~|
|mipsalu.sfl|ALU|
|mipsalu.h|~|
|regfile.sfl|レジスタファイル|
|regfile.h|~|
|opdef.h|define文を定義してあるファイル|
|mipsmulti.sfl|プロセッサ本体|
***simディレクトリのファイル [#n62594db]
|Makefile|シミュレーションのためのスクリプトを書いたファイル&br;% make [対象の操作] でシミュレーションを実行|
|testfixture_matmul.v|行列積の計算の動作確認を行う&br;% make matmul で実行|
|testfixture_mips.v|プロセッサの命令セットの動作確認を行う&br;% make mips で実行|
|testfixture_mult.v|乗算の計算の動作確認を行う&br;% make mult で実行|
***asmディレクトリのファイル [#g14a4319]
|matmul.s|行列積の計算を行うアセンブリプログラム|
|mult.s|乗算の計算を行うアセンブリプログラム|
終了行:
[[大和田/SFL]]
*Multi-cycle mini MIPS Processor for SFL [#n6c41bed]
コンピュータアーキテクチャ論で扱うマルチサイクルMIPSプロセッサをSFL記述で設計しました。~
~
命令セットや回路構成はパターソン&ヘネシーのコンピュータの構成と設計に基づいていますが、~
4つの即値命令(addi, andi, ori, slti)の追加を行っています。~
また、SFL記述向けに一部の回路構成を見直しています。~
~
シミュレーションにはsfl2vlを用いてverilogでテストベンチを書いて行っています。
----
#contents
**ダウンロード [#od539ae5]
|Multicycle mini MIPS Processor|&ref(mips_multi_sccp.tar.gz);|
**命令セット [#y0df9e31]
パターソン&ヘネシーのコンピュータの構成と設計の巻末資料のMIPSのアセンブリ言語と機械語のまとめを参考にしています。
|区分|命令|形式|例|意味|実行クロック数|
|算術演算|add|R|add $s1, $s2, $s3|$s1=$s2+$s3|4|
|~|sub|R|sub $s1, $s2, $s3|$s1=$s2-$s3|4|
|~|addi|I|addi $s1, $s2, 100|$s1=$s2+100|4|
|論理演算|and|R|and $s1, $s2, $s3|$s1=$s2&$s3|4|
|~|or|R|or $s1, $s2, $s3|$s1=$s2|$s3|4|
|~|andi|I|andi $s1, $s2, 100|$s1=$s2&100|4|
|~|ori|I|ori $s1, $s2, 100|$s1=$s2|100|4|
|データ転送|lw|I|lw $s1, 100($2)|$s1=memory[$s2+100]|5|
|~|sw|I|sw $s1, 100($2)|memory[$s2+100]=$s1|4|
|条件分岐|beq|I|beq $s1, $s2, 25|if($s1==$s2) goto PC+4+100|3|
|~|slt|R|slt $s1, $s2, $s3|if($s2<$s3) $s1=1 ; else $s1=0|4|
|~|slti|I|slti $s1, $s2, 100|if($s2<100) $s1=1 ; else $s1=0|4|
|無条件ジャンプ|j|J|j 2500|goto 10000|3|
**状態遷移図 [#bfac25ea]
CENTER:&ref(mips_multi_state.png);
**フォルダ構成 [#v9dfaa89]
フォルダ構成は以下のようになっています。
-mips_multi
--rtl : 各モジュールのSFLファイル
--sim : シミュレーションファイル
--asm : アセンブリファイル
***rtlディレクトリのファイル [#u5ed1268]
|Makefile|コンパイルのためのスクリプトを書いたファイル&br; % make で全てのSFLファイルをコンパイルする|
|aluctrl.sfl|ALUコントローラ|
|aluctrl.h|~|
|ctrl_multi.sfl|主制御ユニット|
|ctrl_multi.h|~|
|extend.sfl|データ拡張ユニット|
|extend.h|~|
|memory.sfl|主記憶ユニット|
|memory.h|~|
|mipsalu.sfl|ALU|
|mipsalu.h|~|
|regfile.sfl|レジスタファイル|
|regfile.h|~|
|opdef.h|define文を定義してあるファイル|
|mipsmulti.sfl|プロセッサ本体|
***simディレクトリのファイル [#n62594db]
|Makefile|シミュレーションのためのスクリプトを書いたファイル&br;% make [対象の操作] でシミュレーションを実行|
|testfixture_matmul.v|行列積の計算の動作確認を行う&br;% make matmul で実行|
|testfixture_mips.v|プロセッサの命令セットの動作確認を行う&br;% make mips で実行|
|testfixture_mult.v|乗算の計算の動作確認を行う&br;% make mult で実行|
***asmディレクトリのファイル [#g14a4319]
|matmul.s|行列積の計算を行うアセンブリプログラム|
|mult.s|乗算の計算を行うアセンブリプログラム|
ページ名: