Implementación de lógica discreta compleja con microcontroladores #logicadiscreta #microcontrolador-microchip

El periférico CLB (Configurable Logic Block) en la familia de microcontroladores PIC16F13145 permite a los desarrolladores implementar funciones lógicas discretas complejas en hardware para reducir la lista de materiales y desarrollar una lógica a medida de cada aplicación.
En muchas aplicaciones de los sistemas embebidos es frecuente utilizar dispositivos lógicos discretos, como la serie 74’HC. La ventaja que ofrecen estos dispositivos lógicos es que funcionan con independencia de cuál sea el microcontrolador y pueden responder con mucha más rapidez que el software. Sin embargo, estos dispositivos se suman a la lista de materiales y necesitan más espacio en la placa de circuito impreso.
Para resolver este problema, muchos microcontroladores de Microchip incorporan un periférico denominado CLC (Configurable Logic Cell) en los microcontroladores PIC® u otro periférico similar denominado CCL (Configurable Custom Logic) en los microcontroladores AVR®. Ambos periféricos implementan una lógica a medida definida por software que se puede ejecutar con independientemente de la CPU. En otras palabras, una vez configurada la función lógica a medida, su funcionamiento es independiente del microcontrolador.
Pero una limitación para estos periféricos es que la cantidad de lógica que ofrecen es muy pequeña. Cada CLC equivale aproximadamente a una sola tabla de consulta (Look-Up Table, LUT), mientras que cada CCL integra un par de LUT independientes. Estos periféricos son potentes herramientas para desarrollar circuitos lógicos sencillos, combinan señales y se integran con otros periféricos de hardware. Por ejemplo, todos estos ejemplos de eliminación de rebote en un botón de hardware, generación con WS2812 y decodificación de cuadratura necesitan estos periféricos pero sólo hay unos pocos de ellos en el microcontrolador, lo cual limita la complejidad de las aplicaciones.
Para admitir aplicaciones más complejas se añadió un nuevo tipo de periférico lógico, denominado CLB (Configurable Logic Block), como se puede ver en la Figura 1, a la familia de microcontroladores PIC16F13145. Obsérvese que el CLB no sustituye a los periféricos CLC o CCL, y los dispositivos pueden ser tanto uno varios CLC/CCL como un CLB.
Figura 1. Diagrama de bloques del CLB.
El CLB de la familia PIC16F13145 está formado por cuatro conjuntos de Grupos Lógicos, cada uno de los cuales contiene ocho BLE. Los BLE de cada grupo lógico están conectados; cada grupo es una representación de dos salidas GPIO y una interrupción opcional para la CPU. Cuando funcionan a 5,5V, los BLE tienen un tiempo típico de propagación inferior a 6 ns. Todos los BLE comparten una misma estructura del reloj, la fuente del cual se configura por software junto con un divisor de reloj opcional. El CLB puede utilizar una de las fuentes de reloj internas del microcontrolador o una fuente externa.
El periférico se inicializa desde la memoria del microcontrolador y puede controlar las patillas directamente desde la propia estructura a través de PPS (Peripheral Pin Select). PPS permite al usuario reasignar las patillas de E/S utilizadas con los periféricos de hardware para aumentar mucho más la flexibilidad de diseño. Por ejemplo, si se usó RA1 para el Reloj SPI, sería más ventajoso usar RA6 y PPS reasignaría la patilla.
Otros elementos integrados en el CLB son un temporizador de hardware de 3 bits con salidas decodificadas, un detector de flanco para señales de entrada y un registro de salida de 32 bits para depuración. Otras salidas de los CIP (Core Independent Peripherals) del microcontrolador se pueden utilizar como entradas al CLB en diseños más complejos.
Como el CLB es bastante más complejo que CLC o CCL se ha desarrollado una nueva herramienta llamada CLB Synthesizer. CLB Synthesizer proporciona una interfaz gráfica para configurar la lógica tal como muestra la Figura 2. Además de lógicas primitivas, la herramienta también admite bloques lógicos de mayor nivel, que se pueden suministrar o bien pueden ser construidos a medida por el usuario.
Al interaccionar con la herramienta gráfica se genera un módulo Verilog en segundo plano para síntesis. Si el desarrollador prefiere escribir su propio Verilog, o tiene un archivo preparado, éste se puede importar directamente en la herramienta como un módulo.
Figura 2. CLB Synthesizer con un ejemplo de PSK (Phase-Shift Keying).
La salida del CLB Synthesizer es un archivo de ensamblador que contiene el flujo de bits para ajustar el CLB y código fuente para configurar el CLB como un periférico. Esta herramienta se puede ejecutar a través de MPLAB® Code Configurator (MCC) o de una herramienta en línea autónoma. MCC es una utilidad para generación de código que permite a los usuarios ajustar y configurar los periféricos en el microcontrolador por medio de una interfaz visual. Tras configurar los periféricos de hardware, el MCC genera el código de inicialización y una API del dispositivo.
Durante el tiempo de ejecución, el flujo de bits del CLB se carga directamente desde la memoria de programa utilizando el hardware incorporado. Una ventaja de esta solución es que necesita cambiar la configuración del CLB mientras se está ejecutando el programa y el proceso de carga se puede repetir con un flujo de bits diferente almacenado en la memoria del dispositivo.
Para demostrar el funcionamiento del CLB en las aplicaciones se ha creado una serie de ejemplos de uso. Veamos dos ejemplos: el convertidor para pantalla de 7 segmentos y el SPI a WS2812. Estos ejemplos son bloques funcionales que se pueden copiar y utilizar como parte de una solución completa. Se han desarrollado para demostrar la utilidad de este periférico y qué puede aportar a un diseño.
El primer ejemplo es un convertidor para pantalla de 7 segmentos. Las pantallas de 7 segmentos se pueden controlar desde las patillas normales de E/S, pero una implementación estándar suele necesitar una tabla de consulta definida por software para convertir el número de entrada en el patrón de salida correcto para la pantalla. En esta implementación, el CLB funciona como tabla de consulta de hardware. El carácter de salida deseado (0 a F) se carga en el registro de entrada del CLB desde el software. Cada segmento de salida de la pantalla es controlador por una LUT que relaciona entradas y salidas.
Este ejemplo se empleó internamente para construir una nueva tarjeta de control destinada al sistema de sincronización. La interfaz de usuario original fue desarrollada en la década de 1980 con lógica de la serie 74’HC. Con el CLB, un solo microcontrolador de 20 patillas puede implementar la pantalla y la lógica del teclado en la tarjeta, reduciendo así significativamente la lista de materiales. La Figura 3 compara ambas tecnologías.
Figura 3. Comparación entre la placa de circuito impreso original y el nuevo montaje. Este ejemplo fue desarrollado por Josh Booth.
A continuación se encuentra el convertidor SPI a WS2812. WS2812 es un protocolo serie de 1 hilo para controlar matrices de LED mediante modulación por anchura de pulso. En este caso, el hardware SPI se usa como registro de desplazamiento para los datos enviados a los LED, mientras que el CLB convierte SCLK y SDO a la salida prevista.
Esto se implementa en el ejemplo mediante un contador de 3 bits de un solo disparo, un latch D con Enable y una LUT de 4 entradas, como se puede ver en la Figura 4. En esta solución la clave reside en las fuentes de reloj para SPI y CLB. El reloj de SPI se halla en estado alto en espera, cambia de estado con un flanco ascendente y funciona a la frecuencia de la salida del WS2812 (800 kHz), mientras que la fuente del reloj del CLB multiplica por 10 esa velocidad (8 MHz). Cuando SCLK está en estado bajo, el contador de 3 bits se active empieza a contar. Cuando el contador llega hasta 7 (0b111), se detiene y se queda en 0 hasta el siguiente período bajo del pulso del reloj.
La salida del contador se introduce en una LUT de 4 entradas junto con una versión retenida de los datos de salida. Esto establece el patrón de salida de los datos, que se puede ver en la parte derecha de la Figura 4. Una vez reiniciado el contador, su salida seguirá a 0 para completar el ciclo. Entonces, si es necesario, se transmite el siguiente byte en el hardware SPI y se repite el ciclo.
Figura 4. Diagrama de bloques del convertidor SPI a WS2812 desarrollado por Petre Teodor-Emilian.
Ambos ejemplos demuestran la ventaja de integrar lógica discreta en un microcontrolador. Los periféricos de hardware descargan de tareas a la CPU, lo cual puede mejorar el tiempo de respuesta y el consumo, así como reducir el número de componentes. El CLB permite desarrollar aplicaciones complejas que antes no se podían implementar en un microcontrolador. En la actualidad el CLB se puede encontrar en la familia de microcontroladores PIC16F13145, disponible a través de Microchip Direct o de otros distribuidores.
Author: Robert Perkel, Ingeniero de Aplicaciones en la Unidad de Negocio de Microcontroladores de 8 bits, Microchip Technology
Robert Perkel es un ingeniero de aplicaciones de Microchip Technology que desarrolla contenido técnico como notas de aplicación, artículos y vídeos. También es el responsable de analizar casos de uso de periféricos y el desarrollo de ejemplos de código y demostraciones. Perkel estudió en Virginia Tech, donde se graduó en Ingeniería Informatica
Articulos Electrónica Relacionados
- Microcontrolador Microchip PIC... Microchip Technology Inc anuncia el microcontrolador PIC32CM JH para proporcionar a los fabricantes una solución de microcontrolador cuyos componentes cumplen l...
- Microcontroladores Microchip P... Mouser Electronics, Inc. dispone ahora de los microcontroladores PIC32MM, la gama de menor consumo y más económica de los microcontroladores PIC32...
- Microcontroladores Microchip S... Microchip anuncia las nuevas familias SAM L10 and SAM L11 de microcontroladores de 32 bit, que cubren la creciente necesidad de seguridad en los extremos de Int...
- Microcontroladores de 16 bit p... LAPIS Semiconductor, que forma parte del grupo ROHM, ha anunciado el desarrollo de la familia ML620130 de microcontroladores de bajo consumo de 16 bit, optimiza...
- Microcontroladores RX65N y RX6... Renesas Electronics ha anunciado las familias de microcontroladores RX65N y RX651 de 32 bits, que serán la nueva tendencia entre la próxima genera...
- MCUs Microchip PIC18 K83 con p... Mouser Electronics, Inc. cuenta con microcontroladores PIC18 K83 de Microchip Technology. Los nuevos microcontroladores de 8 bits combinan un bus CAN (Controlle...
- Microprocesadores Renesas MPU ... Renesas Electronics Corporation ha anunciado la ampliación de su serie RZ/V de microprocesadores (MPU) con los nuevos MPU RZ/V2L, diseñados para aplicaciones bá...
- Microcontroladores PIC® de 8 b... Microchip anuncia la ampliación de los microcontroladores Enhanced Midrange Core PIC® de 8 bit con tecnología eXtreme low Power (XLP) con los nuevos dispo...
- MCUs Renesas RX66T de 32 bits ... Renesas Electronics Corporation ha presentado el grupo de microcontroladores RX66T (MCU), los primeros miembros de la familia MCU de 32 bits RX basados en un ...
- Microcontrolador de 32 bit con... Los diseñadores de aplicaciones industriales y de consumo deben plantearse la implementación de funciones de seguridad en sus dispositivos durante el proceso de...
- Microcontroladores Microchip S... Microchip anuncia los primeros microcontroladores basados en Arm® para el sector espacial que reúnen las ventajas de su bajo coste y amplia oferta de productos ...
- Microcontroladores PIC® de 8 b... Microchip ha presentado en el Embedded World 2014, una ampliación de su catálogo de microcontroladores PIC® de 8 bit con la familia PIC16(L)F161X, caracterizada...