Electrical – Modifying VGA Controller For My Monitor


I saw this VGA demo for a 640×480 monitor


and I would like to run it on my monitor using a Basys-3 FPGA.
The GPIO demo code for the Basys-3 board works on my monitor, so I know it is possible to display it given 1280×1024 resolution, so I decided to modify their code accordingly. The full code is in a zip file which can be downloaded from that link (NERP_demo.zip).

I used values I found from this link
and so the part of their code I modified from the vga640x480.v file looks like this:

// video structure constants

parameter hpixels = 1280;// horizontal pixels per line

parameter vlines = 768; // vertical lines per frame

parameter hpulse = 128;     // hsync pulse length

parameter vpulse = 7;   // vsync pulse length

parameter hbp = 216;    // end of horizontal back porch

parameter hfp = 88;     // beginning of horizontal front porch

parameter vbp = 29;         // end of vertical back porch

parameter vfp = 3;  // beginning of vertical front porch

// active horizontal video is therefore: 784 - 144 = 640

// active vertical video is therefore: 511 - 31 = 480

However, I still can't get their demo to run on my monitor. Before I changed their values, when I tried running the code, my monitor was telling me to switch to 1440×900. After I changed the values, I don't get that suggestion anymore, but the screen is still black. I don't know what to do.

Best Answer

You're missing an important detail -- the pixel clock for the new video mode is completely different! It requires a 109 MHz pixel clock, as compared to the 25 MHz pixel clock used for the 640x480@60Hz mode.

This 109 MHz clock cannot be derived directly from the 100 MHz input clock; you will need to use the clocking wizard to generate this signal.