USD

Aproveche el rendimiento y la potencia reducida que un microcontrolador de 16 bits puede ofrecer

Por Bill Giovino

Colaboración de Editores de Digi-Key de América del Norte

Una batería de larga duración es importante para que el usuario se sienta satisfecho con los dispositivos de consumo. Para los puntos finales de la IoT (Internet de las cosas) alimentados por batería, una mayor duración de la batería reduce los costos de mantenimiento y mejora la confiabilidad. Dado que el microcontrolador utilizado en estos dispositivos puede tener un consumo de potencia significativo, los diseñadores deben seleccionar y aplicar la arquitectura adecuada para satisfacer las necesidades de estas aplicaciones. En muchos casos, los microcontroladores de 16 bits resultan ser la mejor opción.

Si bien los microcontroladores de 8 bits se vuelven cada vez más potentes, el rendimiento presenta los típicos límites que imponen el procesamiento de la potencia y la memoria direccionable. Esto invalida a los microcontroladores de 8 bits de las aplicaciones de mayor rendimiento. Por otro lado, los sistemas basados en núcleos de 32 bits suelen ser excesivos para la aplicación, especialmente cuando consumen más potencia de la necesaria.

La solución se encuentra en el medio con microcontroladores de 16 bits, el punto óptimo entre los núcleos de 8 y 32 bits. Estos microcontroladores ofrecen la baja potencia de un microcontrolador simple de 8 bits de suministro único y, al mismo tiempo, algunas de las ventajas de rendimiento y memoria de los microcontroladores con núcleos de 32 bits. Si una aplicación no permite la ejecución intensa de múltiples procesos y los requisitos de memoria no son demasiado grandes, un microcontrolador de 16 bits puede proporcionar el nivel correcto de rendimiento con un ahorro de potencia significativo.

Este artículo describe la arquitectura de los microcontroladores de 16 bits y la razón por la que son la mejor opción para muchas aplicaciones de consumo y punto final de IoT alimentadas por batería. Luego presenta algunos ejemplos de microcontroladores de 16 bits de Microchip Technology y Texas Instruments, y muestra cómo comenzar con un diseño de 16 bits.

Selección de un microcontrolador

Seleccionar el microcontrolador adecuado para una aplicación es uno de los primeros pasos en el proceso de diseño después de definir los requisitos del proyecto. Las tres opciones principales son microcontroladores de 8, 16 y 32 bits.

Se subestima lo prolíficos que se volvieron los microcontroladores de 8 bits: son el caballo de batalla de los diseñadores. No existe trabajo demasiado pequeño para un microcontrolador de 8 bits de bajo costo y baja potencia: tienen el consumo más bajo del reino de los microcontroladores convencionales, algunos con corrientes de reserva por debajo de los 100 nA (nanoamperios).

Además, son fáciles de usar. El microcontrolador de 8 bits generalmente se basa en acumuladores, aunque algunas arquitecturas más modernas tienen un conjunto de registros. El modelo de programación es simple y limitado: acumulador o un pequeño conjunto de registros con un solo registro de estado, un puntero de pila y uno o más registros de índice. Muy a menudo, la pila puede estar en el hardware y el firmware no puede acceder al contador de programa (PC).

Aunque es muy utilizada, la arquitectura de 8 bits alcanza sus límites cuando se enfrenta a redes y comunicaciones. Casi todas las pilas de comunicaciones y protocolos de red son de 16 o 32 bits, por lo que es necesario alejarse de una arquitectura de 8 bits. Además, incluso los microcontroladores de 8 bits de gama alta tienden a limitarse al direccionamiento de 16 bits sin paginación, lo que restringe el tamaño y la complejidad del firmware.

