In past weeks many people have posted various blogs describing the differences between the Xilinx Spartan 6 and 7 series of FPGAs. Since I have no professional background in FPGA development or electronics, I would like to write about what I have noticed when working with the Arty S7 board.
All the 7 series Xilinx FPGA devices are made on 28nm node, while Spartan 6 is a 45nm technology. In layman’s terms, this brings similar improvements as seen in different generations of CPUs or GPUs. There have been many architecture changes from older devices to newer ones. For example, sizes of in-built RAM blocks have increased, the composition of logic blocks has changed, DSP multipliers have been improved, etc. Many of these changes are hard to understand for a beginner and are better left to users with more experience. On the other hand, there have also been some additions, that make Spartan 7 devices a bit more friendly to beginners.
One of the bigger changes is the shift from Xilinx ISE to Vivado for FPGA development. Vivado is used for every concurrent FPGA from Xilinx, which is very good by itself. Paired with Vitis, they make an extremely powerful toolchain. The fact that I can use the same tools for both a Zynq SoC and a Spartan 7 FPGA is impressive. A consequence of this, which was very useful when working with the Arty S7, is the fact that I can develop on a Zynq board (with some considerations) and easily port it to the Spartan 7.
This might not seem that useful, but PYNQ makes a potent tool when developing an FPGA design. E.g. for my project, I have some amount of digital signal processing. When I was developing the DSP core, I was able to use a Zynq board with PYNQ tools to simulate signals going into the core and analyse the data leaving it. Another aspect is that I can use PYNQ to test the AXI buses connecting multiple parts of the design. I like this approach a bit more since there is a clear separation between a processor and FPGA fabric, whereas a Microblaze core is a part of the FPGA.
Another great change when comparing Spartan 6 and 7 devices is the addition of XADC. First, this makes many designs simpler both in terms of logic and electronics, since there is no need to add an ADC IC and its corresponding IP. This applies mostly in simple cases where an ADC is used to monitor some simple parameter e.g. temperature.
Second, an internal ADC simplifies the development process, where some feature that needs an ADC, can be tested to some degree on the XADC. Later, if need be, it can be implemented using an external ADC. This can save both time and money.
To conclude, the differences between Spartan 6 and 7 are numerous. They are not just better performance, bigger memory, the lower power consumption etc. In my opinion, the biggest difference comes from how the Spartan 7 fits into the current offering from Xilinx. The fact that it is possible to one day develop on e.g. Zynq series device and the other day's work with Spartan 7 is incredible in itself. Furthermore the ability to use one of my existing development boards to create a design (or at least a part of it) for some other device is great.