In todays world many complex and huge digital systems are being implemented to make our life better. Implementation of digital electronics is shrinking in size, a first computer which use fit in 1 room, now fits on your palm and even more powerful.
theoretically even today you can think of implementing a large digital system on a bread-board, but practically that would really a pain. Lets analyze the problems associated if we try to build a pretty complex system on multiple bread board using basic components.
- This system will occupy huge space.
- Debugging mesh of wires will be nightmare.
- Huge re-work effort on the design if the system doesn't meet specifications (e.g frequency).
- Its will cost alot.
- Non re-usability of the modules and sub-modules.
- There will be transportability issues.
To tackle the above problems today designers have various options...
Micro-Controller or Micro-Processor based Design : Here the designer tries to approach a solution using hardware/software combination. The designer designs hardware to provide the interface, and the functional operations are done by the software (running on controller/processor). Instead of putting whole functional logic in the hardware, the logical operation are done by the software code embedded. These systems save lot of money and therefore are being implemented in many applications. These systems are also known as embedded systems. Since the functionality on these system is served by software, these are slow, and not good for real-time mission critical applications.
FPGA based Design : FPGA is Field Programmable Gate Arrays, FPGA contains programmable logic cells which can collectively provide a digital solution. Designer writes whole design in a Hardware Descriptive Language (VHDL or Verilog), where he describes the design in terms of basic components. Functionally same circuit is implemented within FPGA which is described in the design (VHDL/verilog). Here all or most of the design is implemented in hardware, hence FPGA based design are comparatively fast. Due to the peripheral circuitry and component requirement around FPGA, the product designed using FPGA are big in size. FPGA design is good idea for prototyping or application where product count is less.
ASIC based Design : This is one step ahead of FPGA implementation. The design described in VHDL can be sent to the foundry to make IC for this design. ASIC is an acronym for Application Specific Integrated Circuits. ASIC solution is good where the number of samples requirement is very large (e.g mobile phone industry). ASICs are very fast, since most of the functionality is done in hardware.