ステートおよび命令コードの定義


KITE-1 マイクロプロセッサが取りうる状態を定義しましょう。KITE-1マイク ロプロセッサは以下のような状態遷移を取りながら命令を実行します。

ステート(E1)以降は、命令によって取りうる状態が異なります。以下のように 記述することで、文字列で状態を取り扱うことができます。


//
// State
//
`define HALTING 8'b00000000	// HALT
`define V0      8'b00000001	// RESET
`define V1      8'b00000011	// Vector Start
`define V2      8'b00000111
`define F1      8'b00001111	// Instruction Fetch
`define F2      8'b00001110
`define F3      8'b00001100
`define DEC     8'b00001000	// Decode

`define LDD_1   8'b00010000	// Load Direct
`define LDD_2   8'b00010001
`define LDD_3   8'b00010011

`define STD_1   8'b00010111	// Store Direct
`define STD_2   8'b00011111
`define STD_3   8'b00011110
`define STD_4   8'b00011100
   ......

このように、命令実行のために必要な状態を全て定義します。各状態値の値は この例では8ビットでグレイコードもどきにしてあります。状態値は必要に応 じてバイナリカウンタにしたり、One Hot タイプにしたりすることも可能です。 "state.v" のようなファイル名でセーブし include を用いて参照すれば良い でしょう。
実行フェーズ表は以下を参照して下さい。
1バス構成の実行フェーズ表
3バス構成の実行フェーズ表


次にオペレーションコードの定義を行います。この記述を行っておくと、命令 の識別を0と1の並びでなく文字列として扱えるので便利です。記述例を以下 に示します。"opcode.v" の様なファイル名でセーブし include で参照すれば 良いでしょう。


//
// Instruction Code
//
`define OP_4      IR[15:12]	// 4 bits OP codes Field
`define IR_LDD    4'b0000
`define IR_STD    4'b0001
   ......
`define IR_JPV    4'b0111

`define OP_6      IR[15:10]	// 6 bits OP codes Field
`define IR_ADD    6'b100000
   ......
`define IR_NOP    6'b111111

`define OP_M      IR[9:8]	// Addressing Modes Field
`define IMM       2'b01
`define IDX       2'b10

`define OP_A      IR[13:10]	// ALU Code Field

`define OP_D      IR[3:2]	// Destination Register Field
`define OP_S      IR[1:0]	// Source Register Field
`define RD_ACC    2'b00		// Register Code
`define RD_SP     2'b01
`define RD_IXR    2'b10
`define RD_PC     2'b11

各命令とオペレーションコードとの対応はこち らを参照して下さい。


次は、 ステートの記述 についてみていきます。


| Back | CAD Home |

My mail address is kuga@cs.kumamoto-u.ac.jp .
Last modified on