En el otro extremo, los microcontroladores de 32 bits están siendo muy utilizados en aplicaciones dentro de todos los rangos de rendimiento. Estas son arquitecturas basadas en registros que admiten fácilmente redes y comunicaciones. Por lo general, tienen 32 bits de direccionamiento, pueden admitir operaciones de matemática de punto flotante y operaciones algebraicas avanzadas, y velocidades de reloj en el rango de los gigahercios (GHz). Los núcleos de 32 bits tienen un modelo de programación más complicado que puede incluir múltiples registros de estado, un PC expuesto al firmware, una gestión sofisticada de interrupciones y dos o más capas de privilegios de ejecución de firmware.

Por su parte, todos los microcontroladores de 16 bits están basados en registros, con arquitecturas tan simples como las de los de 8 bits. Tienden a tener un buen rendimiento de baja potencia, un consumo de corriente significativamente menor que las arquitecturas de 32 bits y un consumo de potencia casi tan bajo como los núcleos de 8 bits. Si la aplicación requiere matemática avanzada, algunos microcontroladores de 16 bits cuentan con coprocesadores matemáticos que tienen el mismo rendimiento matemático que uno de 32 bits con la misma velocidad de reloj interno.

También hay muchas pilas de comunicaciones para admitir microcontroladores de 16 bits en red. Ethernet, CAN, USB y Zigbee son algunos ejemplos de pilas de protocolos que pueden ejecutarse con la misma rapidez tanto en un microcontrolador de 16 bits como en uno de 32 bits, siempre que el código de la aplicación tenga suficiente rendimiento disponible para el servicio de la pila.

Direccionamiento de grandes matrices de memoria Flash con un microcontrolador de 16 bits

Una de las diferencias más importantes entre las arquitecturas de 32 y 16 bits es el rango de direccionamiento de la memoria. Los microcontroladores de 32 bits tienen un bus de direcciones de 32 bits que proporciona acceso de hasta 4 gigabytes (GB) de memoria. Los microcontroladores tradicionales de 16 bits tienen 16 bits de direccionamiento que solo pueden acceder a 64 kilobytes (kB). Sin embargo, muchas arquitecturas modernas de 16 bits ahora tienen hasta 24 bits de direccionamiento extendido, lo que permite un tamaño considerable de 16 megabytes (MB) de espacio de direcciones.

Un buen ejemplo del enfoque de direccionamiento extendido es la familia de microcontroladores PIC24F de baja potencia de Microchip Technology. Uno de estos microcontroladores es el PIC24FJ1024GA, un microcontrolador de 32 MHz (megahercios) y 16 bits, con 1 Mbyte de memoria Flash incorporada y 32 Kbytes de SRAM integrada. Utiliza un modelo de programación simple, similar al de muchos microcontroladores de 8 bits (Figura 1).

Diagrama del modelo de programación del microcontrolador PIC24F de MicrochipFigura 1: El modelo de programación del microcontrolador PIC24F de Microchip es similar al de un microcontrolador de 8 bits de gama alta. Tiene una arquitectura basada en registros con dieciséis registros de 16 bits de propósito general, un puntero de pila, un PC y cinco registros de soporte. (Fuente de la imagen: Microchip Technology)

El PIC24 tiene un contador de programa de 23 bits que puede acceder a hasta 8 MB de memoria de programa Flash. Tiene dieciséis registros de 16 bits llamados WREG (registros de trabajo) denominados desde W0 a W15. Los registros W0 a W13 son registros de GP (propósito general), que se pueden usar para almacenar datos bajo el control del firmware. El W15 es un SP (puntero de pila) dedicado. Si bien el SP se incrementa y disminuye automáticamente por las llamadas de función y subrutina, las excepciones de programación y las devoluciones de llamadas, también puede ser modificado por el firmware, al igual que los registros W0 a 13.

El registro W14 sirve como puntero de marco de pila (FP) con las instrucciones de ensamblaje LINK y UNLINK. El Registro de SPLIM (límite de puntero de pila) es un registro independiente y se utiliza con el SP para evitar desbordamientos de pila.

