summaryrefslogtreecommitdiff
path: root/rtl/legacy_gfx/gfx_mask_sram.sv
blob: 730ee12af444b2e820f3a5c6fb300581c77062eb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
`include "gfx/gfx_defs.sv"

module gfx_mask_sram
(
	input  logic        clk,

	input  logic        set,
	                    write,
	input  linear_coord write_addr,
	                    read_addr,
	output logic        mask
);

	logic mem[`GFX_LINEAR_RES];
	logic mask_hold, write_hold, set_hold;
	linear_coord read_addr_hold, write_addr_hold;

	always_ff @(posedge clk) begin
		mask <= mask_hold;
		mask_hold <= mem[read_addr_hold];
		read_addr_hold <= read_addr;

		set_hold <= set;
		write_hold <= write;
		write_addr_hold <= write_addr;

		if (write_hold)
			mem[write_addr_hold] <= set_hold;
	end

endmodule