diff options
Diffstat (limited to 'rtl/gfx/gfx_rop.sv')
| -rw-r--r-- | rtl/gfx/gfx_rop.sv | 85 |
1 files changed, 0 insertions, 85 deletions
diff --git a/rtl/gfx/gfx_rop.sv b/rtl/gfx/gfx_rop.sv deleted file mode 100644 index 3e6ef35..0000000 --- a/rtl/gfx/gfx_rop.sv +++ /dev/null @@ -1,85 +0,0 @@ -`include "gfx/gfx_defs.sv" - -module gfx_rop -( - input logic clk, - rst_n, - - input vram_addr frag_base, - - input frag_paint in, - input logic in_valid, - output logic in_ready, - - input logic rop_waitrequest, - output logic rop_write, - output vram_word rop_writedata, - output vram_addr rop_address, - - output linear_coord mask_addr, - output logic mask_assert -); - - enum int unsigned - { - IDLE, - WRITE_LO, - WRITE_HI - } state; - - logic hi; - vram_word color_hi, color_lo; - frag_paint hold; - - assign {color_hi, color_lo} = hold.color; - - assign mask_addr = hold.addr; - assign rop_address = frag_base + {5'd0, hold.addr, hi}; - assign rop_writedata = hi ? color_hi : color_lo; - - always_comb begin - hi = 1'bx; - in_ready = 0; - rop_write = 0; - mask_assert = 0; - - unique case (state) - IDLE: - in_ready = 1; - - WRITE_LO: begin - hi = 0; - rop_write = 1; - mask_assert = 1; - end - - WRITE_HI: begin - hi = 1; - in_ready = !rop_waitrequest; - rop_write = 1; - end - endcase - end - - always_ff @(posedge clk or negedge rst_n) - if (!rst_n) - state <= IDLE; - else unique case (state) - IDLE: - if (in_valid) - state <= WRITE_LO; - - WRITE_LO: - if (!rop_waitrequest) - state <= WRITE_HI; - - WRITE_HI: - if (!rop_waitrequest) - state <= in_valid ? WRITE_LO : IDLE; - endcase - - always_ff @(posedge clk) - if (in_ready) - hold <= in; - -endmodule |