El PIC24 utiliza una arquitectura de Harvard con direcciones y espacios de datos separados. El registro de TBLPAG (dirección de página de tabla de datos) y el registro de PSVPAG (dirección de página de visibilidad de espacio de programa) se utilizan con instrucciones especiales para acceder y transferir datos entre la dirección y los espacios de datos. Esta es una característica común en las arquitecturas de 32 bits, pero poco frecuente en los núcleos de 8 bits.

El registro del RCOUNT (contador de repetición de bucle) de 16 bits contiene el contador de bucle para la instrucción de ensamblaje REPEAT.

El registro de control de núcleo de la unidad central de procesamiento (CPU) de 16 bits (CORCON) se utiliza para configurar los modos operativos internos del núcleo del PIC24.

Finalmente, el registro de estado de 16 bits contiene bits de estado operativo sobre el estado del núcleo del microcontrolador PIC24, incluido el estado resultante de la última instrucción de ensamblaje ejecutada.

Microchip Technology clasifica el rendimiento del PIC24FJ1024GA606T en 16 millones de instrucciones por segundo (MIPS) a 32 MHz, algo impresionante para un núcleo de 16 bits. El núcleo tiene muchas características que se encuentran en un microcontrolador de 32 bits, como un multiplicador de hardware de 17 bits por 17 bits que también admite matemática fraccional y un divisor de hardware de 32 bits por 16 bits. Esto es útil para los puntos finales de IoT que necesitan realizar cálculos a partir de los datos del sensor. La arquitectura también puede leer y escribir desde la memoria de datos simultáneamente sin pérdida de rendimiento.

Si bien el PIC24FJ1024GA606T tiene una amplia gama de periféricos estándares, incluido un USB OTG (On-the-Go), consume muy poca potencia para aplicaciones alimentadas por batería. El voltaje de suministro requerido es de solo 2.0 a 3.6 voltios y, a toda velocidad, el microcontrolador consume un máximo de 7.7 mA (miliamperios) a 32 MHz, lo que es difícil de lograr para un núcleo de 32 bits. El firmware tiene un control preciso de los relojes del núcleo y periféricos. Existen dos instrucciones de ensamblaje en modo de baja potencia. La instrucción IDLE detiene el núcleo del PIC24 al tiempo que permite que se ejecuten los periféricos. La instrucción SLEEP detiene todas las operaciones del dispositivo, excepto la vigilancia opcional y la detección de interrupción externa. La corriente de inactividad es de solo 2.8 mA (máx.) y la corriente de reposo máxima es de entre 10 y 45 microamperios (µA), según la configuración de los periféricos. En su modo de menor consumo, el modo de reposo con RAM (memoria de acceso aleatorio), el consumo del PIC24F puede alcanzar tan solo los 190 nA.

Para obtener un mayor rendimiento, Microchip Technology ofrece un microcontrolador de 16 bits de gama alta como parte de la familia dsPIC®. Un ejemplo es el dsPIC33EP512GP506T de 16 bits con 512 kB de Flash y un rendimiento de 70 MIPS clasificado por Microchip. El dsPIC tiene casi los mismos registros de núcleo que el PIC24, con registros adicionales para admitir instrucciones de procesamiento de señal digital (DSP), que incluyen dos acumuladores de 40 bits y compatibilidad múltiple de 32 bits. Al actualizar un PIC24 en el sistema, muchos microcontroladores PIC24 tienen disponibles actualizaciones dsPIC compatibles con pines, lo que proporciona un mayor rendimiento utilizando la misma placa de CI.

Por supuesto, un rendimiento extra requiere potencia extra. Este dsPIC33 requiere un suministro de 3.0 a 3.6 voltios, y cuando se ejecuta a 70 MIPS consume un máximo de 60 mA.

Reducción de potencia con mejora del rendimiento

La familia de microcontroladores MSP430FR599x de Texas Instruments utiliza la memoria de programa de la FRAM (memoria de acceso aleatorio ferroeléctrica) de la empresa para alcanzar mayores cifras de rendimiento de lectura y escritura con un menor consumo de potencia que los microcontroladores Flash. El microcontrolador de 16 bits MSP430FR5994IPNR es un miembro de esa familia y cuenta con un reloj de 16 MHz y 256 kB de FRAM.

