As described in the previous post on Embedded System Design, the processor forms the most important part of the embedded system. In this post, we will discuss about various types of processors, processor classification and supporting technologies available at our disposable for the embedded system design. We will also look in to the considerations to be factored during embedded system processor selection process.

While in an embedded system, a micro controller is a more accurate term as most of them are highly integrated and are System-On-Chips, we will use the term “Processor” to refer to the processing core.

Processor Classification

With the first popular processor “Intel 4004” available commercially in 1971, there are a large number of processors available for designing a system. These processors can be classified in a number of ways.

By Data width

The microprocessors are available in various data width configurations like 8-bit, 16-bit, 32-bit, 64-bit etc. Typically, a ‘n’ bit-width processor can manipulate a ‘n’-bit data in a single instruction cycle. For example, a 32-bit microprocessor will have registers of 32-bits wide and hence perform operations on a 32 bit data in a cycle than an 8-bit controller that may need more than 4 cycles to do the same process.

Higher bit-width processors will also generally come with a larger addressing capability thereby enabling heavier operating system to run. But with lower bit width, higher code density can be achieved enabling more functionality in a same amount of program memory.

By Number of Cores

Nowadays microprocessors are available with more than one cores typically, but not limited to, 2 or 4 cores. Such multi-core processors are well-suited for multitasking environments because they offer multiple execution contexts simultaneously. Various factors need to be considered during selection of a multi-core processor including the cache availability, power consumption etc. To use the multiple cores effectively, the operating system must support the same which is a norm for major OS’s lately.

By Type of Cores

In a multi-core processor, the cores inside may be of same or of different architectures. Symmetrical multi-core processor is the one in which the cores are identical. Asymmetrical multi-core processor unlike the former will have different cores with different instruction sets, clock speeds, and have differing memory and programming models. The big.LITTLE from ARM is an example of this architecture. The key benefit of such a model is that each of the cores is typically specialized to accomplish a specific type of task; therefore, yielding improved performance.

The main disadvantage of asymmetrical multi-core is that the application development is complex and highly application specific, whereas in symmetrical multi-core processors, it is relatively easier. Similarly the main disadvantage of symmetrical mulitcore is that, because the cores are designed for general use, they cannot be optimized to perform a particular type of task.

By Architecture

Various vendors have designed processor cores based on different design philosophies and technologies each suitable for different application scenarios.  Some of them include the ARM, PPC, x86, AVR’s, SH etc

Popular Architectures

ARM

ARM is one of the leading suppliers of microprocessor technology, offering the widest range of microprocessor cores to address the performance, power and cost requirements for almost all application markets. Arguably ARM core offers the best Power-Performance ratio and is the most used in the battery-operated embedded segments especially with the mass proliferation of smart phones.

ARM cores are available in various computational capabilities. The latest v7 cores are available for different application scenarios such as Cortex-A series for Applications, Cortex-R for Real Time and Cortex-M for Micro-controller profiles.

ARM cores also available with different technologies like

  • Thumb Instruction Set – 16 bit instruction set for higher code density
  • Jazalle – Java Byte Code Execution
  • VFP – Vector Floating Point Units
  • SIMD – Single Instruction Multiple Data
  • NEON – Advanced SIMD for media processing
  • TrustZone – Security Extension

ARM architecture support processors in 32-bit and 64-bit core and in single-core/multi-core variants.

PowerPC

PowerPC is an acronym for Performance Optimization With Enhanced RISC – Performance Computing. This is a RISC architecture created by Apple–IBM–Motorola (AIM) alliance originally for personal computers.  PowerPC CPUs have since become popular as embedded and high-performance processors. The PowerPC is mostly known for its use in Apple’s Macs and their design is optimized for use in communication segments. Along with the i386 and the ARM, the PowerPC (PPC) is a very well supported architecture in Linux.

x86

x86 is the generic name of a microprocessor architecture first developed and manufactured by Intel. X86 architecture has been widely used in desktop and servers. While X86 processors are CISC based designs, the latest of them uses a RISC-based instruction execution unit internally.

The primary advantage is that we are very much used to these cores as they are the dominant in the PC segment. Hence any software application that works on the X86 PC also works on the embedded target with a very minimal effort. Also because of their prolonged leadership in the market, there are a numerous ready-made applications available.

The main disadvantage of X86 processor is that the power consumption is high compared to ARM processors along with limited industrial grade temperature availability. The design complexity as well as the overall cost is generally high.

AVR

