| //---------------------------------------------------------------------------- |
| // Copyright (C) 2016 Authors |
| // |
| // This source file may be used and distributed without restriction provided |
| // that this copyright statement is not removed from the file and that any |
| // derivative work contains the original copyright notice and the associated |
| // disclaimer. |
| // |
| // This source file is free software; you can redistribute it and/or modify |
| // it under the terms of the GNU Lesser General Public License as published |
| // by the Free Software Foundation; either version 2.1 of the License, or |
| // (at your option) any later version. |
| // |
| // This source is distributed in the hope that it will be useful, but WITHOUT |
| // ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or |
| // FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public |
| // License for more details. |
| // |
| // You should have received a copy of the GNU Lesser General Public License |
| // along with this source; if not, write to the Free Software Foundation, |
| // Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA |
| // |
| //---------------------------------------------------------------------------- |
| // |
| // *File Name: openGFX430.v |
| // |
| // *Module Description: |
| // This is a basic video controller for the openMSP430. |
| // |
| // It is currently supporting the LT24 LCD Board but |
| // can be extended to anything. |
| // |
| // *Author(s): |
| // - Olivier Girard, olgirard@gmail.com |
| // |
| //---------------------------------------------------------------------------- |
| // $Rev$ |
| // $LastChangedBy$ |
| // $LastChangedDate$ |
| //---------------------------------------------------------------------------- |
| `default_nettype none |
| `ifdef OGFX_NO_INCLUDE |
| `else |
| `include "openGFX430_defines.v" |
| `endif |
| |
| module openGFX430 ( |
| `ifdef USE_POWER_PINS |
| vccd1, // User area 1 1.8V supply |
| vssd1, // User area 1 digital ground |
| `endif |
| // OUTPUTs |
| irq_gfx_o, // Graphic Controller interrupt |
| |
| lt24_cs_n_o, // LT24 Chip select (Active low) |
| lt24_rd_n_o, // LT24 Read strobe (Active low) |
| lt24_wr_n_o, // LT24 Write strobe (Active low) |
| lt24_rs_o, // LT24 Command/Param selection (Cmd=0/Param=1) |
| lt24_d_o, // LT24 Data output |
| lt24_d_en_o, // LT24 Data output enable |
| lt24_reset_n_o, // LT24 Reset (Active Low) |
| lt24_on_o, // LT24 on/off |
| |
| per_dout_o, // Peripheral data output |
| |
| `ifdef WITH_PROGRAMMABLE_LUT |
| lut_ram_addr_o, // LUT-RAM address |
| lut_ram_wen_o, // LUT-RAM write enable (active low) |
| lut_ram_cen_o, // LUT-RAM enable (active low) |
| lut_ram_din_o, // LUT-RAM data input |
| `endif |
| |
| vid_ram_addr_o, // Video-RAM address |
| vid_ram_wen_o, // Video-RAM write enable (active low) |
| vid_ram_cen_o, // Video-RAM enable (active low) |
| vid_ram_din_o, // Video-RAM data input |
| |
| // INPUTs |
| dbg_freeze_i, // Freeze address auto-incr on read |
| mclk, // Main system clock |
| per_addr_i, // Peripheral address |
| per_din_i, // Peripheral data input |
| per_en_i, // Peripheral enable (high active) |
| per_we_i, // Peripheral write enable (high active) |
| puc_rst, // Main system reset |
| |
| lt24_d_i, // LT24 Data input |
| |
| `ifdef WITH_PROGRAMMABLE_LUT |
| lut_ram_dout_i, // LUT-RAM data output |
| `endif |
| vid_ram_dout_i // Video-RAM data output |
| ); |
| |
| // PARAMETERs |
| //============ |
| |
| parameter [14:0] BASE_ADDR = 15'h0200; // Register base address |
| // - 7 LSBs must stay cleared: 0x0080, 0x0100, |
| // 0x0180, 0x0200, |
| // 0x0280, ... |
| `ifdef USE_POWER_PINS |
| inout vccd1; // User area 1 1.8V supply |
| inout vssd1; // User area 1 digital ground |
| `endif |
| // OUTPUTs |
| //========= |
| output irq_gfx_o; // Graphic Controller interrupt |
| |
| output lt24_cs_n_o; // LT24 Chip select (Active low) |
| output lt24_rd_n_o; // LT24 Read strobe (Active low) |
| output lt24_wr_n_o; // LT24 Write strobe (Active low) |
| output lt24_rs_o; // LT24 Command/Param selection (Cmd=0/Param=1) |
| output [15:0] lt24_d_o; // LT24 Data output |
| output lt24_d_en_o; // LT24 Data output enable |
| output lt24_reset_n_o; // LT24 Reset (Active Low) |
| output lt24_on_o; // LT24 on/off |
| |
| output [15:0] per_dout_o; // Peripheral data output |
| |
| `ifdef WITH_PROGRAMMABLE_LUT |
| output [`LRAM_MSB:0] lut_ram_addr_o; // LUT-RAM address |
| output lut_ram_wen_o; // LUT-RAM write enable (active low) |
| output lut_ram_cen_o; // LUT-RAM enable (active low) |
| output [15:0] lut_ram_din_o; // LUT-RAM data input |
| `endif |
| |
| output [`VRAM_MSB:0] vid_ram_addr_o; // Video-RAM address |
| output vid_ram_wen_o; // Video-RAM write enable (active low) |
| output vid_ram_cen_o; // Video-RAM enable (active low) |
| output [15:0] vid_ram_din_o; // Video-RAM data input |
| |
| // INPUTs |
| //========= |
| input dbg_freeze_i; // Freeze address auto-incr on read |
| input mclk; // Main system clock |
| input [13:0] per_addr_i; // Peripheral address |
| input [15:0] per_din_i; // Peripheral data input |
| input per_en_i; // Peripheral enable (high active) |
| input [1:0] per_we_i; // Peripheral write enable (high active) |
| input puc_rst; // Main system reset |
| |
| input [15:0] lt24_d_i; // LT24 Data input |
| |
| `ifdef WITH_PROGRAMMABLE_LUT |
| input [15:0] lut_ram_dout_i; // LUT-RAM data output |
| `endif |
| input [15:0] vid_ram_dout_i; // Video-RAM data output |
| |
| |
| //============================================================================= |
| // 1) WIRE & PARAMETER DECLARATION |
| //============================================================================= |
| |
| wire [2:0] lt24_cfg_clk; |
| wire [11:0] lt24_cfg_refr; |
| wire lt24_cfg_refr_sync_en; |
| wire [9:0] lt24_cfg_refr_sync_val; |
| wire lt24_cmd_refr; |
| wire [7:0] lt24_cmd_val; |
| wire lt24_cmd_has_param; |
| wire [15:0] lt24_cmd_param; |
| wire lt24_cmd_param_rdy; |
| wire [15:0] lt24_cmd_dfill; |
| wire lt24_cmd_dfill_wr; |
| |
| wire [`LPIX_MSB:0] display_width; |
| wire [`LPIX_MSB:0] display_height; |
| wire [`SPIX_MSB:0] display_size; |
| wire display_y_swap; |
| wire display_x_swap; |
| wire display_cl_swap; |
| wire [2:0] gfx_mode; |
| |
| wire [4:0] lt24_status; |
| wire lt24_done_evt; |
| wire lt24_start_evt; |
| |
| `ifdef WITH_PROGRAMMABLE_LUT |
| wire [`LRAM_MSB:0] lut_ram_sw_addr; |
| wire [15:0] lut_ram_sw_din; |
| wire lut_ram_sw_wen; |
| wire lut_ram_sw_cen; |
| wire [15:0] lut_ram_sw_dout; |
| wire [`LRAM_MSB:0] lut_ram_refr_addr; |
| wire lut_ram_refr_cen; |
| wire [15:0] lut_ram_refr_dout; |
| wire lut_ram_refr_dout_rdy_nxt; |
| `endif |
| wire [`VRAM_MSB:0] vid_ram_sw_addr; |
| wire [15:0] vid_ram_sw_din; |
| wire vid_ram_sw_wen; |
| wire vid_ram_sw_cen; |
| wire [15:0] vid_ram_sw_dout; |
| wire [`VRAM_MSB:0] vid_ram_gpu_addr; |
| wire [15:0] vid_ram_gpu_din; |
| wire vid_ram_gpu_wen; |
| wire vid_ram_gpu_cen; |
| wire [15:0] vid_ram_gpu_dout; |
| wire vid_ram_gpu_dout_rdy_nxt; |
| wire [`VRAM_MSB:0] vid_ram_refr_addr; |
| wire vid_ram_refr_cen; |
| wire [15:0] vid_ram_refr_dout; |
| wire vid_ram_refr_dout_rdy_nxt; |
| |
| wire refresh_active; |
| wire [15:0] refresh_data; |
| wire refresh_data_ready; |
| wire refresh_data_request; |
| wire [`APIX_MSB:0] refresh_frame_addr; |
| wire [2:0] hw_lut_palette_sel; |
| wire [3:0] hw_lut_bgcolor; |
| wire [3:0] hw_lut_fgcolor; |
| wire sw_lut_enable; |
| wire sw_lut_bank_select; |
| |
| wire gpu_cmd_done_evt; |
| wire gpu_cmd_error_evt; |
| wire gpu_dma_busy; |
| wire gpu_get_data; |
| wire [15:0] gpu_data; |
| wire gpu_data_avail; |
| wire gpu_enable; |
| |
| |
| //============================================================================ |
| // 2) REGISTERS |
| //============================================================================ |
| |
| ogfx_reg #(.BASE_ADDR(BASE_ADDR)) ogfx_reg_inst ( |
| |
| // OUTPUTs |
| .irq_gfx_o ( irq_gfx_o ), // Graphic Controller interrupt |
| |
| .gpu_data_o ( gpu_data ), // GPU data |
| .gpu_data_avail_o ( gpu_data_avail ), // GPU data available |
| .gpu_enable_o ( gpu_enable ), // GPU enable |
| |
| .lt24_reset_n_o ( lt24_reset_n_o ), // LT24 Reset (Active Low) |
| .lt24_on_o ( lt24_on_o ), // LT24 on/off |
| .lt24_cfg_clk_o ( lt24_cfg_clk ), // LT24 Interface clock configuration |
| .lt24_cfg_refr_o ( lt24_cfg_refr ), // LT24 Interface refresh configuration |
| .lt24_cfg_refr_sync_en_o ( lt24_cfg_refr_sync_en ), // LT24 Interface refresh sync enable configuration |
| .lt24_cfg_refr_sync_val_o ( lt24_cfg_refr_sync_val ), // LT24 Interface refresh sync value configuration |
| .lt24_cmd_refr_o ( lt24_cmd_refr ), // LT24 Interface refresh command |
| .lt24_cmd_val_o ( lt24_cmd_val ), // LT24 Generic command value |
| .lt24_cmd_has_param_o ( lt24_cmd_has_param ), // LT24 Generic command has parameters |
| .lt24_cmd_param_o ( lt24_cmd_param ), // LT24 Generic command parameter value |
| .lt24_cmd_param_rdy_o ( lt24_cmd_param_rdy ), // LT24 Generic command trigger |
| .lt24_cmd_dfill_o ( lt24_cmd_dfill ), // LT24 Data fill value |
| .lt24_cmd_dfill_wr_o ( lt24_cmd_dfill_wr ), // LT24 Data fill trigger |
| |
| .display_width_o ( display_width ), // Display width |
| .display_height_o ( display_height ), // Display height |
| .display_size_o ( display_size ), // Display size (number of pixels) |
| .display_y_swap_o ( display_y_swap ), // Display configuration: swap Y axis (horizontal symmetry) |
| .display_x_swap_o ( display_x_swap ), // Display configuration: swap X axis (vertical symmetry) |
| .display_cl_swap_o ( display_cl_swap ), // Display configuration: swap column/lines |
| |
| .gfx_mode_o ( gfx_mode ), // Video mode (1xx:16bpp / 011:8bpp / 010:4bpp / 001:2bpp / 000:1bpp) |
| |
| .per_dout_o ( per_dout_o ), // Peripheral data output |
| |
| .refresh_frame_addr_o ( refresh_frame_addr ), // Refresh frame base address |
| |
| .hw_lut_palette_sel_o ( hw_lut_palette_sel ), // Hardware LUT palette configuration |
| .hw_lut_bgcolor_o ( hw_lut_bgcolor ), // Hardware LUT background-color selection |
| .hw_lut_fgcolor_o ( hw_lut_fgcolor ), // Hardware LUT foreground-color selection |
| .sw_lut_enable_o ( sw_lut_enable ), // Refresh LUT-RAM enable |
| .sw_lut_bank_select_o ( sw_lut_bank_select ), // Refresh LUT-RAM bank selection |
| |
| `ifdef WITH_PROGRAMMABLE_LUT |
| .lut_ram_addr_o ( lut_ram_sw_addr ), // LUT-RAM address |
| .lut_ram_din_o ( lut_ram_sw_din ), // LUT-RAM data |
| .lut_ram_wen_o ( lut_ram_sw_wen ), // LUT-RAM write strobe (active low) |
| .lut_ram_cen_o ( lut_ram_sw_cen ), // LUT-RAM chip enable (active low) |
| `endif |
| |
| .vid_ram_addr_o ( vid_ram_sw_addr ), // Video-RAM address |
| .vid_ram_din_o ( vid_ram_sw_din ), // Video-RAM data |
| .vid_ram_wen_o ( vid_ram_sw_wen ), // Video-RAM write strobe (active low) |
| .vid_ram_cen_o ( vid_ram_sw_cen ), // Video-RAM chip enable (active low) |
| |
| // INPUTs |
| .dbg_freeze_i ( dbg_freeze_i ), // Freeze address auto-incr on read |
| .gpu_cmd_done_evt_i ( gpu_cmd_done_evt ), // GPU command done event |
| .gpu_cmd_error_evt_i ( gpu_cmd_error_evt ), // GPU command error event |
| .gpu_dma_busy_i ( gpu_dma_busy ), // GPU DMA execution on going |
| .gpu_get_data_i ( gpu_get_data ), // GPU get next data |
| .lt24_status_i ( lt24_status ), // LT24 FSM Status |
| .lt24_start_evt_i ( lt24_start_evt ), // LT24 FSM start event |
| .lt24_done_evt_i ( lt24_done_evt ), // LT24 FSM done event |
| .mclk ( mclk ), // Main system clock |
| .per_addr_i ( per_addr_i ), // Peripheral address |
| .per_din_i ( per_din_i ), // Peripheral data input |
| .per_en_i ( per_en_i ), // Peripheral enable (high active) |
| .per_we_i ( per_we_i ), // Peripheral write enable (high active) |
| .puc_rst ( puc_rst ), // Main system reset |
| |
| `ifdef WITH_PROGRAMMABLE_LUT |
| .lut_ram_dout_i ( lut_ram_sw_dout ), // LUT-RAM data input |
| `endif |
| .vid_ram_dout_i ( vid_ram_sw_dout ) // Video-RAM data input |
| ); |
| |
| |
| //============================================================================ |
| // 3) GPU |
| //============================================================================ |
| |
| ogfx_gpu ogfx_gpu_inst ( |
| |
| // OUTPUTs |
| .gpu_cmd_done_evt_o ( gpu_cmd_done_evt ), // GPU command done event |
| .gpu_cmd_error_evt_o ( gpu_cmd_error_evt ), // GPU command error event |
| .gpu_dma_busy_o ( gpu_dma_busy ), // GPU DMA execution on going |
| .gpu_get_data_o ( gpu_get_data ), // GPU get next data |
| |
| .vid_ram_addr_o ( vid_ram_gpu_addr ), // Video-RAM address |
| .vid_ram_din_o ( vid_ram_gpu_din ), // Video-RAM data |
| .vid_ram_wen_o ( vid_ram_gpu_wen ), // Video-RAM write strobe (active low) |
| .vid_ram_cen_o ( vid_ram_gpu_cen ), // Video-RAM chip enable (active low) |
| |
| // INPUTs |
| .mclk ( mclk ), // Main system clock |
| .puc_rst ( puc_rst ), // Main system reset |
| |
| .display_width_i ( display_width ), // Display width |
| |
| .gfx_mode_i ( gfx_mode ), // Video mode (1xx:16bpp / 011:8bpp / 010:4bpp / 001:2bpp / 000:1bpp) |
| |
| .gpu_data_i ( gpu_data ), // GPU data |
| .gpu_data_avail_i ( gpu_data_avail ), // GPU data available |
| .gpu_enable_i ( gpu_enable ), // GPU enable |
| |
| .vid_ram_dout_i ( vid_ram_gpu_dout ), // Video-RAM data input |
| .vid_ram_dout_rdy_nxt_i ( vid_ram_gpu_dout_rdy_nxt ) // Video-RAM data output ready during next cycle |
| ); |
| |
| |
| //============================================================================ |
| // 4) LT24 INTERFACE |
| //============================================================================ |
| |
| ogfx_if_lt24 ogfx_if_lt24_inst ( |
| |
| // OUTPUTs |
| .event_fsm_done_o ( lt24_done_evt ), // LT24 FSM done event |
| .event_fsm_start_o ( lt24_start_evt ), // LT24 FSM start event |
| |
| .lt24_cs_n_o ( lt24_cs_n_o ), // LT24 Chip select (Active low) |
| .lt24_d_o ( lt24_d_o ), // LT24 Data output |
| .lt24_d_en_o ( lt24_d_en_o ), // LT24 Data output enable |
| .lt24_rd_n_o ( lt24_rd_n_o ), // LT24 Read strobe (Active low) |
| .lt24_rs_o ( lt24_rs_o ), // LT24 Command/Param selection (Cmd=0/Param=1) |
| .lt24_wr_n_o ( lt24_wr_n_o ), // LT24 Write strobe (Active low) |
| |
| .refresh_active_o ( refresh_active ), // Display refresh on going |
| .refresh_data_request_o ( refresh_data_request ), // Display refresh new data request |
| |
| .status_o ( lt24_status ), // LT24 FSM Status |
| |
| // INPUTs |
| .mclk ( mclk ), // Main system clock |
| .puc_rst ( puc_rst ), // Main system reset |
| |
| .cfg_lt24_clk_div_i ( lt24_cfg_clk ), // Clock Divider configuration for LT24 interface |
| .cfg_lt24_display_size_i ( display_size ), // Display size (number of pixels) |
| .cfg_lt24_refresh_i ( lt24_cfg_refr ), // Refresh rate configuration for LT24 interface |
| .cfg_lt24_refresh_sync_en_i ( lt24_cfg_refr_sync_en ), // Refresh sync enable configuration for LT24 interface |
| .cfg_lt24_refresh_sync_val_i ( lt24_cfg_refr_sync_val ), // Refresh sync value configuration for LT24 interface |
| |
| .cmd_dfill_i ( lt24_cmd_dfill ), // Display data fill |
| .cmd_dfill_trig_i ( lt24_cmd_dfill_wr ), // Trigger a full display data fill |
| |
| .cmd_generic_cmd_val_i ( lt24_cmd_val ), // Generic command value |
| .cmd_generic_has_param_i ( lt24_cmd_has_param ), // Generic command to be sent has parameter(s) |
| .cmd_generic_param_val_i ( lt24_cmd_param ), // Generic command parameter value |
| .cmd_generic_trig_i ( lt24_cmd_param_rdy ), // Trigger generic command transmit (or new parameter available) |
| |
| .cmd_refresh_i ( lt24_cmd_refr ), // Display refresh command |
| |
| .lt24_d_i ( lt24_d_i ), // LT24 Data input |
| |
| .refresh_data_i ( refresh_data ), // Display refresh data |
| .refresh_data_ready_i ( refresh_data_ready ) // Display refresh new data is ready |
| ); |
| |
| //============================================================================ |
| // 5) VIDEO BACKEND |
| //============================================================================ |
| |
| // Video Backend |
| ogfx_backend ogfx_backend_inst ( |
| |
| // OUTPUTs |
| .refresh_data_o ( refresh_data ), // Display refresh data |
| .refresh_data_ready_o ( refresh_data_ready ), // Display refresh new data is ready |
| |
| .vid_ram_addr_o ( vid_ram_refr_addr ), // Video-RAM address |
| .vid_ram_cen_o ( vid_ram_refr_cen ), // Video-RAM enable (active low) |
| |
| `ifdef WITH_PROGRAMMABLE_LUT |
| .lut_ram_addr_o ( lut_ram_refr_addr ), // LUT-RAM address |
| .lut_ram_cen_o ( lut_ram_refr_cen ), // LUT-RAM enable (active low) |
| `endif |
| |
| // INPUTs |
| .mclk ( mclk ), // Main system clock |
| .puc_rst ( puc_rst ), // Main system reset |
| |
| .display_width_i ( display_width ), // Display width |
| .display_height_i ( display_height ), // Display height |
| .display_size_i ( display_size ), // Display size (number of pixels) |
| .display_y_swap_i ( display_y_swap ), // Display configuration: swap Y axis (horizontal symmetry) |
| .display_x_swap_i ( display_x_swap ), // Display configuration: swap X axis (vertical symmetry) |
| .display_cl_swap_i ( display_cl_swap ), // Display configuration: swap column/lines |
| |
| .gfx_mode_i ( gfx_mode ), // Video mode (1xx:16bpp / 011:8bpp / 010:4bpp / 001:2bpp / 000:1bpp) |
| |
| `ifdef WITH_PROGRAMMABLE_LUT |
| .lut_ram_dout_i ( lut_ram_refr_dout ), // LUT-RAM data output |
| .lut_ram_dout_rdy_nxt_i ( lut_ram_refr_dout_rdy_nxt ), // LUT-RAM data output ready during next cycle |
| `endif |
| |
| .vid_ram_dout_i ( vid_ram_refr_dout ), // Video-RAM data output |
| .vid_ram_dout_rdy_nxt_i ( vid_ram_refr_dout_rdy_nxt ), // Video-RAM data output ready during next cycle |
| |
| .refresh_active_i ( refresh_active ), // Display refresh on going |
| .refresh_data_request_i ( refresh_data_request ), // Display refresh new data request |
| .refresh_frame_base_addr_i ( refresh_frame_addr ), // Refresh frame base address |
| |
| .hw_lut_palette_sel_i ( hw_lut_palette_sel ), // Hardware LUT palette configuration |
| .hw_lut_bgcolor_i ( hw_lut_bgcolor ), // Hardware LUT background-color selection |
| .hw_lut_fgcolor_i ( hw_lut_fgcolor ), // Hardware LUT foreground-color selection |
| .sw_lut_enable_i ( sw_lut_enable ), // Refresh LUT-RAM enable |
| .sw_lut_bank_select_i ( sw_lut_bank_select ) // Refresh LUT-RAM bank selection |
| ); |
| |
| //============================================================================ |
| // 6) ARBITER FOR VIDEO AND LUT MEMORIES |
| //============================================================================ |
| |
| ogfx_ram_arbiter ogfx_ram_arbiter_inst ( |
| |
| .mclk ( mclk ), // Main system clock |
| .puc_rst ( puc_rst ), // Main system reset |
| |
| //------------------------------------------------------------ |
| |
| // SW interface, fixed highest priority |
| .lut_ram_sw_addr_i ( lut_ram_sw_addr ), // LUT-RAM Software address |
| .lut_ram_sw_din_i ( lut_ram_sw_din ), // LUT-RAM Software data |
| .lut_ram_sw_wen_i ( lut_ram_sw_wen ), // LUT-RAM Software write strobe (active low) |
| .lut_ram_sw_cen_i ( lut_ram_sw_cen ), // LUT-RAM Software chip enable (active low) |
| .lut_ram_sw_dout_o ( lut_ram_sw_dout ), // LUT-RAM Software data input |
| |
| // Refresh-backend, fixed lowest priority |
| .lut_ram_refr_addr_i ( lut_ram_refr_addr ), // LUT-RAM Refresh address |
| .lut_ram_refr_din_i ( 16'h0000 ), // LUT-RAM Refresh data |
| .lut_ram_refr_wen_i ( 1'h1 ), // LUT-RAM Refresh write strobe (active low) |
| .lut_ram_refr_cen_i ( lut_ram_refr_cen ), // LUT-RAM Refresh enable (active low) |
| .lut_ram_refr_dout_o ( lut_ram_refr_dout ), // LUT-RAM Refresh data output |
| .lut_ram_refr_dout_rdy_nxt_o ( lut_ram_refr_dout_rdy_nxt ), // LUT-RAM Refresh data output ready during next cycle |
| |
| // LUT Memory interface |
| .lut_ram_addr_o ( lut_ram_addr_o ), // LUT-RAM address |
| .lut_ram_din_o ( lut_ram_din_o ), // LUT-RAM data |
| .lut_ram_wen_o ( lut_ram_wen_o ), // LUT-RAM write strobe (active low) |
| .lut_ram_cen_o ( lut_ram_cen_o ), // LUT-RAM chip enable (active low) |
| .lut_ram_dout_i ( lut_ram_dout_i ), // LUT-RAM data input |
| |
| //------------------------------------------------------------ |
| |
| // SW interface, fixed highest priority |
| .vid_ram_sw_addr_i ( vid_ram_sw_addr ), // Video-RAM Software address |
| .vid_ram_sw_din_i ( vid_ram_sw_din ), // Video-RAM Software data |
| .vid_ram_sw_wen_i ( vid_ram_sw_wen ), // Video-RAM Software write strobe (active low) |
| .vid_ram_sw_cen_i ( vid_ram_sw_cen ), // Video-RAM Software chip enable (active low) |
| .vid_ram_sw_dout_o ( vid_ram_sw_dout ), // Video-RAM Software data input |
| |
| // GPU interface (round-robin with refresh-backend) |
| .vid_ram_gpu_addr_i ( vid_ram_gpu_addr ), // Video-RAM GPU address |
| .vid_ram_gpu_din_i ( vid_ram_gpu_din ), // Video-RAM GPU data |
| .vid_ram_gpu_wen_i ( vid_ram_gpu_wen ), // Video-RAM GPU write strobe (active low) |
| .vid_ram_gpu_cen_i ( vid_ram_gpu_cen ), // Video-RAM GPU chip enable (active low) |
| .vid_ram_gpu_dout_o ( vid_ram_gpu_dout ), // Video-RAM GPU data input |
| .vid_ram_gpu_dout_rdy_nxt_o ( vid_ram_gpu_dout_rdy_nxt ), // Video-RAM GPU data output ready during next cycle |
| |
| // Refresh-backend (round-robin with GPU interface) |
| .vid_ram_refr_addr_i ( vid_ram_refr_addr ), // Video-RAM Refresh address |
| .vid_ram_refr_din_i ( 16'h0000 ), // Video-RAM Refresh data |
| .vid_ram_refr_wen_i ( 1'h1 ), // Video-RAM Refresh write strobe (active low) |
| .vid_ram_refr_cen_i ( vid_ram_refr_cen ), // Video-RAM Refresh enable (active low) |
| .vid_ram_refr_dout_o ( vid_ram_refr_dout ), // Video-RAM Refresh data output |
| .vid_ram_refr_dout_rdy_nxt_o ( vid_ram_refr_dout_rdy_nxt ), // Video-RAM Refresh data output ready during next cycle |
| |
| // Video Memory interface |
| .vid_ram_addr_o ( vid_ram_addr_o ), // Video-RAM address |
| .vid_ram_din_o ( vid_ram_din_o ), // Video-RAM data |
| .vid_ram_wen_o ( vid_ram_wen_o ), // Video-RAM write strobe (active low) |
| .vid_ram_cen_o ( vid_ram_cen_o ), // Video-RAM chip enable (active low) |
| .vid_ram_dout_i ( vid_ram_dout_i ) // Video-RAM data input |
| |
| //------------------------------------------------------------ |
| ); |
| |
| |
| endmodule // openGFX430 |
| |
| `ifdef OGFX_NO_INCLUDE |
| `else |
| `include "openGFX430_undefines.v" |
| `endif |
| `default_nettype wire |