回数 | 第12回 | 課題 | 簡易CPUの製作(1/3) | |
目的 | CPUの製作を行う。CPUの製作を通じて、ハードウェア設計の流れを理解する。 CPUの構造について、理解を深める。CPU製作第1回の実験では、表示回路の 完成を目指し、スイッチとレジスタについて、理解する。 |
|||
到達目標 | (1) 8ビットバイナリカウンタの上位4ビットをデコードして、7セグメントLEDに数字を表示させる。[CP1] 4桁全部が同じ数字で良い。また、LEDは明滅させなくて良い。 |
|||
(2) 任意の16ビットの値を7セグメントLEDに表示させる。[CP2] 入力する数値は、固定で良い。 |
||||
(3) アキュムレータ(ACC)を定義する。ACCに格納された値が、7セグメントLEDに表示される ようにする。[CP3] ここでは、アキュムレータは、単なる16ビットのレジスタである。 |
||||
(4) 16ビットの命令レジスタを1個定義する。命令レジスタの上位4ビットは命令コードで、 続く12ビットはイミディエートまたは、相対アドレスである。この値を、7セグメントLEDに 表示させる。[CP4](ここまでの課題は、全て「表示」されれば、CPクリアとする。) |
||||
(5) 被演算数レジスタを定義する。このレジスタは、今回は定数値とする。スイッチを押す度に、 16ビットの7セグメントLEDの数値が(ACC→[被演算数]→命令語→ACC→)のように、 表示が変わるように、スイッチ回路(チャタリングキラー回路付)を作成する。[CP5] |
||||
(6) [CP5]の、表示切替スイッチと同様に、手入力クロックを定義する。クロックパルスが入るごとに ALUの上位4ビットをデコードし、演算が行われ、その結果がACCに書き込まれるものとする。 動作は、何サイクルでも構わない。(できるものなら、クロックが入るたびに加算動作が行われる という設計でも構わない。) このCPでは、オペコードの値を加算命令(1000)だけとし、それ以外 の値がオペコードに入っていた場合は、オペランドの値を減算するものとする。[CP6] |
||||
(7) プログラムカウンタを定義する。動作に直結しなくても良い。[CP5]で用いた表示切替スイッチで (ACC→[被演算数]→PC→命令語→ACC→)のように、トグル式に、レジスタの値が切り替え表示 できるようにする。[CP7] |
||||
(8) (もしかして、時間が余った人は、16ビット×64のメモリを定義して、[CP7]のスイッチで、さらに、 メモリの内容が順次表示できるように、表示回路を作成する。[CP8] |
||||
作業手順 | (1)
CPUの設計は、前回の「FPGA導入」から4回連続と考えてよい。初回の課題は、CPU設計の 第一段階も含んでいる。前回の課題を完全消化してから、今日の課題に入ること。 |
|||
(2) 考え方として、今回のCPUでは、レジスタなどの内容は全てHDLで初期値を 与えられているものとして作成する。 |
||||
(3) 今回、様々な「レジスタ」を導入したが、今回の範囲では「使われ方」が違うものの、 チェックポイントとしては、値が表示できるかどうかだけで見ているので、HDL記述と あわせて、値が表示できているか、だけで判断する。 |
||||
※ Aの条件:CP5までを動作させていること。 | ||||
レポートは、経過報告でよい。どう考えて設計したか、どのようなロジックで動作させたか、できた 部分までの報告が、正しい様式で記されていて、CP5まで動かしていれば、Aとする。 |
||||
注意点 | 今後3回連続の実験では、毎回「積み上げ式」のチェックポイントを提示するが、連続的に チェックポイントを消化して欲しい。日付にこだわらず、前回できなかった部分の作業を 行う。TAのチェックポイント記録は、前回分から継続して、連続して使用する。(この結果、 CPU設計の第3回では、Spartan導入の12/8日分から、全部で4回分のチェックシートを 用意して、記録を講師宛に再送して下さい。)過去にさかのぼって、CPを上乗せします。 |
|||
元の教材とは、スイッチの使い方が若干変わっているが、作りやすい設計(内部動作がその都度 検証しやすい方法)として、この資料を参考にして、各自が工夫して欲しい。 内部動作が見やすいと、デバッグ効率が高い。 |
||||
考察課題 報告内容 |
レポートの「理論」は、特に記載しなくとも良い。但し、個別の回路説明の際には、その回路が どのような原理で動作しているか、その部分に「理論」が記載されているならば、読みやすく、 内容的にも良いレポートになる。 |
|||
経過報告でよい。 |