Based on http://fpga4fun.com/PongGame.html
767 was the value checked for at 25Mhz. This is a count of 768.
I doubled it to 1535. and added one to all references to Counter X.
I am confused on these values. References I’m finding say to shoot for 31.5kHz but this works out to 32.5khz?
50e6/31.46875e3 gives 1588.87785501. Ok. That works too. I guess the monitor is just flexible.
I got an error for can’t use pin 101 which is V sync
Need to disable nCEO which is using that pin
module vga_test ( output vga_h_sync, output vga_v_sync, output R, output G, output B, input clk ); reg [10:0] CounterX; reg [8:0] CounterY; wire CounterXmaxed = (CounterX==1535); always @(posedge clk) if(CounterXmaxed) CounterX <= 0; else CounterX <= CounterX + 1; always @(posedge clk) if(CounterXmaxed) CounterY <= CounterY + 1; reg vga_HS, vga_VS; always @(posedge clk) begin vga_HS <= (CounterX[10:5]==0); // active for 16 clocks vga_VS <= (CounterY==0); // active for 768 clocks end assign vga_h_sync = ~vga_HS; assign vga_v_sync = ~vga_VS; assign R = CounterX;//CounterY | (CounterX==256); assign G = CounterX;//(CounterX ^ CounterX) | (CounterX==256); assign B = CounterX; //CounterX | (CounterX==256); endmodule
Alright. It appears to work. That is a good start.