summaryrefslogtreecommitdiff
path: root/rtl/legacy_gfx/gfx_setup_edge.sv
diff options
context:
space:
mode:
Diffstat (limited to 'rtl/legacy_gfx/gfx_setup_edge.sv')
-rw-r--r--rtl/legacy_gfx/gfx_setup_edge.sv53
1 files changed, 53 insertions, 0 deletions
diff --git a/rtl/legacy_gfx/gfx_setup_edge.sv b/rtl/legacy_gfx/gfx_setup_edge.sv
new file mode 100644
index 0000000..5d69a88
--- /dev/null
+++ b/rtl/legacy_gfx/gfx_setup_edge.sv
@@ -0,0 +1,53 @@
+`include "gfx/gfx_defs.sv"
+
+module gfx_setup_edge
+(
+ input logic clk,
+
+ input raster_xy p,
+ q,
+ origin,
+ input logic stall,
+
+ output fixed base,
+ inc_x,
+ inc_y
+);
+
+ fixed delta_x, delta_y, hold_inc_x, hold_inc_y;
+
+ gfx_pipes #(.WIDTH($bits(inc_x)), .DEPTH(`FIXED_FMA_DOT_STAGES)) inc_x_pipes
+ (
+ .in(hold_inc_x),
+ .out(inc_x),
+ .*
+ );
+
+ gfx_pipes #(.WIDTH($bits(inc_y)), .DEPTH(`FIXED_FMA_DOT_STAGES)) inc_y_pipes
+ (
+ .in(hold_inc_y),
+ .out(inc_y),
+ .*
+ );
+
+ gfx_fixed_fma_dot edge_base
+ (
+ .c(0),
+ .q(base),
+ .a0(delta_x),
+ .b0(hold_inc_x),
+ .a1(delta_y),
+ .b1(hold_inc_y),
+ .*
+ );
+
+ always_ff @(posedge clk)
+ if (!stall) begin
+ delta_x <= origin.x - q.x;
+ delta_y <= origin.y - q.y;
+
+ hold_inc_x <= p.y - q.y;
+ hold_inc_y <= q.x - p.x;
+ end
+
+endmodule