1. Introduction
An embedded system is a computing system rather than desktop computers/laptops/palmtops, capable of reacting spontaneously with sensory inputs in real time and designed for dedicated applications. Typical applications that employ embedded systems include fax machines, copiers, printers, scanners, cash registers, alarm systems, card readers, mobile phones, digital cameras, washing machines, DVD players, speech recognizers and many more. Like typical computer systems, embedded systems too include hardware and software components. In other words, it is common to use both application-specific hardware accelerator circuits and general-purpose programmable units with appropriate software for embedded system design. Usually application specific hardware is much faster than software and also more power efficient, but expensive at the some time. Software, on the other hand, is cheaper, but slow and consumes much power when implemented on a general purpose processor. Hence for faster realization or power-critical situations, hardware based systems are preferred, whereas noncritical modules of embedded systems are realized in software. Consequently a trade-off between cost, power and performance needs to be devised to realize an embedded system on a mixed hardware/software platform.