AUTOMATIXARON
First steps in FPGA development
Aim of the tutorial:
This page will serve as a prerequisite page for general FPGA development hardware and software environment setup.
Hardware setup:
The most important part of the setup is an FPGA development board (duh), with a breadboard.
Next, a programmer is needed to configure the internal structure of the IC. The most basic way to program an FPGA when debugging is to use a Joint (not that joint) Test Action Group (JTAG) programmer. If the FPGA has an external FLASH memory, that can be programmed through SPI communication, and the FPGA will boot from the FLASH. There are other options such as using an eMMC flash, SD card, USB, or Ethernet but each of these options requires a pre-programmed soft or hard boot-loader IP.
Finally (optionally) we would need a logic analyser for external signal debugging, and a JTAG debugger for internal signal debugging.
​
Software setup:
The first thing we need is a text editor, preferably something more advanced than Notepad. Sublime Text3 is a viable option, since it has syntax highlight function, and it's cross-platform. Another great option is Atom, which is somewhat new, but it's evolving fast. Finally, if we want to use the editor for FPGA/SoC development, then Sigasi Studio is my number one recommendation. It has syntax highlighting option, auto complete functionality, function navigation, refactoring, etc. It's a nice and complete IDE for (System)Verilog and VHDL.
Oh and nearly forgot: AVOID USING THE EDITORS PROVIDED BY ANY KIND OF FPGA TECHNOLOGY CORPORATION. For some unknown reason, the editor part of their IDE still lacks in multiple parts.
Still, download their IDE, because we will need the toolchain for project synthesis. For Xilinx use Vivado (for 7th generation ICs) or ISE (for 6th or earlier generation ICs), for Intel/Alterra use Quartus, for Microsemi use Libero, and finally for Lattice Semiconductor use Diamond or Radiant depending on which FPGA family you choose.
​
For software simulations, we can use ActiveHDL or ModelSim - the most popular HDL simulators that I know.
My setup for the Tiny FPGA board:
I will use the TinyFPGA A2 board in a breadboard, with it's programmer. For internal debugging I will be using an FT2232 based board - If I manage to build it in time. For external debugging I'll use an EDUX1002A oscilloscope and a Tenma UTG1005A function generator if needed. I will write the code in Verilog HDL in Sigasi Studio, and synthesize the loadable files with Lattice Diamond with it's ActiveHDL simulator.
​
I will mention other specific software usages on the go, in the case of more advanced tutorials.