Changes between Version 3 and Version 4 of Ex08課題2016


Ignore:
Timestamp:
Jun 6, 2016 6:16:15 PM (10 years ago)
Author:
nakasato
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • Ex08課題2016

    v3 v4  
    55マルチサイクルプロセッサでは、ひとつの命令を複数のステップ(サイクル)に渡って実現します。 
    66その各ステップで利用する信号、モジュールが異なります。その動作をまとめたものが以下の状態遷移図です。 
     7この状態遷移図では状態は0から12の13状態が定義されています。 
     8各状態には、その時に出力されるべき信号名とその値が書いてあります。 
    79 
     10例えばR形式命令の場合、1サイクルごとに「0→1→6→7」と遷移することがわかります。 
     11他の命令の場合も「0→1」の遷移は共通です。状態0は命令フェッチ、状態1は命令デコード&レジスタ読み出しをおこないます。 
     12 
     13状態0では、以下の動作が同時に実施されます。 
     14 
     151、メモリから現在のPCのアドレスにある命令を読み出す。 
     162、PC+4を計算してPCを更新する。 
     17 
     18この時、MemRead信号(1bit)が"1'b1"になり(アサート)、ALUSrcA(1bit)は"1'b0"になります(ネゲート)。 
     19他の信号も同様に変化することを意味します。 
     20 
     21状態1では、以下の動作が同時に実施されます。 
     22 
     231、 
     242、 
     25 
     26==  制御部の設計(1) == 
     27制御部モジュールのテンプレートは以下のようになります。 
     28 
     29{{{ 
     30module ControlUnit(PCWriteCond, PCWrite, IorD, MemRead, MemWrite, MemtoReg, 
     31                   IRWrite, PCSource, ALUOp, ALUSrcB, ALUSrcA, 
     32                   RegWrite, RegDST, Op, CK, CLR); 
     33 
     34   // clock 
     35   input CK; 
     36   input CLR; 
     37 
     38   // opcode (6 bit) 
     39   input [5:0]  Op; 
     40 
     41   // 1 bit control signal 
     42   output PCWriteCond; 
     43   output PCWrite; 
     44   output IorD; 
     45   output MemRead; 
     46   output MemWrite; 
     47   output MemtoReg; 
     48   output IRWrite; 
     49   output RegWrite; 
     50   output RegDST; 
     51   output ALUSrcA; 
     52 
     53   // 2 bit control signal 
     54   output [1:0] PCSource; 
     55   output [1:0] ALUOp; 
     56   output [2:0] ALUSrcB; 
     57 
     58   // register declaration 
     59   reg          PCWriteCond; 
     60   reg          PCWrite; 
     61   reg          IorD; 
     62   reg          MemRead; 
     63   reg          MemWrite; 
     64   reg          MemtoReg; 
     65   reg          IRWrite; 
     66   reg [1:0]    PCSource; 
     67   reg [1:0]    ALUOp; 
     68   reg [2:0]    ALUSrcB; 
     69   reg          ALUSrcA; 
     70   reg          RegWrite; 
     71   reg          RegDST; 
     72 
     73   // state register 
     74   reg [3:0]    state; 
     75 
     76 
     77endmodule // ControlUnit 
     78}}} 
     79 
     80入力信号はOpとCK(クロック信号)とCLR(リセット信号)で、その他は出力になります。 
     81Op信号はMIPS命令コードの25-31ビットの部分です。各命令コードごとのOp信号を以下のテーブルに示します。 
     82 
     83== 命令コード == 
     84|| 命令の種類  || opcode(10進数) || 
     85|| R形式       || 0  || 
     86|| Load Word   || 35 || 
     87|| Store Word  || 43 || 
     88|| Branch on EQ|| 4  || 
     89|| ADD imm     || 8  || 
     90|| SLT imm     || 10 || 
     91|| AND imm     || 12 || 
     92|| ORI imm     || 13 || 
     93 
     94注意:R形式命令では、命令コードの0-5ビットの部分で演算の種類を指定します。 
     95 
     96== 例題 == 
     97状態遷移図から、R形式命令の実行には4サイクル必要になります。 
     98このことを、以下のファイルを使ってシミュレーションを行い確かめなさい。 
     99 
     100状態遷移のみの制御回路  
     101 
     102テストベンチファイル  
     103 
     104=== 実行例 === 
     105それぞれのファイルをダウンロードまたは保存して、以下のコマンドを実行。 
     106{{{ 
     107ncverilog CUbench_1.v 
     108}}} 
     109 
     110この状態遷移の回路では、always文の部分はCLKが上向きに変化する時に状態が遷移します。 
     111また、CLR信号が真になったら状態0になります(リセット)。 
     112そのため状態遷移を行う時にはCLR信号を適切に変化させる必要があります。 
     113 
     114=== 実行波形 === 
     115[[Image(http://galaxy.u-aizu.ac.jp/comparch2014/image/CUbench1.png, 800)]] 
     116 
     117== 課題 == 
     118LW命令とADDI命令の場合に、例題を参考にテストベンチファイルを作成して、 
     119シミュレーションを行い、実行波形を確認してください。 
     120それぞれの場合、実行までに何サイクル必要かを考えること。