Having some weird flicker with VGA signal. *Please* point me to the probable cause.
Hello everyone.
Please help a newbie, I've done everything I knew how to do and can't seem to solve this...
Doing some retro computer emulation with Verilog and Cyclone V FPGA to teach myself the basics. I've actually got it working OK, what's bugging me is the display. I'm outputting VGA, 1280x1024 @ 60 Hz, video clock being generated with a PLL at 108 MHz (and running the CPU module with 54 MHz - this 108 MHz divided by 2). Pixels are being output from a shift register clocked at 108 MHz.
Everything works fine except few random pixels appear at random places occasionally, and I can't figure out why with my limited knowledge. I'm guessing timing, but don't know why and how and where. Tried using timequest which reported a bad chain using a lpm_divide instance. I've modified it as pipelined and it improved from -100 to -16. However, this changed absolutely nothing. Fmax reportedly increased to ~66 MHz (which is still way below 108). What could be causing this? Metastability issues? Incorrect clock domain crossing?
I'm attaching a video to illustrate, fixed dots are supposed to be here, the flashing ones are not.
If you saw this in your own design, what would be your guesses about the cause and what steps would you suggest for me as troubleshooting? I'm out of ideas... :)
Thanks in advance for any suggestions or tips!