OpenCores
URL https://opencores.org/ocsvn/opengfx430/opengfx430/trunk

Subversion Repositories opengfx430

[/] [opengfx430/] [trunk/] [core/] [rtl/] [verilog/] [ogfx_gpu_reg.v] - Diff between revs 3 and 6

Show entire file | Details | Blame | View Log

Rev 3 Rev 6
Line 181... Line 181...
// REC_HEIGHT       - Set rectangle height
// REC_HEIGHT       - Set rectangle height
//                    {4'b1101, height[11:0]}
//                    {4'b1101, height[11:0]}
//
//
// SRC_PX_ADDR      - Set source address
// SRC_PX_ADDR      - Set source address
//                    {4'b1111, 2'b10, 10'b0000000000}
//                    {4'b1111, 2'b10, 10'b0000000000}
//                    {addr[31:16]                   }
 
//                    {addr[15:0]                    }
//                    {addr[15:0]                    }
 
//                    {addr[31:16]                   }
//
//
// DST_PX_ADDR      - Set destination address
// DST_PX_ADDR      - Set destination address
//                    {4'b1111, 2'b10, 10'b0000000001}
//                    {4'b1111, 2'b10, 10'b0000000001}
//                    {addr[31:16]                   }
 
//                    {addr[15:0]                    }
//                    {addr[15:0]                    }
 
//                    {addr[31:16]                   }
//
//
// OF0_ADDR         - Set address offset 0
// OF0_ADDR         - Set address offset 0
//                    {4'b1111, 2'b10, 10'b0000010000}
//                    {4'b1111, 2'b10, 10'b0000010000}
//                    {addr[31:16]                   }
 
//                    {addr[15:0]                    }
//                    {addr[15:0]                    }
 
//                    {addr[31:16]                   }
//
//
// OF1_ADDR         - Set address offset 1
// OF1_ADDR         - Set address offset 1
//                    {4'b1111, 2'b10, 10'b0000010001}
//                    {4'b1111, 2'b10, 10'b0000010001}
//                    {addr[31:16]                   }
 
//                    {addr[15:0]                    }
//                    {addr[15:0]                    }
 
//                    {addr[31:16]                   }
//
//
// OF2_ADDR         - Set address offset 2
// OF2_ADDR         - Set address offset 2
//                    {4'b1111, 2'b10, 10'b0000010010}
//                    {4'b1111, 2'b10, 10'b0000010010}
//                    {addr[31:16]                   }
 
//                    {addr[15:0]                    }
//                    {addr[15:0]                    }
 
//                    {addr[31:16]                   }
//
//
// OF3_ADDR         - Set address offset 3
// OF3_ADDR         - Set address offset 3
//                    {4'b1111, 2'b10, 10'b0000010011}
//                    {4'b1111, 2'b10, 10'b0000010011}
//                    {addr[31:16]                   }
 
//                    {addr[15:0]                    }
//                    {addr[15:0]                    }
 
