diff --git a/gl/gl_mgr.sv b/gl/gl_mgr.sv index 6dbc9d027a4147fb5455eafe1c2f68a6cfe5ede5..73f6eaa1def2b390ee7764065a4f7888fe0449f0 100644 --- a/gl/gl_mgr.sv +++ b/gl/gl_mgr.sv @@ -106,8 +106,11 @@ module gl_mgr ( // Paint Write logic fb_PAINT_REQ; logic [9:0] fb_PAINT_X, fb_PAINT_Y; + logic [9:0] fb_PAINT_X_san, fb_PAINT_Y_san; logic [15:0] fb_PAINT_RGB16; logic fb_PAINT_READY; + assign fb_PAINT_X_san = (fb_PAINT_X>10'd639) ? 10'd639 : fb_PAINT_X; + assign fb_PAINT_Y_san = (fb_PAINT_Y>10'd479) ? 10'd479 : fb_PAINT_Y; gl_frame_buffer frame_buffer( .CLK (CLOCK), .RESET (RESET), @@ -122,8 +125,8 @@ module gl_mgr ( .GL_DATA (fb_GL_RGB), .GL_READY (fb_GL_READY), .PAINT_REQ (fb_PAINT_REQ), - .PAINT_X (fb_PAINT_X), - .PAINT_Y (fb_PAINT_Y), + .PAINT_X (fb_PAINT_X_san), + .PAINT_Y (fb_PAINT_Y_san), .PAINT_RGB16 (fb_PAINT_RGB16), .PAINT_READY (fb_PAINT_READY), .BUF_ACTIVE (paint_buffer), diff --git a/gl/painters/gl_painter_circle.sv b/gl/painters/gl_painter_circle.sv index 408c37c07090c953e76392c96ccd076419cbc3d7..214025cdc7c619a74cfba2da2c241e87be18b608 100644 --- a/gl/painters/gl_painter_circle.sv +++ b/gl/painters/gl_painter_circle.sv @@ -37,6 +37,7 @@ module gl_painter_circle ( assign fb_PAINT_RGB16 = color; assign RC_ADDR = {fb_PAINT_X, fb_PAINT_Y[8:0], PAINT_BUFFER}; assign RC_DATA_WR = 1'b1; + assign RC_WE = fb_PAINT_REQ; always_ff @(posedge CLOCK) begin if(RESET | ~EN) begin @@ -72,7 +73,6 @@ module gl_painter_circle ( xlen_in = xlen; color_in = color; DONE = 1'b0; - RC_WE = 1'b0; paint_req_in = 1'b0; case (state) @@ -88,7 +88,6 @@ module gl_painter_circle ( s_axis: begin paint_req_in = 1'b1; - RC_WE = 1'b1; if(fb_PAINT_READY) begin // Value written, move to next pixel x_in = x + 1; @@ -127,7 +126,6 @@ module gl_painter_circle ( s_paint: begin paint_req_in = 1'b1; - RC_WE = 1'b1; if(fb_PAINT_READY) begin // Value written, move to next pixel x_in = x + 1; diff --git a/gl/painters/gl_painter_image.sv b/gl/painters/gl_painter_image.sv index 61a585201b6aaed94b7101642ee5f860bb3d6bb0..a7d53d27dd6654c5d1195689ea502fbe08547550 100644 --- a/gl/painters/gl_painter_image.sv +++ b/gl/painters/gl_painter_image.sv @@ -50,6 +50,7 @@ module gl_painter_image ( assign RC_ADDR = {fb_PAINT_X, fb_PAINT_Y[8:0], PAINT_BUFFER}; assign RC_DATA_WR = 1'b1; + assign RC_WE = fb_PAINT_REQ; assign fb_GL_ADDR = img_ptr; @@ -84,7 +85,6 @@ module gl_painter_image ( color_in = color; i_in = i; DONE = 1'b0; - RC_WE = 1'b0; paint_req_in = 1'b0; read_req_in = 1'b0; img_ptr_in = img_ptr; @@ -132,7 +132,6 @@ module gl_painter_image ( s_paint: begin paint_req_in = 1'b1; - RC_WE = 1'b1; if(fb_PAINT_READY) begin // Value written, move to next location i_in = i + 1; diff --git a/gl/painters/gl_painter_polygon.sv b/gl/painters/gl_painter_polygon.sv index 9647b64733d36e4f52cef2d59316b4c14a2433e2..a9b50a1deb3ef50b483443f3da5aab5d74c3c251 100644 --- a/gl/painters/gl_painter_polygon.sv +++ b/gl/painters/gl_painter_polygon.sv @@ -35,8 +35,10 @@ module gl_painter_polygon ( assign fb_PAINT_RGB16 = C0; assign fb_PAINT_X = x; assign fb_PAINT_Y = y; + assign RC_ADDR = {fb_PAINT_X, fb_PAINT_Y[8:0], PAINT_BUFFER}; assign RC_DATA_WR = 1'b1; + assign RC_WE = fb_PAINT_REQ; // Inclined line scanner instances logic [9:0] l_x1, l_y1, l_x2, l_y2, r_x1, r_y1, r_x2, r_y2; @@ -81,7 +83,6 @@ module gl_painter_polygon ( y_in = y; xbeg_in = xbeg; DONE = 1'b0; - RC_WE = 1'b0; paint_req_in = 1'b0; l_lim_in = l_lim; r_lim_in = r_lim; @@ -96,7 +97,6 @@ module gl_painter_polygon ( s_scan_left: begin paint_req_in = 1'b1; - RC_WE = 1'b1; if(fb_PAINT_READY) begin // Value written, move to next pixel x_in = x - 1; @@ -111,7 +111,6 @@ module gl_painter_polygon ( s_scan_right: begin paint_req_in = 1'b1; - RC_WE = 1'b1; if(fb_PAINT_READY) begin // Value written, move to next pixel x_in = x + 1; diff --git a/gl/painters/gl_painter_rect.sv b/gl/painters/gl_painter_rect.sv index 6f0288b5a32ebe69a2fb95f247af4e0799bd8df2..d545eb43fbd365eb6d1fa0e35857a649c31269d3 100644 --- a/gl/painters/gl_painter_rect.sv +++ b/gl/painters/gl_painter_rect.sv @@ -36,8 +36,10 @@ module gl_painter_rect ( assign fb_PAINT_X = x; assign fb_PAINT_Y = y; assign fb_PAINT_RGB16 = color; + assign RC_ADDR = {x, y[8:0], PAINT_BUFFER}; assign RC_DATA_WR = 1'b1; + assign RC_WE = fb_PAINT_REQ; always_ff @(posedge CLOCK) begin if(RESET | ~EN) begin @@ -63,7 +65,6 @@ module gl_painter_rect ( y_in = y; color_in = color; DONE = 1'b0; - RC_WE = 1'b0; paint_req_in = 1'b0; case (state) @@ -76,7 +77,6 @@ module gl_painter_rect ( end s_paint: begin paint_req_in = 1'b1; - RC_WE = 1'b1; if(fb_PAINT_READY) begin // Value written, move to next pixel y_in = y + 1; diff --git a/gl/painters/gl_painter_ring.sv b/gl/painters/gl_painter_ring.sv index bccb30da215e25d4739de10ba5281a614112bf24..10c586e9eee67ea29c5bda533e6cb3cfea091633 100644 --- a/gl/painters/gl_painter_ring.sv +++ b/gl/painters/gl_painter_ring.sv @@ -33,8 +33,10 @@ module gl_painter_ring ( logic[2:0] quadrant, quadrant_in; assign fb_PAINT_RGB16 = CSTROKE; + assign RC_ADDR = {fb_PAINT_X, fb_PAINT_Y[8:0], PAINT_BUFFER}; assign RC_DATA_WR = 1'b1; + assign RC_WE = fb_PAINT_REQ; always_ff @(posedge CLOCK) begin if(RESET | ~EN) begin @@ -67,7 +69,6 @@ module gl_painter_ring ( y_in = y; xlen_in = xlen; DONE = 1'b0; - RC_WE = 1'b0; paint_req_in = 1'b0; case (state) @@ -82,7 +83,6 @@ module gl_painter_ring ( s_axis: begin paint_req_in = 1'b1; - RC_WE = 1'b1; if(fb_PAINT_READY) begin // Value written, move to next pixel x_in = x + 1; @@ -117,7 +117,6 @@ module gl_painter_ring ( s_paint: begin paint_req_in = 1'b1; - RC_WE = 1'b1; if(fb_PAINT_READY) begin // Value written, move to next pixel x_in = x + 1;