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


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

--

Legend:

Unmodified
Added
Removed
Modified
  • Ex08課題2016

    v1 v2  
    11トップ: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命令を実行した時に、どのデータパスが利用されるかを示します。 
    19 ORI命令では、状態は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 および制御部からの信号には番号をつけていません。 
    28 ALUの入力は多くの状態で使用されるので番号を省略しています。 
    29 ただし、状態1においてPCからマルチプレクサ、ALUを経由してALUOutおよび命令レジスタから符号拡張、2bitシフト、 
    30 ALUを経由してALUOutまでのパスには1をつけています。 
    31  
    32 =  制御部の設計(1) = 
    33 制御部モジュールのテンプレートは以下のようになります。 
    34  
    35 {{{ 
    36 module 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  
    83 endmodule // ControlUnit 
    84 }}} 
    85  
    86 入力信号はOpとCK(クロック信号)とCLR(リセット信号)で、その他は出力になります。 
    87 Op信号は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 {{{ 
    113 ncverilog 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 == 
    124 LW命令とADDI命令の場合に、例題を参考にテストベンチファイルを作成して、 
    125 シミュレーションを行い、実行波形を確認してください。 
    126 それぞれの場合、実行までに何サイクル必要かを考えること。