//                    {addr[31:16]                   }
//
//
// SET_FILL         - Set fill color
// SET_FILL         - Set fill color
//                    {4'b1111, 2'b01, 10'b0000100000}
//                    {4'b1111, 2'b01, 10'b0000100000}
//                    {fill_color[15:0]              }
//                    {fill_color[15:0]              }
//
//
Line 465... Line 465...
// SRC_PX_ADDR_HI Register
// SRC_PX_ADDR_HI Register
//------------------------------------------------
//------------------------------------------------
`ifdef VRAM_BIGGER_4_KW
`ifdef VRAM_BIGGER_4_KW
reg [`APIX_HI_MSB:0] src_px_addr_hi;
reg [`APIX_HI_MSB:0] src_px_addr_hi;
 
 
wire                 src_px_addr_hi_wr = (reg_access==REG_SRC_PX_ADDR) & (gpu_state==DATA2B1_READ);
wire                 src_px_addr_hi_wr = (reg_access==REG_SRC_PX_ADDR) & (gpu_state==DATA2B2_READ);
 
 
always @ (posedge mclk or posedge puc_rst)
always @ (posedge mclk or posedge puc_rst)
  if (puc_rst)                src_px_addr_hi <=  {`APIX_HI_MSB+1{1'b0}};
  if (puc_rst)                src_px_addr_hi <=  {`APIX_HI_MSB+1{1'b0}};
  else if (src_px_addr_hi_wr) src_px_addr_hi <=  gpu_data_i[`APIX_HI_MSB:0];
  else if (src_px_addr_hi_wr) src_px_addr_hi <=  gpu_data_i[`APIX_HI_MSB:0];
`endif
`endif
Line 477... Line 477...
//------------------------------------------------
//------------------------------------------------
// SRC_PX_ADDR_LO Register
// SRC_PX_ADDR_LO Register
//------------------------------------------------
//------------------------------------------------
reg [`APIX_LO_MSB:0] src_px_addr_lo;
reg [`APIX_LO_MSB:0] src_px_addr_lo;
 
 
wire                 src_px_addr_lo_wr = (reg_access==REG_SRC_PX_ADDR) & (gpu_state==DATA2B2_READ);
wire                 src_px_addr_lo_wr = (reg_access==REG_SRC_PX_ADDR) & (gpu_state==DATA2B1_READ);
 
 
always @ (posedge mclk or posedge puc_rst)
always @ (posedge mclk or posedge puc_rst)
  if (puc_rst)                src_px_addr_lo <=  {`APIX_LO_MSB+1{1'b0}};
  if (puc_rst)                src_px_addr_lo <=  {`APIX_LO_MSB+1{1'b0}};
  else if (src_px_addr_lo_wr) src_px_addr_lo <=  gpu_data_i[`APIX_LO_MSB:0];
  else if (src_px_addr_lo_wr) src_px_addr_lo <=  gpu_data_i[`APIX_LO_MSB:0];
 
 
`ifdef VRAM_BIGGER_4_KW
`ifdef VRAM_BIGGER_4_KW
assign      src_px_addr  = {src_px_addr_hi[`APIX_HI_MSB:0], src_px_addr_lo};
assign      src_px_addr  = {src_px_addr_hi[`APIX_HI_MSB:0], src_px_addr_lo};
`else
`else
assign      src_px_addr  = {src_px_addr_lo[`APIX_LO_MS:0]};
assign      src_px_addr  = {src_px_addr_lo[`APIX_LO_MSB:0]};
`endif
`endif
 
 
assign src_px_addr_align = src_px_addr + src_offset_addr;
assign src_px_addr_align = src_px_addr + src_offset_addr;
assign cfg_src_px_addr_o = {`APIX_MSB+1{gfx_mode_1_bpp }} & {src_px_addr_align[`APIX_MSB:0]           } |
assign cfg_src_px_addr_o = {`APIX_MSB+1{gfx_mode_1_bpp }} & {src_px_addr_align[`APIX_MSB:0]           } |
                           {`APIX_MSB+1{gfx_mode_2_bpp }} & {src_px_addr_align[`APIX_MSB-1:0], 1'b0   } |
                           {`APIX_MSB+1{gfx_mode_2_bpp }} & {src_px_addr_align[`APIX_MSB-1:0], 1'b0   } |
Line 502... Line 502...
// DST_PX_ADDR_HI Register
// DST_PX_ADDR_HI Register
//------------------------------------------------
//------------------------------------------------
`ifdef VRAM_BIGGER_4_KW
`ifdef VRAM_BIGGER_4_KW
reg [`APIX_HI_MSB:0] dst_px_addr_hi;
reg [`APIX_HI_MSB:0] dst_px_addr_hi;
 
 
wire                 dst_px_addr_hi_wr = (reg_access==REG_DST_PX_ADDR) & (gpu_state==DATA2B1_READ);
wire                 dst_px_addr_hi_wr = (reg_access==REG_DST_PX_ADDR) & (gpu_state==DATA2B2_READ);
 
 
always @ (posedge mclk or posedge puc_rst)
always @ (posedge mclk or posedge puc_rst)
  if (puc_rst)                dst_px_addr_hi <=  {`APIX_HI_MSB+1{1'b0}};
  if (puc_rst)                dst_px_addr_hi <=  {`APIX_HI_MSB+1{1'b0}};
  else if (dst_px_addr_hi_wr) dst_px_addr_hi <=  gpu_data_i[`APIX_HI_MSB:0];
  else if (dst_px_addr_hi_wr) dst_px_addr_hi <=  gpu_data_i[`APIX_HI_MSB:0];
`endif
`endif
Line 514... Line 514...
//------------------------------------------------
//------------------------------------------------
// DST_PX_ADDR_LO Register
// DST_PX_ADDR_LO Register
//------------------------------------------------
//------------------------------------------------
reg [`APIX_LO_MSB:0] dst_px_addr_lo;
reg [`APIX_LO_MSB:0] dst_px_addr_lo;
 
 
wire                 dst_px_addr_lo_wr = (reg_access==REG_DST_PX_ADDR) & (gpu_state==DATA2B2_READ);
wire                 dst_px_addr_lo_wr = (reg_access==REG_DST_PX_ADDR) & (gpu_state==DATA2B1_READ);
 
 
always @ (posedge mclk or posedge puc_rst)
always @ (posedge mclk or posedge puc_rst)
  if (puc_rst)                dst_px_addr_lo <=  {`APIX_LO_MSB+1{1'b0}};
  if (puc_rst)                dst_px_addr_lo <=  {`APIX_LO_MSB+1{1'b0}};
  else if (dst_px_addr_lo_wr) dst_px_addr_lo <=  gpu_data_i[`APIX_LO_MSB:0];
  else if (dst_px_addr_lo_wr) dst_px_addr_lo <=  gpu_data_i[`APIX_LO_MSB:0];
 
 
`ifdef VRAM_BIGGER_4_KW
`ifdef VRAM_BIGGER_4_KW
assign      dst_px_addr  = {dst_px_addr_hi[`APIX_HI_MSB:0], dst_px_addr_lo};
assign      dst_px_addr  = {dst_px_addr_hi[`APIX_HI_MSB:0], dst_px_addr_lo};
`else
`else
assign      dst_px_addr  = {dst_px_addr_lo[`APIX_LO_MS:0]};
assign      dst_px_addr  = {dst_px_addr_lo[`APIX_LO_MSB:0]};
`endif
`endif
 
 
assign dst_px_addr_align = dst_px_addr + dst_offset_addr;
assign dst_px_addr_align = dst_px_addr + dst_offset_addr;
assign cfg_dst_px_addr_o = {`APIX_MSB+1{gfx_mode_1_bpp }} & {dst_px_addr_align[`APIX_MSB:0]           } |
assign cfg_dst_px_addr_o = {`APIX_MSB+1{gfx_mode_1_bpp }} & {dst_px_addr_align[`APIX_MSB:0]           } |
                           {`APIX_MSB+1{gfx_mode_2_bpp }} & {dst_px_addr_align[`APIX_MSB-1:0], 1'b0   } |
                           {`APIX_MSB+1{gfx_mode_2_bpp }} & {dst_px_addr_align[`APIX_MSB-1:0], 1'b0   } |
Line 539... Line 539...
// OF0_ADDR_HI Register
// OF0_ADDR_HI Register
//------------------------------------------------
//------------------------------------------------
`ifdef VRAM_BIGGER_4_KW
`ifdef VRAM_BIGGER_4_KW
reg [`APIX_HI_MSB:0] of0_addr_hi;
reg [`APIX_HI_MSB:0] of0_addr_hi;
 
 
wire                 of0_addr_hi_wr = (reg_access==REG_OF0_ADDR) & (gpu_state==DATA2B1_READ);
wire                 of0_addr_hi_wr = (reg_access==REG_OF0_ADDR) & (gpu_state==DATA2B2_READ);
 
 
always @ (posedge mclk or posedge puc_rst)
always @ (posedge mclk or posedge puc_rst)
  if (puc_rst)             of0_addr_hi <=  {`APIX_HI_MSB+1{1'b0}};
  if (puc_rst)             of0_addr_hi <=  {`APIX_HI_MSB+1{1'b0}};
  else if (of0_addr_hi_wr) of0_addr_hi <=  gpu_data_i[`APIX_HI_MSB:0];
  else if (of0_addr_hi_wr) of0_addr_hi <=  gpu_data_i[`APIX_HI_MSB:0];
`endif
`endif
Line 551... Line 551...
//------------------------------------------------
//------------------------------------------------
// OF0_ADDR_LO Register
// OF0_ADDR_LO Register
//------------------------------------------------
//------------------------------------------------
reg [`APIX_LO_MSB:0] of0_addr_lo;
reg [`APIX_LO_MSB:0] of0_addr_lo;
 
 
wire                 of0_addr_lo_wr = (reg_access==REG_OF0_ADDR) & (gpu_state==DATA2B2_READ);
wire                 of0_addr_lo_wr = (reg_access==REG_OF0_ADDR) & (gpu_state==DATA2B1_READ);
 
 
always @ (posedge mclk or posedge puc_rst)
always @ (posedge mclk or posedge puc_rst)
  if (puc_rst)             of0_addr_lo <=  {`APIX_LO_MSB+1{1'b0}};
  if (puc_rst)             of0_addr_lo <=  {`APIX_LO_MSB+1{1'b0}};
  else if (of0_addr_lo_wr) of0_addr_lo <=  gpu_data_i[`APIX_LO_MSB:0];
  else if (of0_addr_lo_wr) of0_addr_lo <=  gpu_data_i[`APIX_LO_MSB:0];
 
 
`ifdef VRAM_BIGGER_4_KW
`ifdef VRAM_BIGGER_4_KW
assign      of0_addr  = {of0_addr_hi[`APIX_HI_MSB:0], of0_addr_lo};
assign      of0_addr  = {of0_addr_hi[`APIX_HI_MSB:0], of0_addr_lo};
`else
`else
assign      of0_addr  = {of0_addr_lo[`APIX_LO_MS:0]};
assign      of0_addr  = {of0_addr_lo[`APIX_LO_MSB:0]};
`endif
`endif
 
 
//------------------------------------------------
//------------------------------------------------
// OF1_ADDR_HI Register
// OF1_ADDR_HI Register
//------------------------------------------------
//------------------------------------------------
`ifdef VRAM_BIGGER_4_KW
`ifdef VRAM_BIGGER_4_KW
reg [`APIX_HI_MSB:0] of1_addr_hi;
reg [`APIX_HI_MSB:0] of1_addr_hi;
 
 
wire                 of1_addr_hi_wr = (reg_access==REG_OF1_ADDR) & (gpu_state==DATA2B1_READ);
wire                 of1_addr_hi_wr = (reg_access==REG_OF1_ADDR) & (gpu_state==DATA2B2_READ);
 
 
always @ (posedge mclk or posedge puc_rst)
always @ (posedge mclk or posedge puc_rst)
  if (puc_rst)             of1_addr_hi <=  {`APIX_HI_MSB+1{1'b0}};
  if (puc_rst)             of1_addr_hi <=  {`APIX_HI_MSB+1{1'b0}};
  else if (of1_addr_hi_wr) of1_addr_hi <=  gpu_data_i[`APIX_HI_MSB:0];
  else if (of1_addr_hi_wr) of1_addr_hi <=  gpu_data_i[`APIX_HI_MSB:0];
`endif
`endif
Line 581... Line 581...
//------------------------------------------------
//------------------------------------------------
// OF1_ADDR_LO Register
// OF1_ADDR_LO Register
//------------------------------------------------
//------------------------------------------------
reg [`APIX_LO_MSB:0] of1_addr_lo;
reg [`APIX_LO_MSB:0] of1_addr_lo;
 
 
wire                 of1_addr_lo_wr = (reg_access==REG_OF1_ADDR) & (gpu_state==DATA2B2_READ);
wire                 of1_addr_lo_wr = (reg_access==REG_OF1_ADDR) & (gpu_state==DATA2B1_READ);
 
 
always @ (posedge mclk or posedge puc_rst)
always @ (posedge mclk or posedge puc_rst)
  if (puc_rst)             of1_addr_lo <=  {`APIX_LO_MSB+1{1'b0}};
  if (puc_rst)             of1_addr_lo <=  {`APIX_LO_MSB+1{1'b0}};
  else if (of1_addr_lo_wr) of1_addr_lo <=  gpu_data_i[`APIX_LO_MSB:0];
  else if (of1_addr_lo_wr) of1_addr_lo <=  gpu_data_i[`APIX_LO_MSB:0];
 
 
`ifdef VRAM_BIGGER_4_KW
`ifdef VRAM_BIGGER_4_KW
assign      of1_addr  = {of1_addr_hi[`APIX_HI_MSB:0], of1_addr_lo};
assign      of1_addr  = {of1_addr_hi[`APIX_HI_MSB:0], of1_addr_lo};
`else
`else
assign      of1_addr  = {of1_addr_lo[`APIX_LO_MS:0]};
assign      of1_addr  = {of1_addr_lo[`APIX_LO_MSB:0]};
`endif
`endif
 
 
//------------------------------------------------
//------------------------------------------------
// OF2_ADDR_HI Register
// OF2_ADDR_HI Register
//------------------------------------------------
//------------------------------------------------
`ifdef VRAM_BIGGER_4_KW
`ifdef VRAM_BIGGER_4_KW
reg [`APIX_HI_MSB:0] of2_addr_hi;
reg [`APIX_HI_MSB:0] of2_addr_hi;
 
 
wire                 of2_addr_hi_wr = (reg_access==REG_OF2_ADDR) & (gpu_state==DATA2B1_READ);
wire                 of2_addr_hi_wr = (reg_access==REG_OF2_ADDR) & (gpu_state==DATA2B2_READ);
 
 
always @ (posedge mclk or posedge puc_rst)
always @ (posedge mclk or posedge puc_rst)
  if (puc_rst)             of2_addr_hi <=  {`APIX_HI_MSB+1{1'b0}};
  if (puc_rst)             of2_addr_hi <=  {`APIX_HI_MSB+1{1'b0}};
  else if (of2_addr_hi_wr) of2_addr_hi <=  gpu_data_i[`APIX_HI_MSB:0];
  else if (of2_addr_hi_wr) of2_addr_hi <=  gpu_data_i[`APIX_HI_MSB:0];
`endif
`endif
Line 611... Line 611...
//------------------------------------------------
//------------------------------------------------
// OF2_ADDR_LO Register
// OF2_ADDR_LO Register
//------------------------------------------------
//------------------------------------------------
reg [`APIX_LO_MSB:0] of2_addr_lo;
reg [`APIX_LO_MSB:0] of2_addr_lo;
 
 
wire                 of2_addr_lo_wr = (reg_access==REG_OF2_ADDR) & (gpu_state==DATA2B2_READ);
wire                 of2_addr_lo_wr = (reg_access==REG_OF2_ADDR) & (gpu_state==DATA2B1_READ);
 
 
always @ (posedge mclk or posedge puc_rst)
always @ (posedge mclk or posedge puc_rst)
  if (puc_rst)             of2_addr_lo <=  {`APIX_LO_MSB+1{1'b0}};
  if (puc_rst)             of2_addr_lo <=  {`APIX_LO_MSB+1{1'b0}};
  else if (of2_addr_lo_wr) of2_addr_lo <=  gpu_data_i[`APIX_LO_MSB:0];
  else if (of2_addr_lo_wr) of2_addr_lo <=  gpu_data_i[`APIX_LO_MSB:0];
 
 
`ifdef VRAM_BIGGER_4_KW
`ifdef VRAM_BIGGER_4_KW
assign      of2_addr  = {of2_addr_hi[`APIX_HI_MSB:0], of2_addr_lo};
assign      of2_addr  = {of2_addr_hi[`APIX_HI_MSB:0], of2_addr_lo};
`else
`else
assign      of2_addr  = {of2_addr_lo[`APIX_LO_MS:0]};
assign      of2_addr  = {of2_addr_lo[`APIX_LO_MSB:0]};
`endif
`endif
 
 
//------------------------------------------------
//------------------------------------------------
// OF3_ADDR_HI Register
// OF3_ADDR_HI Register
//------------------------------------------------
//------------------------------------------------
`ifdef VRAM_BIGGER_4_KW
`ifdef VRAM_BIGGER_4_KW
reg [`APIX_HI_MSB:0] of3_addr_hi;
reg [`APIX_HI_MSB:0] of3_addr_hi;
 
 
wire                 of3_addr_hi_wr = (reg_access==REG_OF3_ADDR) & (gpu_state==DATA2B1_READ);
wire                 of3_addr_hi_wr = (reg_access==REG_OF3_ADDR) & (gpu_state==DATA2B2_READ);
 
 
always @ (posedge mclk or posedge puc_rst)
always @ (posedge mclk or posedge puc_rst)
  if (puc_rst)             of3_addr_hi <=  {`APIX_HI_MSB+1{1'b0}};
  if (puc_rst)             of3_addr_hi <=  {`APIX_HI_MSB+1{1'b0}};
  else if (of3_addr_hi_wr) of3_addr_hi <=  gpu_data_i[`APIX_HI_MSB:0];
  else if (of3_addr_hi_wr) of3_addr_hi <=  gpu_data_i[`APIX_HI_MSB:0];
`endif
`endif
Line 641... Line 641...
//------------------------------------------------
//------------------------------------------------
// OF3_ADDR_LO Register
// OF3_ADDR_LO Register
//------------------------------------------------
//------------------------------------------------
reg [`APIX_LO_MSB:0] of3_addr_lo;
reg [`APIX_LO_MSB:0] of3_addr_lo;
 
 
wire                 of3_addr_lo_wr = (reg_access==REG_OF3_ADDR) & (gpu_state==DATA2B2_READ);
wire                 of3_addr_lo_wr = (reg_access==REG_OF3_ADDR) & (gpu_state==DATA2B1_READ);
 
 
always @ (posedge mclk or posedge puc_rst)
always @ (posedge mclk or posedge puc_rst)
  if (puc_rst)             of3_addr_lo <=  {`APIX_LO_MSB+1{1'b0}};
  if (puc_rst)             of3_addr_lo <=  {`APIX_LO_MSB+1{1'b0}};
  else if (of3_addr_lo_wr) of3_addr_lo <=  gpu_data_i[`APIX_LO_MSB:0];
  else if (of3_addr_lo_wr) of3_addr_lo <=  gpu_data_i[`APIX_LO_MSB:0];
 
 
`ifdef VRAM_BIGGER_4_KW
`ifdef VRAM_BIGGER_4_KW
assign      of3_addr  = {of3_addr_hi[`APIX_HI_MSB:0], of3_addr_lo};
assign      of3_addr  = {of3_addr_hi[`APIX_HI_MSB:0], of3_addr_lo};
`else
`else
assign      of3_addr  = {of3_addr_lo[`APIX_LO_MS:0]};
assign      of3_addr  = {of3_addr_lo[`APIX_LO_MSB:0]};
`endif
`endif
 
 
// Offset address selection
// Offset address selection
assign src_offset_addr    = (src_offset_sel==2'h0) ? of0_addr :
assign src_offset_addr    = (src_offset_sel==2'h0) ? of0_addr :
                            (src_offset_sel==2'h1) ? of1_addr :
                            (src_offset_sel==2'h1) ? of1_addr :

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.