Should I use an FPGA or a microcontroller? This has always been a discussion for every new embedded project. It seems that FPGAs are going to rule the future because of their flexibility, increasingly better power efficiency and decreasing prices. Instead of programming a chip by telling it what to do, FPGAs allow you to tell a chip what to be. But if you are new to FPGAs, it can be a daunting task to decide where to start and collect all the tools to support your learning. Using this article as your guide, you can solve this problem by first selecting the vendor for the FPGA, then selecting an appropriate family of chips from the vendor and finally deciding a suitable development board
The first thing you need to settle yourself on is selecting a suitable vendor and family of FPGAs. The tool chain is one of the most important factors that will influence this decision. Though all manufacturers have a complete tool chain for each of their products but everyone will have a different opinion about the feel of different tool chains. So build your own opinion by downloading software tools from different manufacturers’ websites and play around with them. You can start working with these tools without any hardware required and get your designs at least up to the simulation stage.
Once you have decided on the software tool you like the most, you can go to the corresponding manufacturers’ websites (see table) to check out all the FPGA solutions they provide. By entering your design information in one of these software tools you can have an idea about the resources you need in the FPGA chip to implement it. This data will help you decide on the family and the size of the FPGA chip that you should use in your project.
Vendors normally break up their offerings into several families. You will need to go through their datasheets to figure out the most suitable chip for you. Below are some parameters that could help you decide on an FPGA chip:
1. On-chip RAM size
2. Input/output (I/O) interfaces
3. Number of DSPs/multiplier blocks
4. Device speed grade
5. Operating temperature
6. Package size
7. Device density
8. I/O pin counts
Again, the hardware description language (HDL) code will help you a lot here as the software tool can easily tell whether the code will fit into the selected device or not.
Selecting a development board
A development board is actually a printed circuit board (PCB) with some circuitry and hardware on-board to facilitate experimentation with a dedicated chip. These boards can save you from a lot of repetitive tasks. Imagine, you want to work on an FPGA-based project, but to be able to use an FPGA chip you need to solder this chip on the PCB as you cannot breadboard it. Also, you will have to set up a bunch of circuitry and hardware interfaces every time you want to work with that chip for different projects.
Obviously, this could frustrate you, especially when there are portions of the circuit which are going to be the same every time, such as the power supply. Also, there are lot of chances of soldering errors due to fine pitch of these ICs. Having most of the hardware and circuitry already set up makes life much easier and it is much more conducive to experimentation and general prototyping.
While choosing a development board, make a block diagram of your project and list out all the features you would need. FPGAs are ideal for use with high-speed peripherals and, in general, it is much easier to buy a board that contains the part you want, rather than trying to add one later on. For example, if you need a gigabit Ethernet, HDMI/DVI, PCI/PCI Express or external non-serial memory, you should buy a board that already has them as it will be very difficult to add them later on.
On the other hand, things such as MMC/SD cards, character LCDs, serial interfaces, LEDs and switches are easy to add and are not so much of a big deal to wire up. But it is better to get a board that has them so that you do not waste valuable time investigating failures caused due to soldering skills.
FPGAs are quite a complex device and, to build a project on a development board, it is important that you know how the interfaces and other hardware is wired on the board. Most manufacturers have proper legends on the board to indicate the interfaces but wiring sometimes can be difficult to trace. So check that the manufacturer provides complete schematic diagram, a reference manual, getting started guide, reference designs and sample codes.