El núcleo del microcontrolador MSP430FR tiene mejoras de rendimiento que incluyen una caché asociativa por conjuntos de dos vías con cuatro líneas de caché de 64 bits cada una para aumentar el desempeño de la memoria FRAM. Un multiplicador de hardware de 32 bits mejora el rendimiento para operaciones matemáticas intensivas. El microcontrolador también tiene un coprocesador Acelerador de baja energía (LEA) que funciona independientemente del núcleo principal del MSP430. El LEA puede llevar a cabo una transformada rápida de Fourier (FFT) compleja de 256 puntos, un filtro de respuesta finita al impulso (FIR), y la multiplicación de matrices con una velocidad que, de acuerdo con TI, es hasta 40 veces mayor que la de un microcontrolador Arm® Cortex®-M0+. El LEA mejora el rendimiento de las operaciones de fusión de sensores, mejora las imágenes y procesa datos de sensores ultrasónicos. Estas son todas las aplicaciones para las que un desarrollador usualmente considerará primero un núcleo de 32 bits y no un microcontrolador de 16 bits de potencia ultrabaja.

El modelo de programación para el MSP430R es muy simple (Figura 2). Hay dieciséis registros de 16 bits, R0 a R15. R0 es el contador de programa, R1 es el puntero de pila, R2 es el registro de estado y R3 es un generador constante (usado para operandos inmediatos). Los registros R4 a R15 son registros de propósito general. El resto de los registros de configuración están asignados en memoria, de forma similar a la mayoría de los núcleos de 32 bits.

Diagrama del conjunto de registros del microcontrolador MSP430 de Texas InstrumentsFigura 2: El conjunto de registros del microcontrolador MSP430 tiene una configuración similar a la de otros núcleos de 16 bits basados en registros. Los registros de configuración restantes están asignados en memoria. (Fuente de la imagen: Texas Instruments)

Este rendimiento se logra sin consumir más potencia. En modo de espera con el RTC (reloj de tiempo real) en funcionamiento, el microcontrolador MSP430FR5994 de TI solo consume 350 nA. En el modo de apagado, consume apenas 45 nA. Este consumo es más bajo que el de cualquier microcontrolador de 32 bits conocido actualmente, incluso más bajo que el de la mayoría de los microcontroladores de 8 bits.

El MSP430FR5994IPNR puede funcionar con una alimentación de 1.8 a 3.6 voltios. Cuando el firmware comienza a agotar la FRAM y no hay aciertos de caché, el MSP430FR requiere solo 3 mA. Si el código se está quedando sin caché, el consumo de corriente es de solo 790 µA. Combinado con el LEA, esto proporciona un rendimiento de procesamiento significativo con un consumo de potencia extremadamente bajo para un microcontrolador de 16 bits.

Las aplicaciones de baja energía para la familia de microcontroladores MSP430FR5994 se pueden desarrollar fácilmente con el kit de TI MSP-EXP430FR5994 LaunchPad™. El LaunchPad contiene todo lo que un desarrollador necesita para comenzar a escribir y depurar el firmware del microcontrolador MSP-EXP430FR5994 (Figura 3).

Imagen del kit MSP-EXP430FR5994 LaunchPad de TIFigura 3: El MSP-EXP430FR5994 LaunchPad de TI contiene todo lo que un desarrollador necesita para comenzar a codificar y depurar el firmware del microcontrolador FRAM MSP430FR5994 de 16 bits (fuente de la imagen: Texas Instruments).

