Position: Index > Control Circuit >

Multiple controllers in one design

2015-03-01 21:34  
Declaration:We aim to transmit more information by carrying articles . We will delete it soon, if we are involved in the problems of article content ,copyright or other problems.

Actually many embedded systems use multiple microcontrollers and microprocessors. This is not about a multi-core processors but several distinct processors used in one design.

Multiprocessor systems allow to distribute computing power among different processors and this way overall speed may be increased, coding simplified and modularity reached. Using multiprocessor embedded design have many benefits. One of them is modularity. Imagine situation when a particular microcontroller based subsystem needs to be installed only if a particular optinio is installed. Another as we mentioned is coding simplicity. Instead writing and debugging one complex firmware it may be broken in several distinct much easy manageable functions on different MCU’s.

Using multiple processors may reduce overall cost of design. Imagine if mashine has to handle high speed interrupts with fast response but also it has to handle message level interrupts that occur less often. For one microcontroller system you may choose fast and of course expensive MCU. While two cheaper and slower MCU’s may do same with less horsepower.

Lets take an example of three multiprocessor embedded design:



System consists of three CPU: CPU1 handles keyboard and display operations; CPU2 is used to communicate between CPU1 and CPU2 and can be connected to other higher level host system. CPU3 controls real time motors and reads sensors. Each CPU have their own Ram and Flash and I/O. Now we can see benefits of such system.

Modularity – CPU2 doesn’t know what type of display (LCD, CRT) is used or what keyboard is used. Control of keyboard and display is performed by CPU1. There can be connected any subsystem with different display types and CPU1. CPU2 only sends/receives messages to/from CPU1. Same situation with CPU3 subsystem. CPU2 don’t care how motor position was detected or it just gets position data from CPU3 and sends commands. CPU3 subsystem may vary (different motor types, different sensors) without major affect to overall system. Messages between CPU’s may be transferred via RS232, Ethernet, direct (SPI, I2C, 1-Wire).

How to decide how manu CPUs are needed? There are three main considerations:

Independence and modularity of software;

Processor throughput;

Physical location.

Talking about independence we can think like one processor can handle a stepper motor and read feedback information from positioning sensor. Keyboard reading and information output to display may be handled by another processor or sometimes may be separate CPUs needed. It depends on complexity of I/O devices. Or even CPU1 could handle CPU2 job. If system has optional configurations it is better to use separate processor for different option.


Reprinted Url Of This Article: