Looking through what’s new on Mouser, I came across an advert for the Xilinx zynq-7000 SoC. These systems on a chip combine a processor with a massive FPGA. FPGA’s are useful for performing complex logic operations at the highest speeds. Processors can do the same logic operations as FPGA’s, but they have to break them into multiple simpler operations which use memory and require hundreds to millions of clock cycles. FPGA’s, on the other hand, can do the same operation in just a few clock cycles.
By combining an FPGA with a processor, as in these zynq-7000’s one is able to effectively use the FPGA to give the processor the ability to perform extremely complex logic operations at FPGA speeds. Furthermore, as the FPGA’s are programmable, it is possible to “retool” the FPGA in between blocks of high quantities of similar complex logic operations. This “retooling” takes some time, but there is the potential for a massive time savings overall. One of the best applications for this SoC, in my opinion, is for applications involving a lot of data stream processing such as feature identification and tracking in video or audio streams.
The Lattice iCE40 series of FPGA’s are not SoC’s and are much smaller FPGA’s in terms of LUT’s as compared to the FPGA’s built into the zynq-7000’s. But, the iCE40 FPGA’s are considerably cheaper. Nevertheless, one can use the iCE40’s in combination with an spi flash chip and cheap microcontroller to build a cheap module with a very modest fraction of the zynq-7000’s capabilities.