From d8fdb26a5f226a2d71efd251de9b19d6103fc978 Mon Sep 17 00:00:00 2001 From: Tomek Malesinski Date: Sat, 23 Aug 2008 22:01:10 +0200 Subject: [PATCH] Memory refresh --- antic.v | 22 ++++++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/antic.v b/antic.v index 0c5d2c6..11f9ae1 100644 --- a/antic.v +++ b/antic.v @@ -281,6 +281,9 @@ module antic(rst_i, clk_i, wire load_pf; wire load_char; + reg refresh_req; + reg refresh_ack; + wire [1:0] dma_ply_num; wire load_out_p, load_out; @@ -678,12 +681,20 @@ module antic(rst_i, clk_i, antic_out = 3'b000; end + always @ (posedge clk_i) + if (hcount >= 50 && hcount <= 82 && (hcount & 7) == 2) + refresh_req <= 1; + else if (refresh_ack) + refresh_req <= 0; + assign chr_dcount = dcount ^ {4{chactl[2]}}; always @ (dl_load or dlist_ctr or load_mis or load_ply or pmbase or vcount or dma_ply_num or load_pf or memscan_ctr or - load_char or chbase or shift_reg_out or dcount) begin + load_char or chbase or shift_reg_out or dcount or + refresh_req) begin + refresh_ack = 0; if (dl_load) adr_o = dlist_ctr; else if (load_mis) @@ -705,12 +716,15 @@ module antic(rst_i, clk_i, 6: adr_o = {chbase[6:0], shift_reg_out[5:0], chr_dcount[2:0]}; 7: adr_o = {chbase[6:0], shift_reg_out[5:0], chr_dcount[3:1]}; endcase - else - adr_o = 0; // TODO: load some pointer by default + else if (refresh_req) begin + refresh_ack = 1; + adr_o = memscan_ctr; + end else + adr_o = memscan_ctr; end assign stb_o = dl_load || load_mis || load_ply || load_pf || load_char || - wsync; + wsync || refresh_req; assign cyc_o = stb_o; antic_shift_reg u_shift_reg(.clk_i(clk_i), -- 2.11.4.GIT