回数 第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を上乗せします。
元の教材とは、スイッチの使い方が若干変わっているが、作りやすい設計(内部動作がその都度
検証しやすい方法)として、この資料を参考にして、各自が工夫して欲しい。
内部動作が見やすいと、デバッグ効率が高い。
考察課題
報告内容
レポートの「理論」は、特に記載しなくとも良い。但し、個別の回路説明の際には、その回路が
どのような原理で動作しているか、その部分に「理論」が記載されているならば、読みやすく、
内容的にも良いレポートになる。
経過報告でよい。