Line 1... |
Line 1... |
//==================================================================//
|
//==================================================================//
|
// File: d_VGAdriver.v //
|
// File: d_VGAdriver.v //
|
// Version: 0.0.0.2 //
|
// Version: 0.0.0.3 //
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
|
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -//
|
// Copyright (C) Stephen Pickett //
|
// Copyright (C) Stephen Pickett //
|
// Jun 09, 2005 //
|
// Jun 09, 2005 //
|
// //
|
// //
|
// This program is free software; you can redistribute it and/or //
|
// This program is free software; you can redistribute it and/or //
|
Line 73... |
Line 73... |
input[8:0] TRIGGER_LEVEL;
|
input[8:0] TRIGGER_LEVEL;
|
input SHOW_LEVELS;
|
input SHOW_LEVELS;
|
output[9:0] HCNT, VCNT;
|
output[9:0] HCNT, VCNT;
|
input[2:0] RGB_CHAR;
|
input[2:0] RGB_CHAR;
|
|
|
output[15:0] ram_vshift;
|
|
|
|
|
|
|
|
|
|
//----------------------//
|
//----------------------//
|
// WIRES / NODES //
|
// WIRES / NODES //
|
Line 99... |
Line 97... |
|
|
|
|
//----------------------//
|
//----------------------//
|
// REGISTERS //
|
// REGISTERS //
|
//----------------------//
|
//----------------------//
|
//reg CLK_25MHZ; // General system clock for VGA timing
|
|
wire CLK_25MHZ = CLK_VGA;
|
wire CLK_25MHZ = CLK_VGA;
|
reg [9:0] hcnt; // Counter - generates the H_SYNC signal
|
reg [9:0] hcnt; // Counter - generates the H_SYNC signal
|
reg [9:0] vcnt; // Counter - counts the H_SYNC pulses to generate V_SYNC signal
|
reg [9:0] vcnt; // Counter - counts the H_SYNC pulses to generate V_SYNC signal
|
reg[2:0] vga_out;
|
reg[2:0] vga_out;
|
|
|
Line 111... |
Line 108... |
// FUNCTIONAL DEFINITIONS //
|
// FUNCTIONAL DEFINITIONS //
|
//==================================================================//
|
//==================================================================//
|
assign HCNT = hcnt;
|
assign HCNT = hcnt;
|
assign VCNT = vcnt;
|
assign VCNT = vcnt;
|
|
|
//------------------------------------------------------------------//
|
|
// CLOCK FUNCTIONS //
|
|
//------------------------------------------------------------------//
|
|
//always @ (posedge CLK_50MHZ or posedge MASTER_RST)
|
|
// if (MASTER_RST == 1'b1)
|
|
// CLK_25MHZ <= 1'b0;
|
|
// else
|
|
// CLK_25MHZ <= ~CLK_25MHZ;
|
|
|
|
|
|
//------------------------------------------------------------------//
|
//------------------------------------------------------------------//
|
// SYNC TIMING COUNTERS //
|
// SYNC TIMING COUNTERS //
|
//------------------------------------------------------------------//
|
//------------------------------------------------------------------//
|
always @ (posedge CLK_25MHZ or posedge MASTER_RST) begin
|
always @ (posedge CLK_25MHZ or posedge MASTER_RST) begin
|
Line 185... |
Line 173... |
VGA_OUTPUT = P_yellow;
|
VGA_OUTPUT = P_yellow;
|
end else if(SHOW_LEVELS == 1'b1 && vcnt == (TRIGGER_LEVEL+1'b1) && hcnt >= 10'd556 && hcnt <= 10'd558) begin
|
end else if(SHOW_LEVELS == 1'b1 && vcnt == (TRIGGER_LEVEL+1'b1) && hcnt >= 10'd556 && hcnt <= 10'd558) begin
|
VGA_OUTPUT = P_yellow;
|
VGA_OUTPUT = P_yellow;
|
end else if(SHOW_LEVELS == 1'b1 && vcnt == (TRIGGER_LEVEL-1'b1) && hcnt == 10'd557) begin
|
end else if(SHOW_LEVELS == 1'b1 && vcnt == (TRIGGER_LEVEL-1'b1) && hcnt == 10'd557) begin
|
VGA_OUTPUT = P_yellow;
|
VGA_OUTPUT = P_yellow;
|
///*
|
|
//------------------------------------------------------------------------------//
|
//------------------------------------------------------------------------------//
|
// MOVE THE WAVEFORM TO THE 'TOP' //
|
// MOVE THE WAVEFORM TO THE 'TOP' //
|
end else if(vga_out != 0) begin
|
end else if(vga_out != 0) begin
|
VGA_OUTPUT = vga_out;
|
VGA_OUTPUT = vga_out;
|
//*/
|
|
//------------------------------------------------------------------------------//
|
//------------------------------------------------------------------------------//
|
// TOP, BOTTOM, LEFT AND RIGHT GRID LINES //
|
// TOP, BOTTOM, LEFT AND RIGHT GRID LINES //
|
end else if(vcnt == 10'd0 || vcnt == 10'd399 || vcnt == 10'd441) begin
|
end else if(vcnt == 10'd0 || vcnt == 10'd399 || vcnt == 10'd441) begin
|
VGA_OUTPUT = P_cyan;
|
VGA_OUTPUT = P_cyan;
|
end else if(hcnt == 10'd0 || hcnt == 10'd639) begin
|
end else if(hcnt == 10'd0 || hcnt == 10'd639) begin
|
Line 232... |
Line 218... |
// ...
|
// ...
|
// row 15: ram_addr = 24 and 25 for each pxl
|
// row 15: ram_addr = 24 and 25 for each pxl
|
// row 16: ram_addr = 23 and 25 for each pxl *
|
// row 16: ram_addr = 23 and 25 for each pxl *
|
// row 17: ram_addr = 23 and 25 for each pxl *
|
// row 17: ram_addr = 23 and 25 for each pxl *
|
// ...
|
// ...
|
/*reg[9:0] ram_hcnt;*/
|
|
reg[4:0] ram_vcnt;
|
reg[4:0] ram_vcnt;
|
reg[15:0] ram_vshift;
|
reg[15:0] ram_vshift;
|
|
|
/*
|
|
always @ (posedge CLK_25MHZ or posedge MASTER_RST) begin
|
|
if(MASTER_RST == 1'b1) begin
|
|
ram_hcnt <= 10'd639;
|
|
end else if(hcnt >= 10'd143 && hcnt <= 782) begin
|
|
if(ram_hcnt == 10'd639)
|
|
ram_hcnt <= 10'b0;
|
|
else
|
|
ram_hcnt <= ram_hcnt + 1'b1;
|
|
end else begin
|
|
ram_hcnt <= 10'd639;
|
|
end
|
|
end
|
|
*/
|
|
|
|
always @ (posedge CLK_25MHZ or posedge MASTER_RST) begin
|
always @ (posedge CLK_25MHZ or posedge MASTER_RST) begin
|
if(MASTER_RST == 1'b1) begin
|
if(MASTER_RST == 1'b1) begin
|
ram_vshift <= 16'h8000;
|
ram_vshift <= 16'h8000;
|
end else if(vcnt > 10'd399) begin
|
end else if(vcnt > 10'd399) begin
|
ram_vshift <= 16'h8000;
|
ram_vshift <= 16'h8000;
|