El LaunchPad tiene dos botones pulsadores, dos ledes y una ranura para una tarjeta microSD. Para demostrar la capacidad con bajo consumo del microcontrolador MSP430FR5994, el LaunchPad tiene un gran capacitor de 0.22 F (faradios) capaz de alimentar el LaunchPad. Para cargar el capacitor, se debe conectar el LaunchPad a la potencia externa y colocar el puente J8 en la posición "Charge". La carga completa del capacitor tarda de dos a tres minutos. Después de transcurridos tres minutos, el puente J8 se mueve a la posición "Use" y se desconecta la alimentación externa. Dependiendo de la aplicación, el MSP430 puede funcionar durante muchos minutos.

El LaunchPad también se puede usar para medir el consumo actual del MSP430 y la aplicación. El bloque de aislamiento J101 tiene siete puentes, incluido un puente de fuente de potencia de 3 voltios, 3V3. El puente de dos clavijas 3V3 se puede quitar y la corriente de la aplicación se puede medir a través de las dos clavijas.

El LaunchPad también es compatible con la tecnología EnergyTrace™ de TI y puede conectarse a una computadora mediante la GUI (interfaz gráfica de usuario) de EnergyTrace de Texas Instruments. Esto permite a los desarrolladores observar las cifras de consumo de potencia en tiempo real del microcontrolador MSP430 y de la aplicación, lo que les permite ajustar su aplicación con respecto al consumo de potencia.

Por ejemplo, el monitoreo y el registro de corriente en tiempo real pueden mostrar que el consumo de corriente del microcontrolador MSP430 puede presentar incrementos abruptos ocasionales. Los picos de corriente pueden degradar la batería y reducir su vida útil. Los picos de corriente pueden ser causados por periféricos mal configurados en el chip, una carga inductiva o capacitiva externa, o incluso un firmware que intenta encender todo al mismo tiempo. El monitoreo y el registro de la corriente pueden indicar a los desarrolladores dónde ajustar el firmware para controlar los picos.

Conclusión

Para muchas aplicaciones integradas de baja potencia y rendimiento medio alimentadas por batería, los desarrolladores pueden elegir un microcontrolador de 16 bits apropiado en lugar de seleccionar un núcleo de 32 bits. De acuerdo a lo expresado en este artículo, para muchas aplicaciones un microcontrolador de 16 bits puede tener una potencia mucho menor que uno de 32 bits y aún así lograr el rendimiento requerido.

Descargo de responsabilidad: Las opiniones, creencias y puntos de vista expresados por los autores o participantes del foro de este sitio web no reflejan necesariamente las opiniones, las creencias y los puntos de vista de Digi-Key Electronics o de las políticas oficiales de Digi-Key Electronics.

Acerca de este autor

Bill Giovino

Bill Giovino es ingeniero electrónico con un BSEE de la universidad de Syracuse y es uno de los pocos profesionales capaz de pasar de ingeniería en diseño a ingeniería de aplicación en campo a marketing tecnológico de forma exitosa.

Durante más de 25 años, Bill ha disfrutado promocionar las nuevas tecnologías a audiencias técnicas y no técnicas por igual en muchas empresas, entre ellas STMicroelectronics, Intel y Maxim Integrated. Mientras trabajó en STMicroelectronics, Bill ayudó a dirigir los primeros éxitos de la empresa en la industria de microcontroladores. En Infineon, Bill estuvo a cargo de que el diseño del primer controlador de la empresa tuviera éxito en la industria automotriz de EE. UU. Como consultor de marketing para CPU Technologies, Bill ha ayudado a muchas empresas a convertir sus productos con bajo rendimiento en casos de éxito.

Bill fue uno de los primeros en adoptar el Internet de las cosas, incluso colocar la primera pila de TCP/IP en un microcontrolador. Bill es un ferviente creyente de "Vender a través de la educación" y de la gran importancia de contar con comunicaciones claras y bien escritas a la hora de promocionar productos en línea. Es moderador del grupo en Linkedin denominado Semiconductor Sales & Marketing (Marketing y ventas de semiconductores) y habla sobre el concepto B2E (empresa-empleado) de manera fluida.

Acerca de este editor

Editores de Digi-Key de América del Norte