演算種類 | 制御コード |
---|---|
加算(ADD) | 0000 |
減算(SUB) | 0001 |
インクリメント(INC) | 0010 |
デクリメント(DEC) | 0011 |
論理和(OR) | 0100 |
排他的論理和(EOR) | 0101 |
論理積(AND) | 0110 |
論理否定(NOT) | 0111 |
論理左シフト(LSL) | 1000 |
算術左シフト(ASL) | 1001 |
論理右シフト(LSR) | 1010 |
算術右シフト(ASR) | 1011 |
左回転(ROL) | 1100 |
右回転(ROR) | 1101 |
パス(PAS) | 1110 |
バイトスワップ(SWP) | 1111 |
演算のコードを `define を使用して記述します。この定義により, ソース中で 0や1 のようなビットパターンではなく任意のラベルとして演算を 参照することができます.これらの定義は "alu_op.v" ファイル中に記述しセー ブします。
`define IADD 4'b0000 `define ISUB 4'b0001 `define IINC 4'b0010 `define IDEC 4'b0011 `define IOR 4'b0100 `define IEOR 4'b0101 `define IAND 4'b0110 `define INOT 4'b0111 `define ILSL 4'b1000 `define IASL 4'b1001 `define ILSR 4'b1010 `define IASR 4'b1011 `define IROL 4'b1100 `define IROR 4'b1101 `define IPAS 4'b1110 `define ISWP 4'b1111alu.v ファイルからは alu_op.v ファイルを参照するように記述しておきます。
`include "alu_op.v" module alu (A, B, CB, S, F); ... endmodule
次は、 演算の記述 についてみていきます。