As the miniaturization of systems continues, we see more and more hybrid FPGA-ARM system-on-a-chip (SoC) devices being developed. Like with any evolutionary process, people are trying to see what’s coming next based on what they see happening now. I recently read a very interesting article written by Ron Wilson, Editor-in-Chief for Altera, who looks at what the future may hold for programmable logic. In his article, Altera’s 30th Anniversary: Looking Forward, Wilson picks the brains of two professors who share their thoughts on this matter.
System designers like to take advantage of the individual strengths of different types of processors and use their combined power to get the most out of their designs. When looking at processing power, they often prefer FPGAs to other processors. FPGAs are ideal for processing large amounts of data in parallel (massive MIMO applications, for example). For control algorithms, you often want to use a processor like an ARM that is highly suitable for implementing decision-making processes and complex state machines. Control algorithms can be tedious to implement on FPGAs. In fact, when such algorithms must be implemented on an FPGA, a programmer will often use a microprocessor emulated in the FPGA logic. Nutaq’s Perseus firmware, for example, uses an emulated MicroBlaze processor in its MicroTCA software solution to handle all the commands and exchanges between the FPGA and a remote PC.
In the article, Wilson points out experiments that embedded hard CPU cores into FPGA chips. Some devices like these already exist on the market, like the Zynq SoC from Xilinx. The Zynq combines an FPGA and a hard dual ARM-9 processor (thus replacing the emulated MicroBlaze processor). This combination is much more powerful and versatile than the MicroBlaze and still provides access to the FPGA memory. Such devices are great simply because they enable the implementation of a wide variety of applications on a single chip. Nutaq’s Zedboard, for example, uses the Zynq SoC and is able to run a complete QAM-64 OFDM PHY-layer on the FPGA while running a GNU Radio model on the ARM part of the chip.
Looking at the evolution of the processing devices in the DSP world, it seems obvious that the reprogrammable logic in FPGAs is here to stay. While I agree that FPGAs can take advantage of specialized hardware cores for specific types of processing, I also think that larger devices of fully programmable logic will still make their mark. Massive MIMO applications are actively being developed in telecommunications (and similar applications in other fields like astronomy). The need for devices capable of heavily parallel processing has never been greater. In these applications, a device with fully reprogrammable logic such as an FPGA shines as a reprogrammable parallel processing unit. While specific hardware cores for specific operations are great since they improve performance, specialisation is good. Just like in one's professional life, as the level of specialisation increases in a domain, the group of people requiring that level of specification gets thinner.
I really like Jason Cong’s idea when he talks about the potential of rapid partial FPGA reconfiguration. I would be very interested to see a heterogeneous architecture using an ARM-like processor on chip to oversee the FPGA's logic on-the-fly reprogramming and communication within FPGA cores. I also agree with him that a functional language of some sort will have to be used to ease the development process on heterogeneous systems. Whether this language already exists or not, it would be desirable for a consensus in the developer community about what this language should be. Everyone speaking the same language can only help accelerate the evolution of such systems.
FPGAs and their derivatives are part of our lives and are here to stay. Existing applications will benefit from specific hardware cores in terms of performance, energy consumption, etc, but in order to develop the next generation of systems, re-programmability is needed or at the very least is highly desirable. I think on-the-fly logic reprogramming will play a big role in the future. How and when it will be implemented is still unclear, but it will certainly be an interesting story to follow.