Essential Elements to choose
a right Processor
- Processor
Speed: Processing speed is the
first parameter which decides how fast your product can perform. It is
important to check the number of instruction a process can execute in a
second (MIPS). If processor has multiple cores then number of instruction
executed is always multiplied by number of cores.
- Hardware
acceleration: It is not just about the
processor core(s), for execution of well-specified functionality, a
hardware accelerator is always the most power-efficient method. One area
that can make the difference in using the accelerator is how friendly it
is to use in a software algorithm. For full-algorithm-type accelerators,
such as an H.264 encoder, there usually is not an issue because it’s
substantially self-contained. However, for kernel-type accelerators like
an FFT, it can be more challenging to use an accelerator within a larger
algorithm. Take a look at how the hardware function performs and how it
needs to be configured. Consider choosing microcontroller with integrated
FPGA/DSP, if you think some the software logics can be put on hardware/DSP
for more efficiency.
- Debugging
capabilities: As applications become
more complex, so does the development process. Shortcuts that worked in
the past might not work when the number of processor and application
subcomponents has grown exponentially. Consider the system-level debug of
a large software-based system that uses an operating system or real-time
kernel. Do the processor and its tool chain have a way to examine the
processor state without impacting the application? Is it possible to
profile and trace where the processor has been, or to trap on all events
of interest? All these questions, and many more, should be answered before
becoming comfortable with the level of debugging available.
- Cost: At
times, system designers focus on the processor price tag instead of the
overall system design cost. It is imperative to take into account not only
the device cost itself, but also cost of the supporting circuitry required
– level translators, interface chips, glue logic, and so on. Also, package
options play a vital role: One processor’s package might allow a
four-layer board design, while another’s may necessitate six- or
eight-layer board because of routing challenges. Finally, don’t overlook
the value of extra processing headroom that can allow for future
expandability without causing an expensive processor change or board spin.
- Other
Parts of product: Processor selection should
occur in tandem with a study of a system’s signal chain requirements. Does
the processor vendor also sell peripherals that connect to the processor?
It is often advantageous to buy multiple system components from the same vendor
– for interoperability, customer support, and overall pricing benefits.
- Peripherals
for Product design: Using the general
hardware block diagram, make a list of all the external interfaces that
the microcontroller will need to support. There are two general types of
interfaces that need to be listed. The first are communication interfaces.
These are peripherals such as Ethernet, USB, I2C, SPI, UART, and so on.
Make a special note if the application requires USB or some form of
Ethernet. These interfaces greatly affect how much program space the
microcontroller will need to support. The second type of interface is
digital inputs and outputs, analog to digital inputs, PWM’s, etc. These
two interface types will dictate the number of pins that will be required
by the microcontroller.
- Software
architecture: The software architecture
and requirements can greatly affect the selection of a microcontroller.
How heavy or how light the processing requirements will determine whether
you go with an 80 MHz DSP or an 8 MHz 8051. Just like with the hardware,
make notes of any requirements that will be important. For example, do any
of the algorithms require floating point mathematics? Are there any high
frequency control loops or sensors? Estimate how long and how often each
task will need to run. Get an order of magnitude feel for how much
processing power will be needed. The amount of computing power required
will be one of the biggest requirements for the architecture and frequency
of the microcontroller.
- Identify
Memory Needs: Flash and RAM are two
very critical components of any microcontrollers. Making sure that you
don’t run out of program space or variable space is undoubtedly of highest
priority. It is far easier to select a part with too much of these
features than not enough. Getting to the end of a design and discovering
that you need 110% or that features need to be cut just isn’t going to
fly. After all, you can always start with more and then later move to a
more constrained part within the same chip family. Using the software
architecture and the communication peripherals included in the
application, an engineer can estimate how much flash and RAM will be
required for the application. Don’t forget to leave room for feature creep
and the next versions!
- Power: The
ability to reduce power consumption to a level with temporary operating
requirements is crucial to preserving battery life, as well as overall
energy costs in mains-powered systems. Processors can offer a wide range
of options for optimizing an application’s power profile. One such feature
is dynamic power management – the ability to adjust core frequency and
operating voltage to meet a certain performance level. Another is the
availability of multiple power modes that turn off various unneeded resources,
including memories and peripherals, during certain time intervals. System
wakeup (through general-purpose I/O, a real-time clock, or another
stimulus) is an integral part of this power mode control. Yet another
degree of flexibility in power management is the presence of multiple
voltage domains for core, I/O, and memories, allowing different system
components to operate at lower voltages when practical.
- Security: Security
needs usually take the form of platform protection, IP security, or data
security – or some combination of all three.Platform protection is
needed to ensure that only authenticated code is run in the application.
Program that tries to access protected information on the processor, or
“hijack” the processor and gain control of the system is to be
prevented.The ability to authenticate code is also critical to securing IP
and data. IP security requires a way to either encrypt the code image
brought into the processor for execution, or to store this IP internal to
the processor through embedded flash or an internal ROM inaccessible
through external mechanisms. Some form of data security is required to
ensure that data enters and exits the system without being compromised.
- Check
part availability: With the list of potential
parts in hand, now is a good time to start checking on how available the
part is. Some of the things to keep in mind are what the lead times for
the part? Are they kept in stock at multiple distributors or is there 6 –
12 week lead time? What are your requirements for availability? You don’t
want to get stuck with a large order and have to wait three months to be
able to fill it. Then there is a question of how new the part is and
whether it will be around for the duration of your product life cycle. If
your product will be around for 10 years then you need to find a part that
the manufacturer guarantees will still be built in 10 years.
- Select
a development kit: One of the best parts of
selecting a new microcontroller is finding a development kit to play with
and learn the inner working of the controller. Once an engineer has
settled their heart on the part they want to use they should research what
development kits are available. If a development kit isn’t available then
the selected part is most likely not a good choice and they should go back
a few steps and find a better part. Most development kits today cost under
$100. Paying any more than that (unless it is designed to work with
multiple processor modules) is just too much. Another part may be a better
choice.
- Compilers
and Tools: The selection of the development kit
nearly solidifies the choice of microcontroller. The last consideration is
to examine the compiler and tools that are available. Most
microcontrollers have a number of choices for compilers, example code and debugging
tools. It is important to make sure that all the necessary tools are
available for the part. Without the right tools the development process
could become tedious and expensive.
- Support:
Last but not the lease, the support for the microcontroller the
manufacture is providing. If they provide support during hardware design,
review the design, software support and example codes.