-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdefineOperator.v
186 lines (168 loc) · 4.44 KB
/
defineOperator.v
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
`timescale 1ns / 1ps
//////////////////////////////////////////////////////////////////////////////////
// Company:
// Engineer:
//
// Create Date: 19:48:05 12/04/2015
// Design Name:
// Module Name: defineOperator
// Project Name:
// Target Devices:
// Tool versions:
// Description:
//
// Dependencies:
//
// Revision:
// Revision 0.01 - File Created
// Additional Comments:
//
//////////////////////////////////////////////////////////////////////////////////
/* operator */
// Ö¸ÁîÂë
`define OP_ORI 6'b001101
`define OP_ANDI 6'b001100
`define OP_XORI 6'b001110
`define OP_LUI 6'b001111
`define OP_SPECIAL 6'b000000
`define OP_SPECIAL2 6'b011100
`define OP_ADDI 6'b001000
`define OP_ADDIU 6'b001001
`define OP_SLTI 6'b001010
`define OP_SLTIU 6'b001011
`define OP_J 6'b000010
`define OP_JAL 6'b000011
`define OP_BEQ 6'b000100
`define OP_BGTZ 6'b000111
`define OP_BLEZ 6'b000110
`define OP_BNE 6'b000101
`define OP_LB 6'b100000
`define OP_LBU 6'b100100
`define OP_LH 6'b100001
`define OP_LHU 6'b100101
`define OP_LW 6'b100011
`define OP_SB 6'b101000
`define OP_SH 6'b101001
`define OP_SW 6'b101011
`define OP_LWL 6'b100010
`define OP_LWR 6'b100110
`define OP_SWL 6'b101010
`define OP_SWR 6'b101110
`define OP_REGIMM 6'b000001
//¹¦ÄÜÂë
//000000
`define OP_AND 6'b100100
`define OP_OR 6'b100101
`define OP_XOR 6'b100110
`define OP_NOR 6'b100111
`define OP_SRL 6'b000010
`define OP_SRA 6'b000011
`define OP_SLLV 6'b000100
`define OP_SRLV 6'b000110
`define OP_SRAV 6'b000111
`define OP_SYNC 6'b001111
`define OP_SLL 6'b000000
`define OP_NOP 6'b000000
`define OP_SSNOP 6'b000000
`define OP_MOVN 6'b001011
`define OP_MOVZ 6'b001010
`define OP_MFHI 6'b010000
`define OP_MFLO 6'b010010
`define OP_MTHI 6'b010001
`define OP_MTLO 6'b010011
`define OP_ADD 6'b100000
`define OP_ADDU 6'b100001
`define OP_SUB 6'b100010
`define OP_SUBU 6'b100011
`define OP_SLT 6'b101010
`define OP_SLTU 6'b101011
`define OP_MULT 6'b011000
`define OP_MULTU 6'b011001
`define OP_JR 6'b001000
`define OP_JALR 6'b001001
//011100
`define OP_CLZ 6'b100000
`define OP_CLO 6'b100001
`define OP_MUL 6'b000010
//10_6
`define OP_NOP10_6 5'b00000
`define OP_SSNOP10_6 5'b00001
//20_16
`define OP_BLTZ 5'b00000
`define OP_BLTZAL 5'b10000
`define OP_BGEZ 5'b00001
`define OP_BGEZAL 5'b10001
/* aluop */
`define ALUOP_AND 8'b0010_0100
`define ALUOP_OR 8'b0010_0101
`define ALUOP_XOR 8'b0010_0110
`define ALUOP_NOR 8'b0010_0111
`define ALUOP_ANDI 8'b0101_1001
`define ALUOP_ORI 8'b0101_1010
`define ALUOP_XORI 8'b0101_1011
`define ALUOP_LUI 8'b0101_1100
`define ALUOP_SLL 8'b0111_1100
`define ALUOP_SLLV 8'b0000_0100
`define ALUOP_SRL 8'b0000_0010
`define ALUOP_SRLV 8'b0000_0110
`define ALUOP_SRA 8'b0000_0011
`define ALUOP_SRAV 8'b0000_0111
`define ALUOP_MOVZ 8'b00001010
`define ALUOP_MOVN 8'b00001011
`define ALUOP_MFHI 8'b00010000
`define ALUOP_MTHI 8'b00010001
`define ALUOP_MFLO 8'b00010010
`define ALUOP_MTLO 8'b00010011
`define ALUOP_SLT 8'b00101010
`define ALUOP_SLTU 8'b00101011
`define ALUOP_SLTI 8'b01010111
`define ALUOP_SLTIU 8'b01011000
`define ALUOP_ADD 8'b00100000
`define ALUOP_ADDU 8'b00100001
`define ALUOP_SUB 8'b00100010
`define ALUOP_SUBU 8'b00100011
`define ALUOP_ADDI 8'b01010101
`define ALUOP_ADDIU 8'b01010110
`define ALUOP_CLZ 8'b10110000
`define ALUOP_CLO 8'b10110001
`define ALUOP_MULT 8'b00011000
`define ALUOP_MULTU 8'b00011001
`define ALUOP_MUL 8'b10101001
`define ALUOP_J 8'b01001111
`define ALUOP_JAL 8'b01010000
`define ALUOP_JALR 8'b00001001
`define ALUOP_JR 8'b00001000
`define ALUOP_BEQ 8'b01010001
`define ALUOP_BGEZ 8'b01000001
`define ALUOP_BGEZAL 8'b01001011
`define ALUOP_BGTZ 8'b01010100
`define ALUOP_BLEZ 8'b01010011
`define ALUOP_BLTZ 8'b01000000
`define ALUOP_BLTZAL 8'b01001010
`define ALUOP_BNE 8'b01010010
`define ALUOP_LB 8'b11100000
`define ALUOP_LBU 8'b11100100
`define ALUOP_LH 8'b11100001
`define ALUOP_LHU 8'b11100101
`define ALUOP_LL 8'b11110000
`define ALUOP_LW 8'b11100011
`define ALUOP_LWL 8'b11100010
`define ALUOP_LWR 8'b11100110
`define ALUOP_PREF 8'b11110011
`define ALUOP_SB 8'b11101000
`define ALUOP_SC 8'b11111000
`define ALUOP_SH 8'b11101001
`define ALUOP_SW 8'b11101011
`define ALUOP_SWL 8'b11101010
`define ALUOP_SWR 8'b11101110
`define ALUOP_SYNC 8'b00001111
`define ALUOP_NOP 8'b0000_0000
/* alusel */
`define ALUSEL_LOGIC 3'b001
`define ALUSEL_SHIFT 3'b010
`define ALUSEL_MOVE 3'b011
`define ALUSEL_ARCH 3'b100
`define ALUSEL_MUL 3'b101
`define ALUSEL_JUMP_BRANCH 3'b110
`define ALUSEL_SL 3'b111
`define ALUSEL_NOP 3'b000