The AVR is a modified Harvard architecture 8-bit RISC single chip micro-controller developed by Atmel. These cores are very popular and are very useful for low end application segments. A wide range of processors are available for selection from Atmel supporting multiple peripherals. They have also come up with 32 bit cores for powerful applications.

PIC

PIC is a family of modified Harvard architecture micro-controllers made by Microchip Technology. They are the most low cost devices and are very popular with the student community and are also used in the industrial segments. They are available in wide range of core and peripheral set options.

 

Now that the processor classification is discussed, in the next article, we will discuss about the other consideration in choosing the processor.

With the rising need of automation and advent of faster and smaller processing technologies, embedded systems are being universally used across the industries. Because of their specialized application, embedded systems need to be designed with careful considerations. In a series of posts, we will discuss about the various techniques that goes in to the embedded system design starting with its general architecture.

What is an embedded system?

An embedded system is a computer system designated to perform a dedicated function. They are generally a part of a bigger system or sometimes they themselves form the entire system. There are many categories of embedded systems depending on their functionality, reliability etc.

Embedded systems constantly evolve with advances in technology and dramatic decreases in the cost of implementing various hardware and software components. Some embedded devices requires higher quality and reliability than other types of computer systems, for example a critical medical device malfunctioning at the time of surgery will result in a very serious problem but there are also embedded devices such as TV’s, games, and cell phones in which a malfunction is an inconvenience but not usually a life threatening situation.

Some examples of embedded system includes Ignition system, Engine control in Automotive, Set top boxes, PDA’s, Microwave Ovens in Consumer Electronics, Robotics, Assembly Control System in Industrial, Gateways, Mobiles etc in networking.

Components of an embedded system

Essentially an embedded system is a miniaturized computer. The following block diagram depicts a typical embedded system.

 

Embedded System Components

Modules in an embedded system

As with any computing device, it has the following components:

Processor:

Processor is the brain controls the entire system. It holds the logic circuitry that responds to and processes the basic instructions that drives the system. It manipulates the control and data path to achieve the expected functionality. There are many application-specific and general-purpose microprocessors available. We will discuss in detail about the microprocessors in next post.

Memories:

Memories are the components that support the processor to hold data temporarily or permanently for immediate use and or later use. Memories are of two types: non-volatile – capable of withholding data after power cycle and volatile – not capable for persistent data storage. Memories come in various technologies and sizes that can be chosen based on the specific needs of the system.

Inputs/Outputs – IOs:

An embedded system responds to events from the external world and results in certain action be taken. This is accomplished with the IOs – inputs and outputs. While a real external world event is in form of a continuous analog signal (temperature reading of a furnace) or a discrete digital signal (on/off state of a switch), the input presented to the embedded system is generally digitized. This digitization is achieved using ADC’s for the analog signal or comparator circuits for a digital signal or it might be presented digitally using channels like an external message to the system. Similarly the outputs in the digital form are converted to suit the real world using many available techniques to be discussed later.

User Interface:

While the IO’s typically refers to interaction between the embedded system and the controlled system, the user interface represents the interaction between the user and system. Various technologies are available to implement the User interface including LCD’s, touch panels, key pads, buttons etc. An intuitive design enables easier and enhanced control of the system and this is becoming more of a mandatory requirement rather than an option.

Power Supply:

Another most important consideration of the design is the power supply. The system may be powered directly from the power line or using a battery depending up on the nature of the use. Its design requires deep analysis and careful incorporation according to the system requirement. Improper designing of power supply may not only affect the system performance but may end up damaging the system also. Further nowadays with emphasis on a greener world, it is more important to design a power-efficient system.

Mechanicals:

The mechanicals include cabinet and connectors. Cabinet protects the system from various external factors and provides ambience to the internals. The connectors support the connection of the external signals into the system. Various factors determine the selection of the cabinet and connectors which are discussed in detail in the upcoming post.

Embedded systems Design

As with any design, the design of an embedded system is determined by various requirements including functional requirements, processing Capabilities, Power supply requirements, Environmental considerations and reliability requirements.

There are various models being practiced for embedded system design. Some of them are

  1. Big-Bang model: Essentially no planning or procedures in place before and during the development of a system.
  2. Code and Fix model: Product requirements are defined but no formal processes are in place before the start of the development.
  3. Waterfall model: Process for developing a system in steps, where the result in one step flows into the next step.
  4. Spiral model: Process for developing a system in steps, and throughout the various steps, feedback is obtained and incorporated back into the process.

Since choosing any of these models in highly implementation and implementer specific, we will not dwell in to these topics. Rather we will discuss about various considerations to be factored in selecting each and every component of the embedded system, starting with the processor in the next post.