Approximate ram speed:
100 megabytes per second with a burst length set to 16. (Using 27Mhz X 6 in PLL X2 for DDR = 324 MTPS)
Add 50% for a burst length of 32. Speed improves further as you increase burst up to 128.
For a 90 degree rotate (really advanced, even more so than 3D XYZ image filtering/processing), you do realize that NTSC&PAL are interlaced, without deinterlacing, you will have crap results, but if 240p is acceptable (old super-nintendo type resolution), then you are ok. You also want 4 fields of memory for de-interlacing. That's a good 16 megabytes for 422 16bit color PAL. 1 entire ram chip.
Also, with the memory bursts being sequential, and if you want to use a burst of 16, you will need 3 blocks of 16 line buffers inside the FPGA where you store a triple incoming video buffer where you rotate chunks of display in blocks of 16x16 pixels over an entire 16 lines of video.
This means that you would want (say for efficiency in allocation within CycloneIV M9K ram blocks):
720 pixels x 20 bit color x 16 lines x 4 buffers =
1024 x 18bits x 16lines x 4buffers = 1179648 bits of FPGA ram = 128 M9k CycloneIV ram blocks.
The smallest Cyclone IV has only 270kbits, or, 30 M9k blocks.
If you do some trickery to get the line buffers down to 16lines by 1 buffer, you still need 32 M9K blocks.
I would recommend using the EP4CE10 as it has almost double the M9K blocks of ram at 414kbit, or, 46 M9K blocks.
(No matter how you allocate ram in Quartus, it will always round up to 1 M9K block at a time, or if you go above 9 bits to 10 bits, this also may double your allocated memory as is will be considered an 18bit wide ram with the final 8 bits ignored. The compiler may attempt some optimizations depending on memory depth and how it may divide into a single M9K block.)
(Except for 2 or 3 pins different, the 144pin QFP EP4CE6 and EP4CE10 a almost pin for pin compatible. Make sure your PCB is already wired to accept either both FPGAs. The larger 144pin EP4CE15 and largest EP4CE22 have a few IO swapped to VCCint and GNDint. If you don't need those particular IOs, you should move them to the larger EP4CE15/22 and in Quartus, even if you placed the smaller FPGA, just set those IOs to unused inputs. This way you can use any FPGA size if you ever need to.)
Don't forget to add a dummy TTL RS232 IO port for good measure.
That big hole under you FPGA, I assume you will be filling it with solder as the heat sink?
Also, here is another third party schematic as reference for the JTAG and AS (Active Serial port), and serial prom wiring for reference:
https://www.eevblog.com/forum/fpga/fpga-vga-controller-for-8-bit-computer/?action=dlattach;attach=871688I don't see any protection diodes on the JTAG and it is being powered from the 2.5v regulator with 2.5v on the pullups. The AS active serial port is using the 3.3v.
This board has been used extensively here:
https://www.eevblog.com/forum/fpga/fpga-vga-controller-for-8-bit-computer/msg2783910/#msg2783910We know it works.