By Professor Dogan Ibrahim, Academic and technical author
Early microprocessors were multi-chip systems where devices such as CPUs, memory, input-output, timing, interrupt control etc were used to build micro-computer systems. The main disadvantages of such systems were the high power consumption, complex PCB design and, consequently, low reliability and high cost. For many years, microprocessor training kits have been used to teach the principles and applications of microprocessor-based systems. Most such training kits were usually developed in house, programmed using the assembly language of the target processor, and had very limited capabilities. For example, a small-capacity EPROM-type non-volatile program memory could not be programmed on-board and required an EPROM eraser. Also, the capacity of the data memory was so small that some LEDs and pushbuttons were provided on-board to help teach the principles of microprocessors and develop microprocessor-based projects.
Over the last few decades, microprocessors have been replaced with microcontrollers, or MCUs. A microcontroller, also known as a single-chip computer, includes a microprocessor and supporting devices on a single IC. Microcontroller-based designs have a significantly lower power consumption and cost compared to microprocessor systems, and their PCB complexity is also much lower.
In the past, hardware was the expensive part of the overall system design, whereas software was cheap and rather limited, since the capacity of the program memory was very small compared to today’s standards. Nowadays, the reverse is true; the hardware constitutes a fraction of the overall system cost and software development and maintenance are the major expenses in the design.
Most computer and electronic engineering curricula have in the last decade shifted their focus from teaching the CPU theory and computer architecture to system design built around highly integrated microcontrollers and embedded systems. Much more emphasis is also given to teaching the principles of software engineering, software development and algorithmic design techniques.
Microcontroller-based system design is nowadays carried out using microcontroller development boards, or kits. Although these boards are similar in idea to the earlier microprocessor training kits, they contain much more powerful processors with many interface and supporting modules. For example, some development kits are equipped with processor chips having 100 or more pins that may include very large program and data memories, many input-output ports, several UART modules, I2C, SPI and CAN interfaces, ADCs and DACs, several timers, on-board programmer, and much more.