-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathdecode_op_code.v
22 lines (15 loc) · 1.32 KB
/
decode_op_code.v
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
module decode_op_code (is_alu, is_addi, is_sw, is_lw, is_j, is_bne, is_jal, is_jr, is_blt, is_bex, is_setx, opcode);
input [4:0] opcode;
output is_alu, is_addi, is_sw, is_lw, is_j, is_bne, is_jal, is_jr, is_blt, is_bex, is_setx;
assign is_alu = (~opcode[4]) & (~opcode[3]) & (~opcode[2]) & (~opcode[1]) & (~opcode[0]); //00000
assign is_addi = (~opcode[4]) & (~opcode[3]) & opcode[2] & (~opcode[1]) & opcode[0]; //00101
assign is_sw = (~opcode[4]) & (~opcode[3]) & opcode[2] & opcode[1] & opcode[0]; //00111
assign is_lw = (~opcode[4]) & opcode[3] & (~opcode[2]) & (~opcode[1]) & (~opcode[0]); //01000
assign is_j = (~opcode[4]) & (~opcode[3]) & (~opcode[2]) & (~opcode[1]) & opcode[0]; //00001
assign is_bne = (~opcode[4]) & (~opcode[3]) & (~opcode[2]) & opcode[1] & (~opcode[0]); //00010
assign is_jal = (~opcode[4]) & (~opcode[3]) & (~opcode[2]) & opcode[1] & opcode[0]; //00011
assign is_jr = (~opcode[4]) & (~opcode[3]) & (opcode[2]) & ~opcode[1] & (~opcode[0]); //00100
assign is_blt = (~opcode[4]) & (~opcode[3]) & (opcode[2]) & opcode[1] & (~opcode[0]); //00110
assign is_bex = (opcode[4]) & (~opcode[3]) & (opcode[2]) & opcode[1] & (~opcode[0]); //10110
assign is_setx = (opcode[4]) & (~opcode[3]) & (opcode[2]) & ~opcode[1] & (opcode[0]); //10101
endmodule