summaryrefslogtreecommitdiff
path: root/platform/wavelet3d/gfx_fixed_dotadd.sv
diff options
context:
space:
mode:
authorAlejandro Soto <alejandro@34project.org>2024-03-14 23:05:08 -0600
committerAlejandro Soto <alejandro@34project.org>2024-03-14 23:05:08 -0600
commiteb49b6d871825eaea4e93d47a4368df368b7101a (patch)
tree1621ca431325af0f70a5b193e3c2926e5b07c174 /platform/wavelet3d/gfx_fixed_dotadd.sv
parent2034e0a7bc2099e43739dc9f47b25369051307c6 (diff)
platform/wavelet3d: implement fixed-point multiply-add and dot-add
Diffstat (limited to 'platform/wavelet3d/gfx_fixed_dotadd.sv')
-rw-r--r--platform/wavelet3d/gfx_fixed_dotadd.sv55
1 files changed, 55 insertions, 0 deletions
diff --git a/platform/wavelet3d/gfx_fixed_dotadd.sv b/platform/wavelet3d/gfx_fixed_dotadd.sv
new file mode 100644
index 0000000..fdd5ffd
--- /dev/null
+++ b/platform/wavelet3d/gfx_fixed_dotadd.sv
@@ -0,0 +1,55 @@
+module gfx_fixed_dotadd
+(
+ input logic clk,
+
+ input gfx::fixed a0,
+ b0,
+ a1,
+ b1,
+ c,
+ input logic stall,
+
+ output gfx::fixed q
+);
+
+ import gfx::*;
+
+ fixed q0, a1_hold, b1_hold;
+
+ gfx_fixed_muladd muladd_0
+ (
+ .clk,
+ .a(a0),
+ .b(b0),
+ .c,
+ .q(q0),
+ .stall
+ );
+
+ gfx_pipes #(.WIDTH($bits(fixed)), .DEPTH(FIXED_MULADD_DEPTH)) a_pipes
+ (
+ .clk,
+ .in(a1),
+ .out(a1_hold),
+ .stall
+ );
+
+ gfx_pipes #(.WIDTH($bits(fixed)), .DEPTH(FIXED_MULADD_DEPTH)) b_pipes
+ (
+ .clk,
+ .in(b1),
+ .out(b1_hold),
+ .stall
+ );
+
+ gfx_fixed_muladd muladd_1
+ (
+ .clk,
+ .a(a1_hold),
+ .b(b1_hold),
+ .c(q0),
+ .q,
+ .stall
+ );
+
+endmodule