ミニMIPSプロセッサ1(JUMPしかないプロセッサ)
琉球大学・工学部・情報工学科 教授 ファイヤー和田
私に用事がある時は、「ファイヤー先生!」、「ファイヤー和田先生!」、「和田さん!」と大声で叫ぶか呼んでください!必ず振り向きます!
1)本日の内容
- SPWのHDS(Hardware Design System)を用いて、MIPSプロセッサを設計するのであるが、今回は最初ということで誠に変ではあるが「JUMP命令」と「NOP命令(何もしない)」を実行するプロセッサを設計する。
2)BDEによる回路の設計
- nirai上でSPWを起動する
nirai> spw
1) 入出力ポートの作成
- 入出力ポートの横に同じ名前でコネクターを作成し、配線することで、コネクター名回路図で用いています。
2) 回路ブロックの配置と結線をする
- 今回使用する回路ブロックを以下に示す
- Bit Manipulation>Word Split
- Bit Manipulation>Word Split4
- Bit Manipulation>Word Merge
- Math>Constant
- Math>Add
- Control>Mux2
- Logic>D Flip Flop
3) 回路図を digsys/minimips.detail という名前でSaveする。
4) 回路図で CNTL-Uコマンドでシンボルを作成する
3)テストベンチの作成
1)下記のようなテストベンチを作成する。
- ここでROMの出力を<32>ビットにすることを忘れないように!
- ROMをダブルクリックして、
ファイル名を digsys/program1
タイプを ascii
とする。
2)ROMデータ digsys/program1.ascsig の作成
- File ManagerのSigCalcボタンを押して、SigCalcを立ち上げる
- Gen>Constantを選択して以下のように、全て0の波形を作成する
- 生成した波形を選択して、データ形式を32ビットの固定小数点に変換する
- 固定小数点に変換された波形を選択し、形式を2進数に以下のように変換する
- 生成された長さ64、ビット幅32ビットですべて’0’のデータを digsys/program1のアスキー形式で以下のようにSAVEする。
- 以上ですべて’0’のROMデータが生成される。
- 次に10行目を以下のように変更する、これは
iadd=10(PC=40番地)の時は JUMP 3
なる命令を意味する。
- その他の全て’0’の命令はNOP(なにもしない)に対応する。
4)Simulation Managerを立ち上げ、シミュレーションを行い、SicCalcにて動作波形を観測する
- 適当なMINIMIPSプロセッサの信号をプローブする。
- プローブする場合、Defaultの信号タイプを probes/srx.probe としないとうまく波形を観測できない。
SigCalcでのコツ
- S1ボタンを押して波形をすべて選択して、View>Selected Rangeで全てを表示
- 波形の好きな部分をドラッグして、View>Selected Rangeでその部分を拡大
- S1ボタンを押して、波形をすべて選択して、Edit Propertiesで波形の表示方法を変更
Interporated ->
Numericにすると値が表示される等
(実習)
- ROMの内容を変更して、下記の順番で命令が実行されるようにせよ
iadd= 0, 1, 2, 7, 9, 10, 11, 3, 0, 繰り返し
このときPCの値をプローブして値を確認せよ!
以上
講義のページへのリンク