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.