summaryrefslogtreecommitdiff
path: root/rtl/core/decode/decode.sv
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2022-09-25 17:47:26 -0600
committerAlejandro Soto <alejandro@34project.org>2022-09-25 17:47:26 -0600
commit231f84b20e168afe36067b93bf30ed5e83f8e464 (patch)
treec7ae15abe90c263496be0c821f8ada49291b47e5 /rtl/core/decode/decode.sv
parentb5f43ef8431532b1e0b498a88072fdfd2cf81ac9 (diff)
Implement ALU opcode decoding
Diffstat (limited to 'rtl/core/decode/decode.sv')
-rw-r--r--rtl/core/decode/decode.sv8
1 files changed, 6 insertions, 2 deletions
diff --git a/rtl/core/decode/decode.sv b/rtl/core/decode/decode.sv
index f173529..57744e1 100644
--- a/rtl/core/decode/decode.sv
+++ b/rtl/core/decode/decode.sv
@@ -12,7 +12,8 @@ module core_decode
writeback,
branch,
output ptr branch_offset,
- output reg_num rd
+ output reg_num rd,
+ output alu_op data_op
);
logic cond_undefined;
@@ -35,15 +36,16 @@ module core_decode
);
//TODO
- alu_op op;
reg_num rn;
logic update_flags, restore_spsr, zero_fst, negate_fst, negate_snd, carry_in;
logic data_writeback;
reg_num data_rd;
+ alu_op data_group_op;
core_decode_data group_data
(
+ .op(data_group_op),
.rd(data_rd),
.writeback(data_writeback),
.*
@@ -55,6 +57,7 @@ module core_decode
branch = 0;
writeback = 0;
rd = 4'bxxxx;
+ data_op = 4'bxxxx;
priority case(insn `FIELD_OP) inside
`GROUP_B: begin
@@ -69,6 +72,7 @@ module core_decode
`GROUP_ALU: begin
rd = data_rd;
writeback = data_writeback;
+ data_op = data_group_op;
end
`INSN_MUL: ;