FPGA Prototyping with VGA Graphics
A highlight of PhD student Benjamin Blundell's first journey into the world of FPGA board design.
Video streaming for interfacing with TVs, monitors, etc. requires very accurate and tight timing, which make FPGAs the prime candidate as the hardware platform to process these video streams on. An FPGA's complete flexibility comprised of logic cells that can be configured however a user desires with hardware definition languages such and VHDL and Verilog mean that an FPGA can be configured to interface with just about anything.
With great flexibility comes great complexity unfortunately, and getting started with FPGAs isn't always the easiest, especially in terms of PCB layout. This is why I find any project posts documenting someone's first endeavor into laying out their own FPGA board very interesting. The way various obstacles such as first programming of the FPGA, and hand-soldering challenges manifest are always educational to read about second-hand. Which is what makes this blog post from a British PhD student an interest read.
To help his friend with a website that investigates all thing FPGA, Benjamin Blundell decided to build some prototype FPGA boards, with this being his first attempt.
Due to its lower cost balanced with 100 available user I/O pins and 6000 logic cells, he chose to go with the Spartan 7 Series XC7S6 from Xilinx. However, the FTGB196 XC7S6 FPGA's key feature is that it's not too small for hand-soldering. At 15 mm x 15 mm with a 1 mm ball pitch, it's not the easiest thing to solder, but not impossible.
Equipped with KiCad to layout this board, one of the bigger challenges with this layout was finding the footprint/component file for the specific XC7S6 FPGA he chose. This resulted in him having to make his own which must be commended, as this is quite the experience for a first-time design.
Aside from the FPGA, Blundell added footprints for some SRAM (mainly because it requires little circuity so it's lower impact on the amount of layout work that needs to be done), a USB to UART chip, and a PMOD connector to allow for various types of PMOD peripherals to be connected to the FPGA.
The blend of minimalism with flexibility of this board layout is quite genius! Choosing a well-supported and popular interface such as PMOD means this little board can interface with a broad range of peripherals. Specifically for this project, a VGA PMOD was deployed after assembling and debugging the FPGA board itself.
With the VGA code for FPGA from his friend whom he's helping out, his FPGA board was able to demonstrate its capabilities with some 3D animated squares dancing around on a VGA monitor! Blundell plans to add more to the layout in the future as he continues to dive into the world of FPGA board design and hopefully he'll keep documenting it! Check out his website here.