When it comes to the selection of a CPU for any given embedded system, you need to be very clear about three questions: who should select the CPU, when it should be selected, and how you will select the right one for your system in particular? Let’s explore each of these questions in further detail:
While a CPU is part of the hardware, choosing one for an embedded system should be a collaborative process between the hardware as well as the software department. This is because the hardware in an embedded system is not entirely dissociated from the software component. Both of these elements have to work together for the sake of smooth operations and that would not be possible if the hardware is unable to accommodate the software.
When the selection process should be initiated is also an important thing to determine. Ideally, you will want the software development and code writing process to have already begun before you set out to invest in a CPU. This is because the more developed the software will be at the given stage, the more you will know about the specifications or characteristics that you want in your processor.
You do not want to purchase a processor beforehand and then end up having to get another one because it was ill suited to what the design ultimately turned out to be. There are many factors that can influence the development of the program and change the requirements mid process, so it is better to, at the least, let the software development begin.
Topics like performance, memory size, clock speed determine the type of the CPU and hence it cost. In many cases engineers end up choose a CPU that is an overkill.
The best possible scenario is to put this task off until the latest possible minute so you can get exactly what your program needs to run optimally. You will want your software end product to dictate the specifications of your CPU such as the minimum memory, power, and performance requirements. Your hardware should be designed to accommodate your software instead of the other way around.
Selecting a CPU for embedded systems in the past was a much simpler task than it is today. You would choose between the 8051, or 6800 family for an 8-bit CPU, and either of the 80186 or 68000 family for a 16-bit CPU. Embedded systems and supporting technology has, however, evolved significantly over time and now we are spoiled for choices. In fact, we are even open to opt for FPGAs and System-on-Chips to execute a given design which has enabled designers to build complex, multi core devices and systems.
While CPU selection should be a collective process, the hardware team and the software team will undoubtedly have differing selection criteria based on the factors that are important in their department.
A hardware designer will typically think about the power consumption of the processor or CPU, the computing power, how much space it occupies physically, the ease of access and availability to the products in the market, as well as the costs associated with that particular unit.
A software designer, on the other hand, will have a different perspective. They will want to know about the architecture and working of the CPU or processor chip to determine if the team is familiar with it and capable of extracting maximum functionality from it. They will also want to know if the selected operating system is supported by the unit, if they can avail the associated development tools, and whether they can acquire a model to run basic tests and simulations before the actual hardware arrives and is configured.
Assessing an Embedded CPU
There are a number of different factors that should be taken into consideration when assessing a CPU to use in your embedded system. This criteria includes elements such as CPU performance, power consumption, memory, supporting peripherals, industry requirements, and overall costs. Performance, power consumption, and functionality of the unit should be the primary parameters that guide your final decision.
The most important parameter to judge a CPU system is its performance. While you may be bombarded with loads of values, comparisons, and benchmarks that show just how well performing a processor is, you need to determine for yourself whether or not the unit will be able to successfully address the particular needs of your application. You want the processor to be fast and skillful enough to fulfil your requirements. A good way to select a CPU is to shortlist a few options and run trial simulations with your code to formulate your own benchmarks.
You will have to go for a processor that is able to support the entirety of your software program on its onboard memory. Remember: most microcontrollers have a limited amount of onboard address space, which is why you need to actively search for a solution that can accommodate your program.
Keep in mind that if you are investing in a processor with great performance, it is also going to increase the power consumption. If you search around, you will be able to find solutions that offer high performance with low power consumption.
The supporting peripherals that accompany your CPU are just as important as the unit itself. Since you are paying an additional cost for them, you will want to maximize their potential. Ideally, you will want to go with a processor whose peripherals overlap with the technology your application requires for execution. This results in cost savings, which is a welcome bonus.
The costs associated with the CPU are very important to take into consideration. Not only should the price of the unit itself fall within your budget, but you also need to think about the training costs, supporting development tools, and peripherals you will need to maximize the use of the processor. Make sure to check all the peripherals beforehand and determine whether or not the system as a whole is worth the price.