One of the basic building blocks of modern electronic devices are the Field-programmable gate arrays (FPGAs) Others are ASICs, microcontrollers (computer on a chip), DSPs, microprocessors, memories, … But FPGA is becoming more and more relevant as the integration of transistors grows larger and the logic gate density allows FPGAs to contain IP cores implementing the rest of the components on one single chip (System on Chip, SoC) which can include now not only hardware but even software (firmware, RTOS, …)
The design flow process from specification to FPGA implementation has analogies with the software engineering process. This I have just learned by reading an article in the embedded development community official web site, which I recommend to read:
By Ed Klingman
Embedded Systems Design
(03/04/04, 02:00:00 PM EST)
FPGAs and microprocessors are more similar than you may think. Here’s a primer on how to program an FPGA and some reasons why you’d want to.
Small processors are, by far, the largest selling class of computers and form the basis of many embedded systems. The first single-chip microprocessors contained approximately 10,000 gates of logic and 10,000 bits of memory. Today, field programmable gate arrays (FPGAs) provide single chips approaching 10 million gates of logic and 10 million bits of memory.
Powerful tools exist to program these powerful chips. Unlike microprocessors, not only the memory bits, but also the logical gates are under your control as the programmer. This article will show the programming process used for FPGA design.
As an embedded systems programmer, you’re aware of the development processes used with microprocessors. The development process for FPGAs is similar enough that you’ll have no problem understanding it but sufficiently different that you’ll have to think differently to use it well. We’ll use the similarities to understand the basics, then discuss the differences and how to think about them.