28 lines
532 B
Systemverilog
28 lines
532 B
Systemverilog
module ppu (
|
|
input logic clk,
|
|
input logic nreset,
|
|
|
|
input logic [15:0] cpu_addr_i,
|
|
output logic [ 7:0] cpu_rdata_o,
|
|
input logic cpu_we_i,
|
|
input logic [ 7:0] cpu_wdata_i
|
|
);
|
|
|
|
logic ly_sel;
|
|
logic [ 7:0] ly_r;
|
|
logic ly_we;
|
|
|
|
assign ly_sel = (cpu_addr_i == 16'hFF44);
|
|
assign ly_we = ly_sel & cpu_we_i;
|
|
|
|
always_ff @(posedge clk or negedge nreset) begin
|
|
if (!nreset)
|
|
ly_r <= 8'h90; // vsync hack
|
|
else if (ly_we)
|
|
ly_r <= 8'h90;
|
|
end
|
|
|
|
assign cpu_rdata_o = {8{ly_sel}} & ly_r;
|
|
|
|
endmodule : ppu
|