summaryrefslogtreecommitdiff
path: root/rtl/core/arm810.sv
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2022-11-06 12:22:37 -0600
committerAlejandro Soto <alejandro@34project.org>2022-11-06 12:34:25 -0600
commit044d2d73f0fbe6e1e42934f01b0f339776881b55 (patch)
tree358703da80e67f09e8d7824b35af13accaaa676f /rtl/core/arm810.sv
parentff5f2a94c06ce3af9cc04033220dcd0f6c8826e3 (diff)
Add multiplier unit
Diffstat (limited to 'rtl/core/arm810.sv')
-rw-r--r--rtl/core/arm810.sv22
1 files changed, 20 insertions, 2 deletions
diff --git a/rtl/core/arm810.sv b/rtl/core/arm810.sv
index 3bc2769..b3dd92e 100644
--- a/rtl/core/arm810.sv
+++ b/rtl/core/arm810.sv
@@ -125,9 +125,27 @@ module arm810
.c(c_shifter)
);
- //TODO
logic mul, mul_add, mul_long, mul_signed, mul_ready;
- assign mul_ready = 1;
+ word mul_a, mul_b, mul_c_hi, mul_c_lo, mul_q_hi, mul_q_lo;
+ psr_flags mul_flags;
+
+ core_mul mult
+ (
+ .a(mul_a),
+ .b(mul_b),
+ .c_hi(mul_c_hi),
+ .c_lo(mul_c_lo),
+ .long_mul(mul_long),
+ .add(mul_add),
+ .sig(mul_signed),
+ .start(mul),
+ .q_hi(mul_q_hi),
+ .q_lo(mul_q_lo),
+ .n(mul_flags.n),
+ .z(mul_flags.z),
+ .ready(mul_ready),
+ .*
+ );
ptr data_addr;
logic data_start, data_write, data_ready, insn_ready;