Inicio Artículos Diseñe por separado e integre sin problemas con un controlador de doble...

Diseñe por separado e integre sin problemas con un controlador de doble núcleo

Simplifique su integración de software con un controlador de señal digital de doble núcleo
Las aplicaciones embebidas se están volviendo complejas y sofisticadas para cumplir varios objetivos. Primero, las aplicaciones necesitan mejorar la eficiencia, lo que requiere un rendimiento significativo del controlador para ejecutar algoritmos sofisticados. A continuación, la disponibilidad ubicua de Internet permite que las aplicaciones embebidas se vuelvan “más inteligentes” y más “conectadas”. El tercer objetivo es reducir los costes al integrar varias funciones como la interfaz del sensor, la conectividad, el control del motor, la conversión digital de potencia, la seguridad y la protección en un controlador único. Un nivel tan alto de integración requiere que los expertos de dominio respectivos manejen módulos o áreas funcionales específicas y luego múltiples funciones deben integrarse en una aplicación final. A menudo, las compañías multinacionales que tienen sus equipos repartidos por todo el mundo hacen que sea aún más importante que varios módulos puedan diseñarse por separado e integrarse sin problemas con facilidad para reducir el riesgo y los esfuerzos de desarrollo.
Mejora de la eficiencia Primero, veamos cómo el objetivo de mejorar la eficiencia energética requiere un mayor rendimiento del controlador. Considere el ejemplo de una aplicación de control de motor. La industria se ha alejado de los motores CC con escobillas, que ofrecen una eficiencia del 75- 80 por ciento, hacia motores CC sin escobillas (BLDC) o los nuevos motores síncronos de imán permanente (PMSM). Estos motores ofrecen hasta un 85-90 por ciento de mejor eficiencia, ruido acústico reducido y mayor vida útil del producto. Un control típico de un motor CC con escobillas requiere técnicas de control de velocidad y dirección muy simples que se pueden lograr utilizando un microcontrolador de nivel básico de 8 bits. En comparación, controlar un motor BLDC o PMSM sin sensor con “Control Orientado a Campo” (FOC) es más sofisticado y computacionalmente intensivo. Permite un control cercano de la energía utilizada por el motor en un amplio rango de carga o velocidad y ayuda a mejorar significativamente la eficiencia. También se pueden implementar algoritmos de control adicionales basados en los requisitos de la aplicación, como “Detección y recuperación de pérdida de rotor”, “Windmilling”, “Saturación de bucle PI y antivuelco”, “Flux-Weakening” y “Par máximo por amperio”, que ayuda a mejorar el rendimiento, la respuesta a una carga dinámica y aumenta la eficiencia general.
Todas estas técnicas de control avanzadas son computacionalmente intensivas e involucran operaciones matemáticas como dividir, multiplicar, raíz cuadrada y operaciones trigonométricas, que requieren un ancho de banda significativo de la Unidad Central de Procesamiento (CPU). Debido a que estas funciones de control deben ejecutarse periódicamente a una frecuencia alta, es necesario que la CPU se asigne a un intervalo de tiempo específico. Dicha ejecución de bucle de control estricto puede ocupar la mayor parte del ancho de banda de la CPU y puede afectar a otras funciones críticas en una aplicación compleja. Un desarrollador embebido tendrá una flexibilidad limitada para incorporar funcionalidades adicionales como comunicación, monitorización de seguridad, funciones de sistema y funciones de mantenimiento que podrían interferir con el control crítico-temporal del motor. El desafío aumenta en las aplicaciones de potencia digital donde las funciones de bucle de control crítico-temporal deben ejecutarse a una frecuencia aún mayor.
Software Complejo
Ahora, consideremos el próximo objetivo impulsado por internet o conectividad en la nube. La última tendencia de la industria es que las aplicaciones sean “inteligentes” y “conectadas”, ofreciendo inteligencia y accesibilidad desde cualquier lugar. Estos requisitos exigen que las aplicaciones embebidas incluyan múltiples pilas de software como: 1. El software de la función principal de la aplicación. En nuestro ejemplo, esta función implementa el control del motor, las tareas de mantenimiento y las operaciones de la interfaz de usuario que comúnmente se requieren en la mayoría de las aplicaciones. 2. El software de comunicación que ejecuta los protocolos de aplicación de red necesarios para la conectividad. 3. El software de seguridad para protección de IP, privacidad, integridad de datos, autenticidad, control de acceso y frustra cualquier posibilidad de piratería 4. Si las aplicaciones involucran operaciones humanas y pueden causar lesiones corporales debido al mal funcionamiento, entonces incluso el software de seguridad funcional debe ser parte de tales aplicaciones críticas para la seguridad. 5. Algunas de las aplicaciones finales también pueden tener requisitos de personalización donde ciertas características serán exclusivas de variantes específicas dirigidas a diferentes segmentos del mercado. Todos estos requisitos de funciones requieren que varios equipos de expertos en dominios participen en el desarrollo de las respectivas pilas de software y puedan integrarlos de manera óptima y rápida en una aplicación final. Los expertos de múltiples dominios deberán coordinarse muy estrechamente con el arquitecto e implementar una aplicación final. Este escenario se complica aún más en compañías multinacionales donde los equipos de expertos se distribuyen por todo el mundo.
Reducción de Coste
Finalmente, la optimización de costes es un objetivo importante que es común a todas las aplicaciones finales. A menudo, los ingenieros de embebidos no tendrán el presupuesto para considerar un diseño de microcontroladores múltiples donde se pueda ejecutar una pila de software individual en diferentes microcontroladores con muy poca coordinación. Optar por un diseño de microcontrolador único con una integración muy alta será la solución más óptima. Esto permite además una reducción de costes debido a un diseño de PCB compacto y un número reducido de componentes externos como osciladores de cristal y componentes pasivos.
¿Cuáles son los desafíos del desarrollo?
Para implementar algoritmos sofisticados y ejecutar múltiples pilas de software, los diseñadores de embebidos a menudo eligen un microcontrolador de mayor rendimiento. Sin embargo, esta puede no ser la mejor opción debido a los desafíos asociados con la ejecución de tiempo crítico, el desarrollo de la pila de software múltiple, la integración y las pruebas. Un programador simple o un Sistema Operativo en Tiempo Real (RTOS) puede servir para programar y ejecutar múltiples tareas desde diferentes pilas en una CPU de alto rendimiento de una manera dividida en el tiempo. Pero, un planificador o un RTOS incorpora una sobrecarga que consume ancho de banda de CPU, memoria y otros recursos de microcontroladores. La división de tiempo también aumenta la sobrecarga de conmutación, reduciendo la utilización efectiva de la CPU. El escenario se complica aún más cuando dos bucles de control complejos críticos de tiempo deben ejecutarse periódicamente en un intervalo de tiempo preciso y superpuesto o cuando dos funciones críticas de seguridad asíncronas necesitan ejecutarse simultáneamente en tiempo real. En tales casos, considerar un microcontrolador de rendimiento aún mayor no siem pre cumplirá con los requisitos del sistema. Incluso si un microcontrolador de un solo núcleo de alto rendimiento tiene suficiente ancho de banda de CPU para acomodar múltiples pilas de software, tal vez junto con un RTOS, hay muchas otras complicaciones de diseño a considerar. El desarrollo, la integración y la prueba de múltiples pilas de software necesitan una considerable cantidad de coordinación entre los expertos en la materia. Requiere diseñar una arquitectura de software modular y compatible que comparta dinámicamente recursos e intercambie información. Las complicaciones aumentan aún más si hay pilas heredadas sin arquitectura compatible.

  • Las pilas heredadas pueden tener arquitecturas diferentes según el modo de sondeo o el modo de interrupción
  • Las pilas heredadas pueden estar utilizando los mismos recursos del microcontrolador que ahora deben compartirse sin conflictos para evitar peligros como la condición de carrera y el punto muerto
  • Las pilas pueden tener varias variables globales comunes y funciones con los mismos nombres.
  • Cada pila puede funcionar perfectamente cuando se ejecuta de forma individual, pero puede funcionar mal en la integración. La depuración de una solución tan integrada será una pesadilla que aumentará el tiempo de desarrollo. Una pila independiente ya disponible puede no siempre ayudar a reducir el tiempo de desarrollo cuando se implementa en un microcontrolador de núcleo único. Todos estos desafíos plantean un riesgo de desarrollo significativo y aumentan el tiempo de comercialización.

