回数 | 第13回 | 課題 | 簡易CPUの製作(2/3) | |
目的 | CPUの製作を行う。CPUの製作を通じて、ハードウェア設計の流れを理解する。 CPUの構造について、理解を深める。CPU製作第2回の実験では、メモリ素子を 実装する。 |
|||
到達目標 | (8) 16ビット×64のメモリを定義して、[CP7]のスイッチで、メモリの内容が順次表示できるように、 表示回路を作成する。[CP8] |
|||
(9) 3クロックで、命令のフェッチを実行する。[CP9] プログラムカウンタの内容をアドレスとし、IRにメモリの内容を読み出す。 |
||||
(10) IRの上位ビットをデコードして、OPコードを取り出し、オペランドがメモリに存在する場合を 判定する。該当する命令の場合には、[被演算数]レジスタに、メモリからデータを読み出す。 [CP10]被演算数レジスタの中身と、OPコード、メモリの中身を表示させて、動作確認する。 まず、Add, Sub, Xor, Andのみを定義すればよい。 |
||||
(11) オペランドと、ACCの中身に、オペコードの値に応じて演算を実行する。[CP11] オペランドの読み出しの次のサイクルで、ACCに演算結果が格納されていることを確認する。 |
||||
(12) シフト命令で、オペランドの領域を被演算数レジスタに転送し、シフト演算を実行する。[CP12] | ||||
(13) LD命令と、ST命令を実装する。デコード後に、ACCの内容とメモリの内容を比較して 動作確認する。[CP13] |
||||
(14) 命令実行後に、PCをインクリメントし、次の命令のフェッチサイクルを動作させる。[CP14] | ||||
(15) 上記を実装できたなら、ジャンプ命令(PCの値を上書き)を実装する。[CP15] | ||||
作業手順 | (1)
CPUの設計は、前回の「FPGA導入」から4回連続と考えてよい。初回の課題は、CPU設計の 第一段階も含んでいる。前回の課題を完全消化してから、今日の課題に入ること。 |
|||
(2) 前回と異なり、メモリを利用できるようになった段階で、メモリからレジスタに値を 転送するように書き換えていく。 |
||||
(3) 内部動作を確認するために、「手動クロック」や「表示切替」をうまくスイッチに定義して 割り振るとよい。 |
||||
Aの条件は、特に設定しない。CPUの動作をどのように理解し、どう実装したか、各自自分なりに 考えをまとめて、報告して欲しい。 |
||||
注意点 | 今後3回連続の実験では、毎回「積み上げ式」のチェックポイントを提示するが、連続的に チェックポイントを消化して欲しい。日付にこだわらず、前回できなかった部分の作業を 行う。TAのチェックポイント記録は、前回分から継続して、連続して使用する。(この結果、 CPU設計の第3回では、Spartan導入の12/8日分から、全部で4回分のチェックシートを 用意して、記録を講師宛に再送して下さい。)過去にさかのぼって、CPを上乗せします。 |
|||
元の教材とは、スイッチの使い方が若干変わっているが、作りやすい設計(内部動作がその都度 検証しやすい方法)として、この資料を参考にして、各自が工夫して欲しい。 内部動作が見やすいと、デバッグ効率が高い。 |
||||
考察課題 報告内容 |
CPUの動作について、理解できた範囲で理論的に説明する。 | |||
経過報告でよい。 |