El aumento de la popularidad de los dispositivos de microcontrolador (MCU) de 32 bits en la comunidad de sistemas embebidos no es ninguna sorpresa. Estos dispositivos ricos en funciones se adaptan a toda una serie de aplicaciones diferentes, lo que explica que muchos desarrolladores de sistemas integrados los seleccionen para sus próximos diseños. Los diseñadores reconocen que estos complejos dispositivos ofrecen todo lo que necesitan en términos de potencia de cálculo bruta, un rico conjunto de periféricos y un fácil acceso a una amplia gama de herramientas y bibliotecas de desarrollo.
Muchos de estos dispositivos de 32 bits se basan en los exitosos núcleos ARM. Por lo tanto, los desarrolladores se sienten seguros al tener acceso a dispositivos de segunda fuente y a un conjunto completo de herramientas de desarrollo, prueba y validación que están disponibles en el mercado.
Sin embargo, si se analizan con más detalle las tendencias recientes del mercado de MCU, se observa que los dispositivos de 32 bits no son los únicos que están experimentando un fuerte crecimiento (Tabla 1). El creciente mercado de MCU de 8 bits presenta una tasa de crecimiento compuesto (6,4%) cercana a la de 32 bits (6,9%). Otros analistas del sector prevén tasas de crecimiento idénticas para los microcontroladores de 8 y 32 bits.
El auge de los dispositivos de 8 bits pone claramente de manifiesto que debe haber algunas razones de peso para utilizar un dispositivo de 8 bits en lugar de una MCU de 32 bits. Este artículo trata de arrojar algo de luz sobre los motivos por los que los dispositivos de 8 bits están conservando su cuota de mercado.
Diferencias esenciales
Las principales diferencias entre las MCU de 8 y 32 bits son el coste y la estructura de precios, el rendimiento de la CPU, la facilidad de uso, la eficiencia en funciones cercanas al hardware y el consumo de energía estático. Al embarcarse en un nuevo diseño, los desarrolladores deben evaluar cuidadosamente los requisitos de una MCU en función de la cantidad de capacidad de procesamiento requerida, el grado de interconexión necesario y, en el caso de los diseños alimentados por batería, los importantísimos perfiles de consumo de energía. No hay duda de que una MCU de 32 bits ofrece un mayor rendimiento que un dispositivo de 8 bits, pero el ingeniero se enfrenta a la tradicional decisión de elegir entre el mejor dispositivo disponible en el mercado frente a las necesidades reales de una aplicación.
Por supuesto, estas decisiones influirán en gran medida en el coste probable de la lista de materiales (BOM). Con un menor número de puertas, un dispositivo de 8 bits menos complejo será sin duda más barato que uno de 32 bits. Si comparamos las MCU de 8 y 32 bits de los principales proveedores, cada una de ellas con una cantidad similar de memoria flash, disposición de pines, etc., los dispositivos de 8 bits suelen costar alrededor de un 20% menos. Pero ésta es sólo la primera de muchas consideraciones. Otro aspecto está relacionado con la facilidad de configuración para un nuevo desarrollo.
Facilidad de desarrollo
Los proveedores de MCU tienden a añadir más características y funcionalidades a sus dispositivos de 32 bits en comparación con los productos de 8 bits. En consecuencia, surgen muchas más consideraciones de configuración con un dispositivo más complejo. Mientras que algunos MCU de 32 bits pueden funcionar con una configuración limitada similar a la de un dispositivo de 8 bits, usted no puede aprovechar las características adicionales del dispositivo más potente.
Descargue este artículo en formato .PDF Este tipo de archivo incluye gráficos de alta resolución y esquemas cuando corresponde. |
Por ejemplo, un dispositivo ARM típico de 32 bits tendrá ajustes de reloj independientes para el propio núcleo, el bus AHB, el bus APBA y el bus APBB. Todos ellos pueden ser configurados a diferentes frecuencias. Típicamente, también tendrás que cambiar al reloj que quieras usar porque está configurado en el software, no en el hardware como la mayoría de las partes de 8 bits. Además, el cambio de reloj significa que usted debe configurar los estados de espera para el flash, posiblemente predicado en el voltaje VCC medido.
Tal configuración puede ser mucho más simple con una MCU de 8 bits, sin embargo. Por ejemplo, los productos tinyAVR y megaAVR de Atmel sólo requieren la inicialización del puntero de la pila, que suele llevar cuatro líneas de código, antes de codificar la aplicación. La elección del reloj, el detector de caídas de tensión, la función del pin de reinicio, etc., están preprogramados en el dispositivo.
La arquitectura es también mucho más sencilla que la de un dispositivo de 32 bits con registros internos, periféricos y SRAM, todos ellos mapeados en el mismo bus de datos. Los periféricos y la CPU funcionan normalmente a la misma frecuencia, por lo que no es necesario configurar el bus de periféricos. Además, los diseñadores pueden evitar preocuparse por la latencia en la sincronización entre diferentes dominios de reloj.
Rendimiento
Cuando se trata del rendimiento deseado de la CPU, el ingeniero debe considerar todos los casos de uso. La realidad es que muchos diseños embebidos no tienen grandes requisitos de computación. A menudo, se requiere muy poca manipulación de los datos, por lo que el equilibrio de esas necesidades contra el consumo de energía y los requisitos de interrelación con los periféricos se convierte en algo crucial.
Por ejemplo, una simple aplicación de termostato pasará la mayor parte de su vida en modo de reposo. De vez en cuando, se despertará y medirá la temperatura y luego tomará la decisión de encender o apagar un relé o enviar una instrucción a un controlador anfitrión. A continuación, volverá a dormir. Los requisitos de computación e interfaz de esta aplicación son pequeños, pero muchas otras aplicaciones, como los detectores de incendios, las herramientas eléctricas, los medidores de flujo y los controles de electrodomésticos, también tienen un perfil de uso similar.
Eficiencia de las funciones cercanas al hardware
Muchos microcontroladores modernos incorporan algunas funciones de hardware que sirven para ayudar a la CPU a operar de la forma más eficiente posible. En el caso de Atmel, tanto la familia AVR de 8 bits como la basada en ARM de 32 bits incorporan el Sistema de Eventos Periféricos. Un sistema de eventos es un conjunto de características basadas en hardware que permite a los periféricos interactuar sin la intervención de la CPU. Permite que los periféricos envíen señales directamente a otros periféricos, asegurando un tiempo de respuesta corto y 100% predecible.
Cuando se utilizan plenamente las capacidades del sistema de eventos, el chip puede ser configurado para realizar operaciones complejas con muy poca intervención de la CPU, ahorrando tanto la valiosa memoria del programa como el tiempo de ejecución. En el caso de la detección de un evento de hardware, es importante detectar primero el evento y luego cambiar el control a la rutina de servicio de interrupción (ISR) deseada.
En estas situaciones, la velocidad de la CPU no es el único factor determinante. Es una cuestión de cuánto tiempo, en términos de ciclos, tarda en responder a la interrupción, ejecutar la ISR y regresar. Como el siguiente ejemplo mostrará, los dispositivos de 8 bits pueden ser más eficientes en el manejo de acciones cercanas al hardware.
Considere la recepción de un byte en el SPI, el uso de una interrupción para detectarlo y, a continuación, la ejecución de una rutina ISR sencilla para leer el byte del periférico SPI y almacenarlo en la SRAM. Utilizando este escenario, la Tabla 2 establece comparaciones entre un dispositivo AVR de 8 bits de Atmel y una MCU de 32 bits basada en ARM Cortex M0+ de Atmel. Calculados con la información disponible, los resultados se basan en implementaciones mínimas. Sin embargo, los ingenieros deberían comprobarlo con sus propias aplicaciones, ya que la detección de la interrupción y el retorno de la misma podrían requerir más ciclos que los mostrados en la tabla. Requerir 12 ciclos frente a 33 ciclos equivale a tener un ancho de banda SPI máximo teórico de 1,67 MB/s para la CPU de 8 bits y un ancho de banda de 606 kB/s para una CPU de 32 bits cuando se ejecuta a 20 MHz.
El grado de procesamiento numérico también puede tener un impacto en la pila y la memoria requerida. La aplicación del algoritmo Fibonacci es un método especialmente bueno para comprobar los requisitos de memoria. Dado que sólo utiliza una variable local, todo necesita ser empujado a la pila.
Al hacer una comparación entre un AVR de 8 bits y un dispositivo basado en ARM 32 bits CM0+, y utilizando un algoritmo Fibonacci recursivo de 15 etapas, el AVR utiliza un total de 70 bytes de pila, incluyendo 30 para la pila de retorno (15 llamadas de profundidad). El dispositivo basado en ARM utiliza 192 bytes (60 deberían ser de pila de retorno). Esto significa que el CSTACK es más de tres veces el tamaño de la solución de 8 bits. En el código C típico, más de las variables en la pila a menudo vienen en un formato empaquetado, por lo que esta es una esquina extrema. Sin embargo, decir que se necesita de 1,5 a 3 veces más SRAM para la misma aplicación centrada en 8 bits en un dispositivo de 32 bits (frente a uno nativo de 8 bits) es una estimación justa.
Consumo de energía
Ningún artículo sobre MCU estaría completo sin investigar el consumo de energía estático. Esto por sí solo puede ser un factor clave a la hora de elegir entre un dispositivo de 8 o 32 bits, especialmente para aplicaciones alimentadas por batería. La tabla 3 ilustra las diferencias de consumo de energía entre los dispositivos de 8 y 32 bits en los modos activo y estático.
Las tecnologías de fabricación progresivas aumentan la corriente de fuga de los transistores, que se duplica aproximadamente con cada generación del proceso, y es proporcional al número de puertas. La corriente de fuga aumenta exponencialmente a temperaturas más altas, lo que puede pasarse por alto fácilmente cuando se diseña un diseño de consumo. Los teléfonos móviles y los reproductores multimedia personales se transportan a todas partes y, como todos hemos comprobado, las temperaturas experimentadas durante el verano en el interior de un coche pueden superar fácilmente los 40°C.
La cantidad de tiempo que el microcontrolador pasará en modo activo frente al modo estático contribuye significativamente al presupuesto de energía global de la aplicación.
Naturalmente, la proporción entre los modos activo y estático variará en función de los requisitos de la aplicación. Tomando el ejemplo anterior de la interrupción SPI (Tabla 2, de nuevo) y suponiendo un ancho de banda de datos SPI de 80 kb/s, la CPU de 8 bits pasará el 1,2% de su tiempo en modo activo frente a la de 32 bits, que pasará el 3,3% en modo activo (Tabla 4).
Conclusión
Contemplar si utilizar un microcontrolador de 8 o 32 bits para un futuro diseño puede implicar una aplicación de Internet de las cosas (IoT). La forma en que IoT se materializa provoca mucho debate, pero sin duda supondrá un reto para los ingenieros a la hora de realizar una valoración detallada de los requisitos de la MCU. La conectividad inalámbrica, especialmente ZigBee, también será un componente esencial, pero eso no significa automáticamente que necesitará un dispositivo de mayor potencia.
Descarga este artículo en formato .PDF Este tipo de archivo incluye gráficos de alta resolución y esquemas cuando corresponde. |
Una serie de productos de microcontroladores de 8 bits disponibles satisfacen la necesidad de bajos niveles de procesamiento y conectividad inalámbrica. Un ejemplo de ello es la serie ATmegaRFR2 de Atmel, que proporciona una solución de microcontrolador inalámbrico de 2,4 GHz, compatible con IEEE 802.15.4, que se adapta a los diseños de IoT de bajo coste y alimentados por baterías.
Ingar Fredriksen, director de marketing de MCU de Atmel para la región EMEA, tiene su sede en Trondheim, Normay. Se licenció en ingeniería eléctrica en la Universidad de Trodheim.
Paal Kastnes, ingeniero del equipo de aplicaciones MCU especializado en la formación del personal y los clientes de Atmel en el uso de los microcontroladores y las herramientas de Atmel, también tiene su sede en Trondheim. Se licenció en ingeniería eléctrica en la Escuela Universitaria de Trondheim.