Controlador de Doble Núcleo
Un controlador de doble núcleo ayuda a mejorar la eficiencia, simplificar los esfuerzos de desarrollo y reducir los costes con las siguientes ventajas.

  • Ofrece un mayor rendimiento que un controlador de un solo núcleo similar que funciona al doble de velocidad y es ideal para aplicaciones donde hay dos o más funciones críticas • Simplifica el desarrollo de software con núcleos duales independientes que permiten: o Desarrollo de software disperso geográficamente. o Integración perfecta con muy poca coordinación. o Fácil personalización de funciones en múltiples variantes de una línea de productos

Controlador de Doble Núcleo- Mejor Rendimiento
Un controlador de doble núcleo facilita una mayor integración de software al permitir que diferentes funciones se ejecuten en dos núcleos independientes. Es particularmente útil si una aplicación requiere ejecutar dos funciones críticas de tiempo periódicamente en un momento preciso o como respuesta a eventos asincrónicos. Con cada función de tiempo crítico ejecutándose en dos núcleos independientes diferentes, no habrá contención entre las funciones. Esto mejora la utilización general de la CPU debido a la reducción o ausencia de pérdidas de conmutación entre las funciones.
Muchos controladores de doble núcleo vienen con recursos dedicados que reducen aún más las pérdidas de conmutación y arbitraje. Algunos de los controladores de doble núcleo también cuentan con rápida PRAM (Program-RAM) dedicada acoplada a uno de los núcleos, generalmente al núcleo esclavo, lo que mejora aún más el rendimiento. Por lo tanto, un controlador de doble núcleo ofrece un mayor rendimiento que un controlador de un solo núcleo similar que funciona al doble de velocidad.
Controlador de Doble Núcleo- Desarrollo Simplificado
Muchos controladores de doble núcleo ofrecen memoria dedicada, periféricos y soporte de depuración con cada núcleo. Un esquema de gestión de recursos flexible permite además la asignación de recursos compartidos a cualquiera de los núcleos según el requisito de una aplicación. D i c h a a r q u i t e c t u r a d e microcontrolador permite el desarrollo de software independiente con una coordinación mínima entre expertos en el dominio y facilita la integración sencilla. Un controlador de doble núcleo simplifica particularmente la integración de dos pilas de software que se basan en arquitecturas diferentes o que requieren recursos de microcontroladores similares, que ahora pueden ejecutarse en dos núcleos independientes. Esto es similar al desarrollo de las pilas para ejecutar en dos controladores diferentes, pero con los beneficios de un rendimiento mejorado, una utilización óptima de los recursos y un coste reducido. Esto elimina cualquier complicación asociada con la integración de la pila, el intercambio de recursos de tiempo compartido y las condiciones de peligro asociadas. Un controlador de doble núcleo también permite una fácil depuración posterior a la integración, ya que cada núcleo viene con sus propias interfaces de depuración. Debido a las dependencias minimizadas entre las pilas, la depuración se simplifica extremadamente para aislar problemas y rectificarlos. Al ofrecer tantas ventajas, un controlador de doble núcleo reduce significativamente el riesgo de desarrollo y el tiempo de comercialización. Para agregar a la lista de beneficios, un controlador de doble núcleo permite una fácil personalización sin modificar la funcionalidad principal. Al diseñar la funcionalidad principal para ejecutarse en un núcleo, las características personalizadas se pueden implementar en otro núcleo. Todas estas ofertas de un controlador de doble núcleo simplifican el diseño del software incluso cuando hay varios equipos involucrados en todo el mundo y permiten una integración perfecta con esfuerzos de coordinación muy mínimos.

