From db8ae278e86142375249ebbafaf63a5f415b5f49 Mon Sep 17 00:00:00 2001 From: Tomek Malesinski Date: Thu, 21 Aug 2008 22:57:17 +0200 Subject: [PATCH] Generate out_reg_shift in ms_hcount_seq --- antic.v | 106 +++++++++++++++++++++++++++++++++++++++++++--------------------- 1 file changed, 71 insertions(+), 35 deletions(-) diff --git a/antic.v b/antic.v index 1eeb103..6d48bf6 100644 --- a/antic.v +++ b/antic.v @@ -17,10 +17,10 @@ module antic_ms_hcount_seq(ms_hcount, new_block, dma_block, dma_pf_width, ir, - shift_reg_shift, load_pf, load_out); + shift_reg_shift, load_pf, load_out, out_reg_shift); input ms_hcount; input new_block, dma_block, dma_pf_width, ir; - output shift_reg_shift, load_pf, load_out; + output shift_reg_shift, load_pf, load_out, out_reg_shift; wire [7:0] ms_hcount; wire new_block, dma_block; @@ -28,31 +28,81 @@ module antic_ms_hcount_seq(ms_hcount, wire [7:0] ir; wire shift_reg_shift; reg load_pf, load_out; + wire out_reg_shift; reg [3:0] pf_byte_mod; + reg [1:0] pf_pixel_mod; always @ (ir) case (ir[3:0]) - 'h2: pf_byte_mod = 3; - 'h3: pf_byte_mod = 3; - 'h4: pf_byte_mod = 3; - 'h5: pf_byte_mod = 3; - 'h6: pf_byte_mod = 7; - 'h7: pf_byte_mod = 7; - 'h8: pf_byte_mod = 15; - 'h9: pf_byte_mod = 15; - 'ha: pf_byte_mod = 7; - 'hb: pf_byte_mod = 7; - 'hc: pf_byte_mod = 7; - 'hd: pf_byte_mod = 3; - 'he: pf_byte_mod = 3; - 'hf: pf_byte_mod = 3; - default: pf_byte_mod = 3; + 'h2: begin + pf_byte_mod = 3; + pf_pixel_mod = 0; + end + 'h3: begin + pf_byte_mod = 3; + pf_pixel_mod = 0; + end + 'h4: begin + pf_byte_mod = 3; + pf_pixel_mod = 0; + end + 'h5: begin + pf_byte_mod = 3; + pf_pixel_mod = 0; + end + 'h6: begin + pf_byte_mod = 7; + pf_pixel_mod = 0; + end + 'h7: begin + pf_byte_mod = 7; + pf_pixel_mod = 0; + end + 'h8: begin + pf_byte_mod = 15; + pf_pixel_mod = 3; + end + 'h9: begin + pf_byte_mod = 15; + pf_pixel_mod = 1; + end + 'ha: begin + pf_byte_mod = 7; + pf_pixel_mod = 1; + end + 'hb: begin + pf_byte_mod = 7; + pf_pixel_mod = 0; + end + 'hc: begin + pf_byte_mod = 7; + pf_pixel_mod = 0; + end + 'hd: begin + pf_byte_mod = 3; + pf_pixel_mod = 0; + end + 'he: begin + pf_byte_mod = 3; + pf_pixel_mod = 0; + end + 'hf: begin + pf_byte_mod = 3; + pf_pixel_mod = 0; + end + default: begin + pf_byte_mod = 3; + pf_pixel_mod = 0; + end endcase assign shift_reg_shift = (ms_hcount >= 3) && (ms_hcount < 195) && (ms_hcount[1:0] == 3); + assign out_reg_shift = ((ms_hcount[1:0] & pf_pixel_mod) == + (2'd2 & pf_pixel_mod)); + always @ (new_block or dma_block or dma_pf_width or ms_hcount or pf_byte_mod or ir) begin load_pf = 0; @@ -195,7 +245,6 @@ module antic(rst_i, clk_i, wire dma_block; reg char_block; reg one_bit_pixel; - reg [1:0] pf_pixel_mod; reg wsync; @@ -219,6 +268,7 @@ module antic(rst_i, clk_i, wire shift_reg_shift; wire [7:0] shift_reg_out; reg [7:0] out_reg; + wire out_reg_shift; reg [1:0] char_color; assign ack_o = stb_i; @@ -388,7 +438,6 @@ module antic(rst_i, clk_i, maxline = 0; char_block = 0; one_bit_pixel = 0; - pf_pixel_mod = 0; case (ir[3:0]) 'h0: maxline = ir[6:4]; 'h1: maxline = 0; @@ -396,85 +445,71 @@ module antic(rst_i, clk_i, maxline = 7; char_block = 1; one_bit_pixel = 0; - pf_pixel_mod = 0; end 'h3: begin maxline = 9; char_block = 1; one_bit_pixel = 0; - pf_pixel_mod = 0; end 'h4: begin maxline = 7; char_block = 1; one_bit_pixel = 0; - pf_pixel_mod = 0; end 'h5: begin maxline = 15; char_block = 1; one_bit_pixel = 0; - pf_pixel_mod = 0; end 'h6: begin maxline = 7; char_block = 1; one_bit_pixel = 1; - pf_pixel_mod = 0; end 'h7: begin maxline = 15; char_block = 1; one_bit_pixel = 1; - pf_pixel_mod = 0; end 'h8: begin maxline = 7; char_block = 0; one_bit_pixel = 0; - pf_pixel_mod = 3; end 'h9: begin maxline = 3; char_block = 0; one_bit_pixel = 1; - pf_pixel_mod = 1; end 'ha: begin maxline = 3; char_block = 0; one_bit_pixel = 0; - pf_pixel_mod = 1; end 'hb: begin maxline = 1; char_block = 0; one_bit_pixel = 1; - pf_pixel_mod = 0; end 'hc: begin maxline = 0; char_block = 0; one_bit_pixel = 1; - pf_pixel_mod = 0; end 'hd: begin maxline = 1; char_block = 0; one_bit_pixel = 0; - pf_pixel_mod = 0; end 'he: begin maxline = 0; char_block = 0; one_bit_pixel = 0; - pf_pixel_mod = 0; end 'hf: begin maxline = 0; char_block = 0; one_bit_pixel = 0; - pf_pixel_mod = 0; end endcase end @@ -511,7 +546,8 @@ module antic(rst_i, clk_i, .ir(ir), .shift_reg_shift(shift_reg_shift), .load_pf(load_pf), - .load_out(load_out)); + .load_out(load_out), + .out_reg_shift(out_reg_shift)); always @ (hcount or dma_pf_width or dma_instr_en or vblank) begin if (!dma_instr_en || vblank) @@ -540,7 +576,7 @@ module antic(rst_i, clk_i, char_color <= shift_reg_out[7:6]; end else out_reg <= shift_reg_out; - else if ((hcount & pf_pixel_mod) == (3 & pf_pixel_mod)) + else if (out_reg_shift) if (one_bit_pixel) out_reg <= {out_reg[6:0], 1'b0}; else -- 2.11.4.GIT