diff options
| author | Alejandro Soto <alejandro@34project.org> | 2024-03-14 23:05:08 -0600 |
|---|---|---|
| committer | Alejandro Soto <alejandro@34project.org> | 2024-03-14 23:05:08 -0600 |
| commit | eb49b6d871825eaea4e93d47a4368df368b7101a (patch) | |
| tree | 1621ca431325af0f70a5b193e3c2926e5b07c174 /platform/wavelet3d/gfx_fixed_dotadd.sv | |
| parent | 2034e0a7bc2099e43739dc9f47b25369051307c6 (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.sv | 55 |
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 |
