ステート(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 ......
次にオペレーションコードの定義を行います。この記述を行っておくと、命令 の識別を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
次は、 ステートの記述 についてみていきます。
My mail address is
kuga@cs.kumamoto-u.ac.jp .
Last modified on