FPGA:A quick tour of a few boards
From Hamsterworks Wiki!
This is part of the FPGA_course_v2.
There is a lot of different FPGA boards out there, and they all look very different. Here is a quick tour of a few different boards, showing what makes up a development board and hopefully allowing you to locate the key ares of your.
The largest chip on the board is usually the FPGA. Because it will have the highest number of pins and it is connected to everything you will usually find it in the center of your board. On high-end boards it might even have a heatsink on it.
The way the chip is packaged will often tell you a bit about the board. Sometimes you will not be able to see any connections to the chip, they are all located on the underside of the chip in a grid of connections. These packages are known as "Ball Grid Array" as fresh chips have small balls of solder underneath in a grid pattern. The grid can be tiny, with connections only 0.5mm apart, and a high end FPGA might have over 500 connections!
If you can see connecting small wires that are soldered to circuit board then it will be usually be a package called "Thin Quad Flat Pack". Due to the limited number of of pins (only 100 or 144!) this is used on on the smaller FPGAs. This footprint makes the device usable on two-layer PCBs, making it a popular choice for designers who have limited resources or require assembly at home.
Not all chips are created equal, so FPGAs come in different 'speed grades' that provide a minimum guaranteed level of performance. When you are creating a design it is important to know the speed grade so the design tools cam ensure your design works correctly. You will find it is etched on the FPGA, usually in the bottom left. Because grading is the last step in the process of packaging the chip it will often look different to the other markings and be the least readable!
Perhaps the next most important part of the board is the power supply. For some boards the power can be supplied over a USB cable, and on others it will usually be a barrel socket of some sort. There may even be jumpers to select which power source is active. FPGAs often require a few different voltages - most commonly for Core Logic and then for powering each bank of I/O pins so it is not uncommon to find three or more regulators on the board.
This board has a 5.0 volt, 3.3 volt, 2.5 volt and 1.2 volt regulators on it.
On smaller boards the regulators will be simple linear regulators. Because these convert excess voltage into heat they are relatively inefficient and most boards now use more complex switch mode supplies. Power systems can get very complex as the timing for when each of the supplies starts up needs to be carefully staged to ensure reliable behavior.
A high frequency 'clock' is used to coordinate the processing of data within the FPGA. Some common frequencies used are 25,000,000, 32,000,000, 50,000,000 cycles per second. This is usually supplied by a crystal oscillator, This is usually a small rectangular metallic package with four terminals and has the speed engraved in the top.
If your board has an on-board programming interface this to will need a clock, and this will often just be a quartz crystal, often housed in a small rectangular metallic package with rounded ends. It too will have the speed stamped on the top.
Host and programming interface
Most FPGAs are programmed over an interface called "JTAG", however PCs and Laptops do not have the hardware needed to connect to a JTAG port. Most popular development boards have a USB to JTAG adapter built onto the board.
On quite a few of the boards this will also provide a virtual COM port that can be used to communicate to a design running in the FPGA. A common solution is to use a FTDI FT2232D USB UART/FIFO IC.
JTAG is a standard way to connect to your development board and configure or debug chips. On most development boards there is already a USB to JTAG adapter already built in. Production hardware (and minimalist boards) will avoid the additional cost of the USB interface and just provide a line of connections where you can attach your own JTAG adapter.
Most boards have a small serial flash chip. This is used to hold the FPGA design while the board is powered off.
When the power is first applied, the FPGA will read the design out of the serial flash and 'run' it.
Although an FPGA has high speed RAM on it, it is very limited - most FPGAs will have about 100 kilobytes or less. Most current boards will also have an external RAM chip, quite often SDRAM or Low Power DDR SDRAM.
This chip is a 32 megabyte SDRAM, with a 16 bit interface. Like FPGAs memory has different speeds to, and on this part the -7E indicates that the device has a 70 nanosecond access time, allowing it to work correctly at up to 143MHz.
Various simple on-board interfaces or peripherals
A digital system with no inputs or outputs is not of much use to anybody, so on development boards you usually find an assortment of simple interfaces that can be used in your designs without resorting to the soldering iron.
Most boards have a couple of small buttons that can be used as you wish. On some boards you might even get a mini-joystick.
From the electronics perspective, switches are much like buttons - they let you supply a single bit of input to your FPGA, What makes switches different then buttons is when you take your finger off of a button it reverts to whatever its normal state is, where as a switch remains in the position you have set it to.
The most common switches on an FGPA development board are small slide switches, however on the smaller boards DIP switches might be used.
Light Emitting Diodes (LEDs)
LEDs are an inexpensive way provide feedback to the user, and you will be using them extensively. You can see them just above the switches in the photo above.
A lot of boards now have a few basic sensors - with those for acceleration and rotation being more common.If your board doesn't have any and these are of interest to you there are many inexpensive add-on modules now available that can be used to expand your board.
Once you have the data from these sensors it might take quite a lot of processing to make use of them. The sort of processing involved is usually best performed by the host computer or maybe an 'soft' CPU implemented within the FPGA's logic. It is not that it can't be done, but implementing it in hardware does not usually provide a good return on your time or make the most of the FPGA's logic resource.
One of the best projects on an FPGA is generating VGA display signals. Quite a few development boards have a analog VGA connector but the display is limited to usually 246 or 4096 colours.
Quite a few boards now include HDMI or micro-HDMI connectors. HDMI is an all-digital video interface and is much more complex to implement than simple FPGA - because each pixel's data red, green or blue channel is converted into a serial bit-stream the signals required for DVI-D or HDMI are ten times faster than that required for the equivalent analogue signal. Your board may also have a HDMI transmitter chip which can do this hard work for you, but these are not trivial to use.
Seven Segment Displays
Nothing says "I'm a development board" louder than Seven Segment Displays.
Although pretty retro, these are quite fun to work with. They also allow a nice way to display numerical data from sensors or timers. You can design your own digital clock or stopwatch,and unlike LCDs they can be read in the dark.
Project - Creating a cheat-sheet for your FPGA
There is a few things you will keep needing to know but can never remember. Why not make up a cheatsheet and pin it to the wall?
|FPGA Board name|
|FPGA Vendor and Family|
|Clock speed||_____ MHz (_____ ns)|
|Clock I/O Standard|
|LED pins||____, ____, ____, ____, ____, ____, ____, ____|
|Switch pins||____, ____, ____, ____, ____, ____, ____, ____|
|Button pins||____, ____, ____, ____, ____, ____, ____, ____|
All of this information should be in your FGPA board's reference manual, quick start guide, or on the supplier's web site.
It is good time to find and maybe print out the schematics for your board, and to also create a new folder to build up a library of datasheets and user guides.
Links for the Spartan 6 FPGA family
Links for the Papilio boards
Links for the Logi boards