Line 35... |
Line 35... |
//// ////
|
//// ////
|
/////////////////////////////////////////////////////////////////////
|
/////////////////////////////////////////////////////////////////////
|
|
|
// CVS Log
|
// CVS Log
|
//
|
//
|
// $Id: vga_enh_top.v,v 1.2 2002-03-04 11:01:59 rherveille Exp $
|
// $Id: vga_enh_top.v,v 1.3 2003-03-18 21:45:48 rherveille Exp $
|
//
|
//
|
// $Date: 2002-03-04 11:01:59 $
|
// $Date: 2003-03-18 21:45:48 $
|
// $Revision: 1.2 $
|
// $Revision: 1.3 $
|
// $Author: rherveille $
|
// $Author: rherveille $
|
// $Locker: $
|
// $Locker: $
|
// $State: Exp $
|
// $State: Exp $
|
//
|
//
|
// Change History:
|
// Change History:
|
// $Log: not supported by cvs2svn $
|
// $Log: not supported by cvs2svn $
|
|
// Revision 1.2 2002/03/04 11:01:59 rherveille
|
|
// Added 64x64pixels 4bpp hardware cursor support.
|
|
//
|
// Revision 1.1 2002/02/07 05:42:10 rherveille
|
// Revision 1.1 2002/02/07 05:42:10 rherveille
|
// Fixed some bugs discovered by modified testbench
|
// Fixed some bugs discovered by modified testbench
|
// Removed / Changed some strange logic constructions
|
// Removed / Changed some strange logic constructions
|
// Started work on hardware cursor support (not finished yet)
|
// Started work on hardware cursor support (not finished yet)
|
// Changed top-level name to vga_enh_top.v
|
// Changed top-level name to vga_enh_top.v
|
Line 57... |
Line 60... |
`include "timescale.v"
|
`include "timescale.v"
|
`include "vga_defines.v"
|
`include "vga_defines.v"
|
|
|
module vga_enh_top (wb_clk_i, wb_rst_i, rst_i, wb_inta_o,
|
module vga_enh_top (wb_clk_i, wb_rst_i, rst_i, wb_inta_o,
|
wbs_adr_i, wbs_dat_i, wbs_dat_o, wbs_sel_i, wbs_we_i, wbs_stb_i, wbs_cyc_i, wbs_ack_o, wbs_err_o,
|
wbs_adr_i, wbs_dat_i, wbs_dat_o, wbs_sel_i, wbs_we_i, wbs_stb_i, wbs_cyc_i, wbs_ack_o, wbs_err_o,
|
wbm_adr_o, wbm_dat_i, wbm_cab_o, wbm_sel_o, wbm_we_o, wbm_stb_o, wbm_cyc_o, wbm_ack_i, wbm_err_i,
|
wbm_adr_o, wbm_dat_i, wbm_cti_o, wbm_bte_o, wbm_sel_o, wbm_we_o, wbm_stb_o, wbm_cyc_o, wbm_ack_i, wbm_err_i,
|
clk_p_i, hsync_pad_o, vsync_pad_o, csync_pad_o, blank_pad_o, r_pad_o, g_pad_o, b_pad_o);
|
clk_p_i, hsync_pad_o, vsync_pad_o, csync_pad_o, blank_pad_o, r_pad_o, g_pad_o, b_pad_o
|
|
);
|
|
|
//
|
//
|
// parameters
|
// parameters
|
//
|
//
|
parameter ARST_LVL = 1'b0;
|
parameter ARST_LVL = 1'b0;
|
Line 94... |
Line 98... |
input [31:0] wbm_dat_i; // Master databus input
|
input [31:0] wbm_dat_i; // Master databus input
|
output [ 3:0] wbm_sel_o; // byte select outputs
|
output [ 3:0] wbm_sel_o; // byte select outputs
|
output wbm_we_o; // write enable output
|
output wbm_we_o; // write enable output
|
output wbm_stb_o; // strobe output
|
output wbm_stb_o; // strobe output
|
output wbm_cyc_o; // valid bus cycle output
|
output wbm_cyc_o; // valid bus cycle output
|
output wbm_cab_o; // continuos address burst output
|
output [ 3:0] wbm_cti_o; // cycle type identifier
|
|
output [ 1:0] wbm_bte_o; // burst type extensions
|
input wbm_ack_i; // bus cycle acknowledge input
|
input wbm_ack_i; // bus cycle acknowledge input
|
input wbm_err_i; // bus cycle error input
|
input wbm_err_i; // bus cycle error input
|
|
|
// VGA signals
|
// VGA signals
|
input clk_p_i; // pixel clock
|
input clk_p_i; // pixel clock
|
Line 140... |
Line 145... |
// from pixel generator
|
// from pixel generator
|
wire cgate; // composite gate signal
|
wire cgate; // composite gate signal
|
wire ihsync, ivsync, icsync, iblank; // intermediate horizontal/vertical/composite sync, intermediate blank
|
wire ihsync, ivsync, icsync, iblank; // intermediate horizontal/vertical/composite sync, intermediate blank
|
|
|
// line fifo connections
|
// line fifo connections
|
wire line_fifo_dpm_wreq;
|
wire line_fifo_dpm_wreq, line_fifo_empty_rd;
|
wire [23:0] line_fifo_dpm_d, line_fifo_dpm_q;
|
wire [23:0] line_fifo_dpm_d, line_fifo_dpm_q;
|
|
|
// clut connections
|
// clut connections
|
wire ext_clut_req, ext_clut_ack;
|
wire ext_clut_req, ext_clut_ack;
|
wire [23:0] ext_clut_q;
|
wire [23:0] ext_clut_q;
|
Line 155... |
Line 160... |
//
|
//
|
// Module body
|
// Module body
|
//
|
//
|
|
|
// hookup wishbone slave
|
// hookup wishbone slave
|
vga_wb_slave u1 (
|
vga_wb_slave wbs (
|
// wishbone interface
|
// wishbone interface
|
.clk_i(wb_clk_i),
|
.clk_i(wb_clk_i),
|
.rst_i(wb_rst_i),
|
.rst_i(wb_rst_i),
|
.arst_i(arst),
|
.arst_i(arst),
|
.adr_i(wbs_adr_i[11:2]),
|
.adr_i(wbs_adr_i[11:2]),
|
Line 220... |
Line 225... |
.clut_ack(ext_clut_ack),
|
.clut_ack(ext_clut_ack),
|
.clut_q(ext_clut_q)
|
.clut_q(ext_clut_q)
|
);
|
);
|
|
|
// hookup wishbone master
|
// hookup wishbone master
|
vga_wb_master u2 (
|
vga_wb_master wbm (
|
// wishbone interface
|
// wishbone interface
|
.clk_i(wb_clk_i),
|
.clk_i(wb_clk_i),
|
.rst_i(wb_rst_i),
|
.rst_i(wb_rst_i),
|
.nrst_i(arst),
|
.nrst_i(arst),
|
.cyc_o(wbm_cyc_o),
|
.cyc_o(wbm_cyc_o),
|
.stb_o(wbm_stb_o),
|
.stb_o(wbm_stb_o),
|
.cab_o(wbm_cab_o),
|
.cti_o(wbm_cti_o),
|
|
.bte_o(wbm_bte_o),
|
.we_o(wbm_we_o),
|
.we_o(wbm_we_o),
|
.adr_o(wbm_adr_o),
|
.adr_o(wbm_adr_o),
|
.sel_o(wbm_sel_o),
|
.sel_o(wbm_sel_o),
|
.ack_i(wbm_ack_i),
|
.ack_i(wbm_ack_i),
|
.err_i(wbm_err_i),
|
.err_i(wbm_err_i),
|
Line 300... |
Line 306... |
.dat1_o(ext_clut_q),
|
.dat1_o(ext_clut_q),
|
.we1_i(wbs_we_i)
|
.we1_i(wbs_we_i)
|
);
|
);
|
|
|
// hookup pixel and video timing generator
|
// hookup pixel and video timing generator
|
vga_pgen u3 (
|
vga_pgen pixel_generator (
|
.mclk(wb_clk_i),
|
.mclk(wb_clk_i),
|
.pclk(clk_p_i),
|
.pclk(clk_p_i),
|
.ctrl_ven(ctrl_ven),
|
.ctrl_ven(ctrl_ven),
|
.ctrl_HSyncL(ctrl_hsl),
|
.ctrl_HSyncL(ctrl_hsl),
|
.Thsync(Thsync),
|
.Thsync(Thsync),
|
Line 336... |
Line 342... |
csync_pad_o <= #1 icsync;
|
csync_pad_o <= #1 icsync;
|
blank_pad_o <= #1 iblank;
|
blank_pad_o <= #1 iblank;
|
end
|
end
|
|
|
// hookup line-fifo
|
// hookup line-fifo
|
vga_fifo_dc #(LINE_FIFO_AWIDTH, 24) u4 (
|
vga_fifo_dc #(LINE_FIFO_AWIDTH, 24) line_fifo (
|
.rclk(clk_p_i),
|
.rclk(clk_p_i),
|
.wclk(wb_clk_i),
|
.wclk(wb_clk_i),
|
.aclr(ctrl_ven),
|
.aclr(ctrl_ven),
|
.wreq(line_fifo_dpm_wreq),
|
.wreq(line_fifo_dpm_wreq),
|
.d(line_fifo_dpm_d),
|
.d(line_fifo_dpm_d),
|