Controlador de Doble Núcleo – Reducción de Costes
Al ofrecer un mayor rendimiento, un controlador de doble núcleo permite a un diseñador integrado realizar aplicaciones complejas utilizando un solo microcontrolador. Al simplificar el desarrollo, un controlador de doble núcleo reduce significativamente el tiempo de diseño y el riesgo y permite diseños competitivos con un coste y tiempo de comercialización reducidos. Para conseguir prácticamente todos los beneficios anteriores de un controlador de doble núcleo, se realizó un pequeño experimento. En esta demostración, uno de los núcleos (típicamente el núcleo esclavo) implementa el control del motor que ejecuta el algoritmo FOC para controlar un motor BLDC.
Para ofrecer una interfaz gráfica de usuario, el otro núcleo (el núcleo maestro) ejecuta una pila de gráficos para interconectar una pantalla OLED e implementa la función del sistema para interconectar el potenciómetro y los botones que controlan la velocidad y el estado del motor. Para demostrar la simplicidad del diseño que ofrece un dispositivo de doble núcleo, la pila de gráficos y el software de control del motor fueron desarrollados por dos equipos diferentes que estaban separados geográficamente. Con la flexibilidad para mantener una arquitectura de software independiente, se requería muy poca coordinación entre los dos equipos. Un equipo con experiencia en el tema del control de motores podría implementar rápidamente el algoritmo FOC para controlar un motor BLDC. Con el otro equipo con experiencia en el desarrollo de la interfaz gráfica de usuario, ambos equipos podrían aprovechar su experiencia en las áreas respectivas y completar rápidamente el proyecto. Se requería una coordinación mínima para establecer un acuerdo que transmitiera los botones y el estado del potenciómetro entre los dos núcleos.
Como experimento ampliado, ambos equipos utilizaron bibliotecas de software ya disponibles para implementar el control del motor y la interfaz gráfica. Esto dio como resultado la finalización del proyecto en muy poco tiempo con muy poco esfuerzo dedicado a integrar dos pilas heredadas diferentes. Debido al alto rendimiento del núcleo, todavía quedaba mucho ancho de banda de CPU disponible en ambos núcleos. Para superar los límites, también se incorporó una interfaz de pantalla OLED en el núcleo esclavo para mostrar los parámetros dinámicos del motor sin afectar el rendimiento del motor. Un ejemplo de un controlador de doble núcleo que ofrece todos estos beneficios es el último controlador de señal digital (DSC) de doble núcleo dsPIC33CH128MP508 de Microchip. El dsPIC33CH de doble núcleo ofrece un alto rendimiento con memoria dedicada y periféricos específicos de la aplicación, por lo que es ideal para aplicaciones embebidas de alto rendimiento, control de motores y conversión de potencia digital. El doble núcleo de esta familia permite a los diseñadores desarrollar firmware para diferentes funciones del sistema por separado y luego reunirse sin problemas sin que los bloques de código interfieran entre sí.