制御信号生成の記述例


制御信号の記述方法について、LD即値 (LD Imm.) および LDインデクス修飾 (LD Indexed)命令を例として簡単に説明します。

LD即値(LD Imm.)命令の場合、3バス構成の実行フェーズ表でフェーズ1(`LDI_1)が
  Acc <- IR
となっています。つまり、IR(命令レジスタ)の値をAcc(アキュムレータ)へ 転送する訳ですが、この部分を Verilog HDL ソースでは、
    //
    // LD Imm.
    //
    `LDI_1 : begin IR_R8P1<=1; ACC_W<=1; ICS<=1; end
と記述しています。KITEマイクロプロセッサの3バス構成図と対応させると、 IR_R8P1<=1 によりIRの内容をデータバス1へ出力し(4ビットopコードを持つ直 接アドレッシングの命令場合はIR_R12を使う)、ALU の左オペランドをスルーし て(ALUのデフォルトはパス演算(IPAS))、ACC_W<=1によりACCに書き込まれま す。
なお、命令の最後のサイクルであることを示すために ICS<=1 を出力します。

また、LDインデックス修飾(LD Indexed)命令の場合は、3バス実行フェーズ表で、
 フェーズ1:ALU <- IXR, ALU <- IR, AR <- ALU
 フェーズ2:Mem <- MREQ
 フェーズ3:Acc <- Mem, Mem <-MREQ
となっています。この部分をVerilog HDLソースでは
    //
    // LD index
    //
    `LDX_1 :
      begin
        IXR_R<=1; AR_W1<=1;
        IR_R8P2 <= !SIGN;
	IR_R8M2 <=  SIGN;
        ALU <= `IADD;
      end
    `LDX_2 :       MREQ<=1; 
    `LDX_3 : begin MREQ<=1; ACC_W<=1; DBI1<=1; ICS<=1; end
と記述しています。
3バス構成図と対応させると、フェーズ1(LDX_1)では、IXR_R<=1によりIXRの 内容をデータバス1へ出力し、R_R8P2 <= !SIGN または IR_R8M2 <= SIGN; によっ てIRの下位8ビットの内容を16ビットに符号拡張したディスプレースメントとし てデータバス2へ出力しています。ALU の演算は、ALU <= `IADD により加算と なっておりIXRとIR内のディスプレースメントの内容が加算され、その結果は AR_W1<=1 によりARへ書き込まれまれ、AR の内容がアドレスとしてメモリへ出力 されます。

フェーズ2(LDX_2)では、AR で示されているアドレス内に保存されているデー タを読み出すための要求を MREQ<=1 として出力します。

 フェーズ3(LDX_3)では、LDX_2から続く MREQ<=1 の要求により、メモリの 内容が外部データバスに出力されています。メモリの内容を DBI1<=1 として内 部データバス1に取り込み、ALUの左オペランドを通じて ACC_W<=1 によりACCへ 書き込みます。

 以上の例を参考にして、他の制御信号の部分を記述してください。


もどる
| CAD Home |