Digital Systems Design with FPGAs and CPLDs

Increasingly, electronic circuits and systems are being designed using technologies that offer rapid prototyping, programmability, and re-use (reprogrammability and component recycling) capabilities to allow a system product to be developed in a minimal time, to allow in-service reconfiguration (for normal product upgrading to improve performance, to provide design debugging capabilities, and for the inevitable requirement for design bug removal), or even to recycle the electronic components for another application. These aspects are required by the reduced time-to-market and increased complexities for applications from mobile phones through computer and control, instrumentation, and test applications. So, how can this be achieved using the range of electronic circuit technologies available today? Several avenues are open. The main focus of developing electronics with the above capabilities has been in the digital domain because the design techniques and nature of the digital signals are well suited to reconfiguration.
In the digital domain, the choice of implementation technology is essentially whether to use dedicated (and fixed) functionality digital logic, to use a software-programmed, processor-based system (designed based on a microprocessor, ?P; microcontroller, ?C; or digital signal processor, DSP), or to use a hardware-configured programmable logic device (PLD), whether simple (SPLD), complex (CPLD), or the field programmable gate array (FPGA). Memory used for the storage of data and program code is integral to many digital circuits and systems. The choices are shown in Figure 1.1.
In Figure 1.1, the electronic components used are...