Changes between Initial Version and Version 1 of Ex08課題2016


Ignore:
Timestamp:
Jun 6, 2016 5:22:58 PM (10 years ago)
Author:
nakasato
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Ex08課題2016

    v1 v1  
     1トップ:http://galaxy.u-aizu.ac.jp/note/wiki/CAEX2016 
     2 
     3= 状態遷移図の理解 = 
     4制御部を設計するためには、このマルチサイクルプロセッサの状態遷移を理解する必要があります。 
     5状態遷移図は、このファイル dp_ctl.pdf の2ページ目にあります。 
     6講義ノート http://web-int.u-aizu.ac.jp/~miyazaki/comparch-15/lecture/comparch-9-multicycle.pdf も参照してください。 
     7なお、ここで設計する状態遷移図は、講義ノートのものにイミディエイト命令が追加されていて、 
     8全部の状態数は13個(0から12)になります。 
     9アセンブラプログラム演習で用いたJALとJR命令は後の演習で追加するので、今は扱いません。 
     10 
     11この状態遷移図は、各状態の○の中に記述された信号が変化することを示します。 
     12例えば状態0の命令フェッチでは、!MemRead信号(1bit)が"1'b1"になり(アサート)、ALUSrcA(1bit)は"1'b0"になります(ネゲート)。 
     13他の信号の意味も同様です。全ての信号の幅と意味については、上記講義ノートの11ページを参考にしてください。 
     14 
     15== 命令実行時のデータパスの変化 == 
     16[[Image(http://galaxy.u-aizu.ac.jp/comparch2014/ori.png)]] 
     17 
     18この図で赤いで示された数字は、ORI命令を実行した時に、どのデータパスが利用されるかを示します。 
     19ORI命令では、状態は0→1→12→11→0と遷移します。 
     20 
     21例えば、状態1(命令デコード)の時には、ALUSrcAとALUSrcBとALUOpが変化します。 
     22講義ノートの14ページにあるように、この時におこなわれる操作は、 
     23レジスタファイルからレジスタA/Bへのデータ読み出しと、分岐アドレスの計算です。 
     24よって、赤い数字1のついたデータパスが利用されます。 
     25 
     26ただし、実行されるが使用されないパス(例えば状態0において、メモリからMemory Data registerへのデータ転送) 
     27および制御部からの信号には番号をつけていません。 
     28ALUの入力は多くの状態で使用されるので番号を省略しています。 
     29ただし、状態1においてPCからマルチプレクサ、ALUを経由してALUOutおよび命令レジスタから符号拡張、2bitシフト、 
     30ALUを経由してALUOutまでのパスには1をつけています。 
     31 
     32=  制御部の設計(1) = 
     33制御部モジュールのテンプレートは以下のようになります。 
     34 
     35{{{ 
     36module ControlUnit(PCWriteCond, PCWrite, IorD, MemRead, MemWrite, MemtoReg, 
     37                   IRWrite, PCSource, ALUOp, ALUSrcB, ALUSrcA, 
     38                   RegWrite, RegDST, Op, CK, CLR); 
     39 
     40   // clock 
     41   input CK; 
     42   input CLR; 
     43 
     44   // opcode (6 bit) 
     45   input [5:0]  Op; 
     46 
     47   // 1 bit control signal 
     48   output PCWriteCond; 
     49   output PCWrite; 
     50   output IorD; 
     51   output MemRead; 
     52   output MemWrite; 
     53   output MemtoReg; 
     54   output IRWrite; 
     55   output RegWrite; 
     56   output RegDST; 
     57   output ALUSrcA; 
     58 
     59   // 2 bit control signal 
     60   output [1:0] PCSource; 
     61   output [1:0] ALUOp; 
     62   output [2:0] ALUSrcB; 
     63 
     64   // register declaration 
     65   reg          PCWriteCond; 
     66   reg          PCWrite; 
     67   reg          IorD; 
     68   reg          MemRead; 
     69   reg          MemWrite; 
     70   reg          MemtoReg; 
     71   reg          IRWrite; 
     72   reg [1:0]    PCSource; 
     73   reg [1:0]    ALUOp; 
     74   reg [2:0]    ALUSrcB; 
     75   reg          ALUSrcA; 
     76   reg          RegWrite; 
     77   reg          RegDST; 
     78 
     79   // state register 
     80   reg [3:0]    state; 
     81 
     82 
     83endmodule // ControlUnit 
     84}}} 
     85 
     86入力信号はOpとCK(クロック信号)とCLR(リセット信号)で、その他は出力になります。 
     87Op信号はMIPS命令コードの25-31ビットの部分です。各命令コードごとのOp信号を以下のテーブルに示します。 
     88 
     89== 命令コード == 
     90|| 命令の種類  || opcode(10進数) || 
     91|| R形式       || 0  || 
     92|| Load Word   || 35 || 
     93|| Store Word  || 43 || 
     94|| Branch on EQ|| 4  || 
     95|| ADD imm     || 8  || 
     96|| SLT imm     || 10 || 
     97|| AND imm     || 12 || 
     98|| ORI imm     || 13 || 
     99 
     100注意:R形式命令では、命令コードの0-5ビットの部分で演算の種類を指定します。 
     101 
     102== 例題 == 
     103状態遷移図から、R形式命令の実行には4サイクル必要になります。 
     104このことを、以下のファイルを使ってシミュレーションを行い確かめなさい。 
     105 
     106状態遷移のみの制御回路 http://galaxy.u-aizu.ac.jp/note/raw-attachment/wiki/Ex07%E8%AA%B2%E9%A1%8C2015/ControlUnit_1.v 
     107 
     108テストベンチファイル http://galaxy.u-aizu.ac.jp/note/raw-attachment/wiki/Ex07%E8%AA%B2%E9%A1%8C2015/CUbench_1.v 
     109 
     110=== 実行例 === 
     111それぞれのファイルをダウンロードまたは保存して、以下のコマンドを実行。 
     112{{{ 
     113ncverilog CUbench_1.v 
     114}}} 
     115 
     116この状態遷移の回路では、always文の部分はCLKが上向きに変化する時に状態が遷移します。 
     117また、CLR信号が真になったら状態0になります(リセット)。 
     118そのため状態遷移を行う時にはCLR信号を適切に変化させる必要があります。 
     119 
     120=== 実行波形 === 
     121[[Image(http://galaxy.u-aizu.ac.jp/comparch2014/image/CUbench1.png, 800)]] 
     122 
     123== 課題3 == 
     124LW命令とADDI命令の場合に、例題を参考にテストベンチファイルを作成して、 
     125シミュレーションを行い、実行波形を確認してください。 
     126それぞれの場合、実行までに何サイクル必要かを考えること。