14.1 – Microprocesadores y Microcontroladores
Los microprocesadores y microcontroladores pertenecen a una categoría de circuitos integrados capaces de procesar información compleja, realizar operaciones matemáticas, almacenar datos y programas, para su uso en diversas aplicaciones.
Aunque muchos confunden los dos dispositivos, tienen diferentes estructuras y propósitos.
Un microcontrolador es un dispositivo completo y se puede comparar con una computadora con varias características incrustadas en un solo chip, presentando características específicas.
Por lo tanto, los microcontroladores tienen una unidad de procesamiento central, también conocida como CPU, y que es capaz de ejecutar programas. Sin embargo, lo que hace el microprocesador requiere el uso de dispositivos complementarios.
Esto se debe a que el microprocesador no fue creado para un único propósito. Decimos que este es un dispositivo de propósito general o, si usamos el término inglés " general purpose ".
En la figura 176 tenemos la estructura interna de un microprocesador común, donde se muestran los distintos bloques.
A continuación, tenemos varios bloques que son responsables del procesamiento de datos, señalando que estos datos pasan de un bloque a otro a través de un bus interno o barramiento interno (internal bus).
Para interactuar con el mundo externo tenemos un bus de datos externo y para el direccionamiento de los datos tenemos un bus de dirección (external address bus).
La ALU es la unidad lógica aritmética o Arithmetic Logic Unit, responsable de los cálculos aritméticos y otros que se realizan con los datos, desde el programa.
En la figura 177 tenemos la forma en que un microprocesador, como el Z80 se comunica con el mundo exterior, y algunos de los circuitos externos utilizados en su operación.
A continuación, tenemos un oscilador (OSC) que determina la velocidad de su operación, que se denomina un oscilador de clock. El circuito de reset (RST) resetea el microprocesador cuando es necesario. Los buses de datos, control y direcciones se comunican con los puertos y con la memoria RAM y ROM.
En la memoria ROM se almacenan informaciones fijas, como aquellas con las que el microprocesador debe operar y un programa. En la RAM se encuentra la información que cambia o se adquiere durante el procesamiento, desapareciendo cuando se apaga el circuito.
Vea entonces, por esta estructura que cuando se utiliza un microprocesador en una computadora necesitamos tener el apoyo de varios elementos, incluyendo algunos adicionales como un disco duro externo, una memoria RAM, dispositivos de entrada y salida, dispositivos para implementar un teclado, un monitor, una impresora, el mouse y eventualmente otros.
Los microcontroladores son diferentes porque se fabrican para un propósito específico (specific purpose), ya que contienen todo lo que se necesita para la aplicación en la que se utilizarán.
Por lo tanto, los microcontroladores están normalmente incrustados en algún tipo de equipo con el fin de controlar todas las funciones, y para ello, integrar la mayoría de los recursos necesarios.
Los microcontroladores tienen entonces dentro de un procesador (una CPU) y otros recursos para que funcione en la aplicación deseada, por ejemplo, una memoria ROM, una memoria EEPROM u otro tipo y circuitos de entrada y salida.
En la figura 178 tenemos la estructura interna de un microcontrolador.
Vea que además de la CPU (Central Processing Unit ) o unidad central de procesamiento, hay varios bloques internos que permiten que el microcontrolador sea un sistema de control completo, con la necesidad de muy pocos elementos externos.
Mientras que los microprocesadores se utilizan en un ordenador, que puede realizar varios tipos de tareas, los microcontroladores se encuentran en el equipo comercializado, automatizaciones, u otros que sólo ejecutan un solo programa que depende de lo que deben hacer exigiendo menos los elementos externos.
Como se muestra en la figura 179, el microcontrolador reúne en un solo chip las funciones del procesador y varias otras necesarias para controlar las aplicaciones.
Para poder operar de una manera más eficiente en la aplicación a la que están destinados, los microcontroladores son dispositivos que se encuentran en varias versiones, con varias capacidades de procesamiento, siempre apuntando al menor precio y el menor consumo de energía.
En una máquina industrial, por ejemplo, el microcontrolador retiene el programa que debe controlar las funciones de esta máquina y, al mismo, tiene los recursos para controlar la máquina y recibir comandos desde un mando a distancia, de un tablero o de sensores.
En un robot, el microcontrolador controla sus movimientos a partir de señales obtenidas de sensores, desde un mando a distancia, o desde una programación que automatice sus movimientos.
Debido a que los microcontroladores operan en aplicaciones específicas, dependiendo del entorno en el que esto ocurra, pueden estar dotados de características que las hacen más robustas. Esto ocurre, por ejemplo, en el caso de los microcontroladores Eso funcionará en maquinaria industrial, en electrodomésticos sujetos a humedad (lavadoras, por ejemplo), o dentro de vehículos (barcos, coches o aviones).
En la figura 180 tenemos un microcontrolador Arduino que se puede utilizar en diversas aplicaciones de automatización y control.
Dentro de un microcontrolador se puede encontrar un procesador, cuya capacidad de procesamiento dependerá de su aplicación.
En una automatización de una máquina o de un uso del edificio, por ejemplo, es posible encontrar procesadores de familias más antiguas más simples, tales como el Z80, 80C51, mientras que en aplicaciones más complejas, los procesadores tales como la serie 80386, 80486 y Pentium, pueden ser necesarios.
Cuando tenemos un producto automatizado, como una lavadora, un horno de microondas donde se controlan pocas funciones, podemos utilizar microcontroladores populares o de bajo precio como Atmel, Microchip, Texas, Freescale. Los microcontroladores PIC de Microchip, en particular, para facilitar la recuperación y la programación, son ampliamente utilizados en proyectos de automatización y control.
14.1.2 - Programación
Los microcontroladores se fabrican sin contener nada en su memoria, por lo que no pueden hacer nada en un circuito si no están programados.
Se debe utilizar un lenguaje especial y características especiales para programar un microcontrolador.
Hay dos posibilidades de programación. Los primeros tipos, se podían programar manualmente, para este propósito una placa donde los microcontroladores fueron encajados en ayuda especial y entonces, usando las llaves tipo dip switches, fueron colocados los códigos que se transferirán al microcontrolador y la dirección donde ocurrirá.
Este tipo de programación sirvió para el caso de programas muy sencillos, con pocas líneas y que, por lo tanto, podrían transferirse al microcontrolador en poco tiempo.
Hoy en día, las tarjetas conectadas al puerto USB o serial de un ordenador se utilizan para crear el programa en este ordenador y luego transferirlos al microcontrolador.
En la figura 181 una placa de este tipo, observando el zócalo especial en el que se incrusta el microcontrolador que se va a programar.
Una vez programado, el microcontrolador se puede colocar en la tarjeta de la aplicación definitiva, es decir, en la tarjeta que contiene los otros elementos con los que se interface, es decir, sensores, circuitos de controles de potencia, etc.
Vamos a dar un pequeño ejemplo de cómo crear una aplicación con un microcontrolador.
Inicialmente definimos lo que queremos controlar y, por ejemplo, un circuito que conecta un ventilador cuando la temperatura supera los 50º C y conecta un calentador cuando la temperatura desciende por debajo de 10º C. al mismo tiempo, si la temperatura sube mucho, por ejemplo, por encima de 70º C o cair demás, menos de 5° C, el circuito debe sonar una alarma.
Comenzamos determinando en el microcontrolador cuál es la entrada que leerá el sensor de temperatura y en cuáles son las tensiones que corresponden a las temperaturas en la cual el accionamiento de los dispositivos externos debe ser hechos.
Determinamos después de qué salidas utilizaremos para los controles, uno para el ventilador, otro para el calentador y finalmente, un tercio para la alarma.
Luego creamos a través de un diagrama de flujo, la estructura de nuestro programa.
A continuación, a partir de este diagrama de flujo, escribimos el programa utilizando diversos lenguajes posibles, de acuerdo con el programa informático que funciona con el microcontrolador.
Vea entonces que el lector que trabajará con los microcontroladores necesita:
Conocer los tipos de microcontroladores para hacer la elección de acuerdo con el tipo de aplicación
Tener la placa de programación y un ordenador con el programa que emula la placa, es decir, un compilador que transfiere los datos a un microcontrolador instalado en esta placa
Conocer el lenguaje de programación para que pueda crear o descargar un programa listo para esta placa y el microcontrolador usando el ordenador
14.1.3 – Los Microcontroladores más comunes
Hoy en día los lectores que deseen trabajar con microcontroladores pueden contar con un gran número de tipos, puesto a disposición por varios fabricantes. Elegir el tipo ideal para una aplicación depende de varios factores tales como:
a) Disponibilidad de microcontroladores en el mercado
b) Disponibilidad de la tarjeta de programación
c) Precio del microcontrolador, si la solicitud se encuentra en un producto que debe ser industrializado
d) Conocimiento del proceso de programación específico
Seguimos la descripción de algunos fabricantes de microcontroladores y los tipos que ofrecen.
a) Microchip
La línea PICs de la Microchip tiene muchos tipos, con las características más variadas que permiten su uso en muchas aplicaciones. Lo más destacado de las PICs es la disponibilidad de tipos muy sencillos, lo que facilita la implementación en proyectos de bajo precio o con fines didácticos. En la figura 182 tenemos la familia PIC. Acceso www.microchip.com para obtener más información.
b) Atmel
La Atmel cuenta con una amplia línea de microcontroladores de bajo precio, destacando los Atmega. Puede obtenerse más información sobre los microcontroladores de esta empresa en el sitio web http://www.atmel.com/.
c) Texas Instruments
En la línea de microcontroladores de Texas Instruments, destacamos los MSP430 de bajo consumo. Más información en el sitio www.ti.com.
d) Freescale
Con una amplia línea de microcontroladores se puede acceder a: http://www.freescale.com/.
e) Renesas
Los microcontroladores de Renesas se caracterizan por su bajo precio y sencillez. Más información en: http://am.renesas.com/
14.1.4 – Lenguajes de programación
Para programar un microcontrolador debe conocer uno de los varios lenguajes utilizados en los programas de compiladores. Los principales idiomas utilizados son:
Assembly
Assembly en inglés significa montar, refiriéndose a este lenguaje al montaje de un programa usando el lenguaje binario, que aprendimos en los primeros capítulos de este libro. El programa utilizado para crear un programa con este idioma se denomina " assembler ", o traducido, "Montador".
A continuación, tenemos un ejemplo de un programa de assembly;
El lenguaje C no está compilado, es decir, los programas generados por el programador van directamente al microcontrolador en forma binaria.
Lenguaje C
Los idiomas se clasifican en niveles. Los de niveles inferiores, "Conversan" directamente con los microcontroladores, como el lenguaje assembly. El lenguaje C está en un nivel intermedio, en el sentido de que el programado creado no va directamente al microcontrolador, pero necesita pasar a través de un programa llamado "compilador".
El programa de origen que es creado por el programador en este idioma, pasa a través de un programa llamado compilador que luego genera el lenguaje binario que el microcontrolador entiende.
Una desventaja de esta lengua, en relación con la assembly, es el hecho de que requiere más memoria. Esto se debe a la necesidad de tener un mayor número de sentencias para llevar a cabo la tarea que desea.
Pascal
Es un lenguaje de alto nivel, siendo ampliamente utilizado por el hecho de utilizar una sintaxis fácil de usar y comandos que pueden ser fácilmente memorizados.
Basic
Basic es una de las lenguajes más antiguos, habiendo sido creado en 1963 con el propósito de facilitar la enseñanza de la programación. Esta lengua fue ampliamente utilizada hasta los años 80 con la popularización de los primeros microcomputadores personales, rejuvenecimiento más tarde con versiones más potentes, más adaptadas las tecnologías de los microcontroladores actuales.
Basic es el acrónimo para Beginners All-Purpose Symbolic Instuction Code o "código de instrucciones simbólicas para todos los propósitos".
Incluso hoy en día, hay muchos programadores que utilizan este lenguaje para propósitos didácticos, por ejemplo, en los microcontroladores de la serie Basic Stamp.
Ladder
Se trata de un lenguaje alternativo, que se ha creado para aplicaciones en controladores lógicos programables o CLPs, con el objetivo de activar relés a partir de señales obtenidas de sensores.
Ampliamente utilizado en los procesos de automatización a partir de los 80 años en adelante, entonces se hizo más utilizado en procesos industriales.
14.2 – Los Procesadores de Señales Digitales o DSPs
Si convertimos señales analógicas como sonidos, imágenes, señales obtenidas de sensores lineales como termistores, LDRs y otros en señales digitales, además de tener mucho más facilidad para trabajar con ellos, existe la posibilidad de modificar sus características, añadiendo una ventaja de control de un microprocesador.
Esto significa que, en equipos modernos que funcionan con señales analógicas, tales como amplificadores de audio, televisores, módems, equipos de telecomunicaciones, teléfonos móviles, cable y televisión digital, el uso de un dispositivo que sea capaz de convertir las señales analógicas en digitales y, a continuación, convierta las señales digitales en analógicas, es esencial.
La tecnología que permite desarrollar circuitos con la capacidad de convertir señales analógicas en digitales no es complicada. El problema surge cuando se quiere operar con señales que necesitan mantener sus características de fidelidad, pero a frecuencias muy altas.
Podemos decir que los dispositivos comunes que podrían ser utilizados para este propósito se vuelven inadecuados, exigiendo de los fabricantes el desarrollo de tecnologías avanzadas.
Hoy en día es posible confiar en circuitos integrados que reúnen todos los elementos necesarios para convertir señales analógicas a formato digital a muy altas frecuencias y también incorporar los microprocesadores y varios circuitos de soporte que pueden Para trabajar con estas señales digitalizada. De ellos, las aplicaciones en equipos, como las que citamos como ejemplos al principio de este artículo, se pueden desarrollar con facilidad.
Por supuesto, la Montaje de los DSPs en sí no importa a nuestro lector que puede contar con el componente listo. Sin embargo, para saber cómo usarlo y para saber cómo reparar, o simplemente instalar estos dispositivos en aplicaciones modernas, es necesario conocer su principio de funcionamiento.
14.2.1 – Convirtiendo señales analógicas a digitales
Comenzaremos desde una forma de onda de una señal común, por ejemplo, un sonido que puede representarse como se muestra en la figura 183.
Esta forma de onda corresponde a una señal analógica, ya que, instantánea a instantánea, la intensidad de la señal oscila, suponiendo valores que cambian de acuerdo a saltos infinitamente pequeños.
Esto es diferente de una señal digital en la que la intensidad de la señal oscila de inmediato a instantáneo, pero de acuerdo con saltos discretos y que, por lo tanto, puede ser representado por valores finitos o dígitos, como se muestra en la figura 184.
La conversión de una señal analógica a la forma digital se puede realizar tomando una cierta cantidad de muestras de su intensidad en varios momentos para que cada muestra tenga un valor numérico que pueda representarse en la forma digital.
Nuestra señal analógica tomada como ejemplo puede ser "muestreado" un cierto número de veces tomando valores que corresponden a la "altura" de cada rectángulo, es decir, su valor en cada instante como se muestra en la figura 185.
Representando el valor instantáneo de cada muestreo en el formato digital, un ciclo de nuestra señal analógica puede convertirse a una secuencia de números binarios como se muestra en la figura 186.
Por supuesto, estos valores binarios pueden ser fácilmente elaborados por un microprocesador que está programado para realizar algún tipo de operación que nos interese.
Una señal en su forma analógica original ni siquiera podría aplicarse a un microprocesador, más se trabaja de cierta manera por sus circuitos.
14.2.2 – Requisitos mínimos
Un punto importante a tener en cuenta, cuando convertimos cualquier señal analógica en una secuencia de valores digitales, es la precisión que estos valores representan la señal original.
Si representamos una señal sinusoidal, por ejemplo, con sólo dos muestreos, una para el valor positivo máximo y la otra para el valor negativo máximo estará claro que en la "recuperación" de la forma de onda original no tendremos buena fidelidad, como sugiere la figura 187.
De la figura 187 se desprende que la exactitud en la recuperación de la señal original y, por lo tanto, en cualquier tratamiento digital que le damos a la señal, depende de la cantidad de muestreo: cuanto mejor sea, más muestreos podremos obtener para la señal.
El límite Nyquist se define como la frecuencia más baja de muestreo que podemos utilizar para convertir una señal y que todavía se puede obtener con precisión. Este límite establece que la frecuencia mínima de las muestreos que podemos utilizar en la conversión es 3 veces la frecuencia de la señal muestreada.
Por supuesto, en la práctica, es conveniente utilizar frecuencias mucho más grandes que 2 veces la de la señal y esto ocurre, por ejemplo, cuando es posible. En el caso de los CDs donde la frecuencia de muestreo es 44,1 K bytes por segundo donde lo que nos lleva a 2 veces la frecuencia máxima podemos oír que es de 20 kHz.
La cosa comienza a complicarse un poco si tomamos en cuenta que para representar un valor instantáneo de un muestreo con una definición de 1 byte (8 bits), lo que llevaría a 256 valores diferentes, necesitamos transmitir 8 bits por muestreo.
Por lo tanto, si tenemos una señal de 10 MHz y queremos muestrearla 10 veces en cada ciclo, significa 100 millones de muestreos por segundo y en cada segundo la producción de 800 millones bits, como se sugiere en la figura 188.
El lector puede tener ya una idea de las dificultades que se producen si queremos procesar una señal de vídeo, por ejemplo, o la señal producida por un sistema de telecomunicaciones que opera con varios cientos de mega Hertz.
Utilizando sólo un byte por muestreo de una señal de vídeo, por ejemplo, limitamos sus intensidades a niveles de 256 y si esto se hace con una señal de color, tendremos la misma limitación en relación a su cantidad.
Una forma interesante de convertir con una frecuencia de muestreo utilizando sólo un bit es la llamada Sigma-Delta que se utiliza en los convertidores de los reproductores de CD. Hemos estudiado esta técnica en el capítulo anterior, pero hemos revisado su concepto, porque es importante.
La idea es simple: desde el momento en que la señal a ser muestreada pasa a cero, el circuito simplemente verifica que en el siguiente muestreo su intensidad ha cambiado lo suficiente para cambiar un solo bit.
Si la intensidad sigue siendo aproximadamente la misma (dentro del rango de resolución), la broca enviada al circuito es cero y la intensidad se mantiene. Sin embargo, si la señal ha aumentado lo suficiente como para cambiarse de un bit, este bit se añade a la intensidad anterior.
Por lo tanto, en el ciclo de señal muestreado, sumar o restar un bit se puede digitalizar con buena precisión, como se muestra en la figura 189.
Pero todavía hay otros requisitos importantes para digitalizar las señales que deben considerarse.
Una de las aplicaciones más importantes de DSPs se encuentra actualmente en sistemas de telecomunicaciones móviles y en microordenadores portátiles con aplicaciones especiales. Como los que reconocen la caligrafía (reconocedores de letras).
En estos equipos alimentados por batería, el consumo del dispositivo es un requisito muy importante. A medida que la complejidad de un DSP aumenta en función de la cantidad de muestreos que puede hacer y la potencialidad del microprocesador utilizado, los fabricantes trabajan duro en vista de este requisito con resultados prácticos sorprendentes.
De hecho, los DSPs que pueden operar con señales digitales y analógicas se utilizan en teléfonos digitales.
Además de estos factores deben considerarse los precios y la facilidad de uso.
Algunas tasas de muestreo utilizadas en la práctica:
Frecuencia de muestreo (muestreos por segundo) |
Uso |
8k |
Walk-Talkies, intercomunicadores, micrófonos inalámbricos |
11,025 K |
MPEG Audio, subwoofer y otros de menor fidelidad |
16k |
Extensión para el teléfono, VoIP y VVoip |
22,050 K |
PCM y MPEG de baja calidad |
32k |
NICAM, Radio Satelite y micrófonos inalámbricos de alta calidad |
44, 056k |
Audio del sistema de TV NTSC |
44,1 K |
CD audio, MPEG1 en MP3, VCD. SVCD. PAL y micrófonos inalámbricos cifrados |
47,5 |
Grabadora de sonido PCM – primeros tipos |
48 k |
Sonido de vídeo digital profesional, TV digital, sonido de DVD y películas – SDI y HD-SDI, compresores y otros equipos de sonido |
50 k |
Los primeros grabadores de sonido digital como los 3M de los años 70 |
50,4 k |
Grabadora Mitsubishi X-800 |
88,2 k |
Equipo de sonido digital, con el objetivo de CDs de 44,1 k, mixers, ecualizadores, cámaras de eco, etc. |
176,4 k |
Grabadoras de sonido HD-CD y producción de CDs |
192 k |
Audio DVD, DVD LPCM, sonido Blu-Ray y sonido HD-DVD |
352,8 k |
Digital Extreme Definition utilizada en la grabación de CDs de Super Audio |
2822,8 k |
SADC con el proceso de modulación delta-sigma conocido como Dirtect Stream Digital de la Sony y Philips |
5644,8 |
RSD de Tasa dupla, Dual Rate, en sistema de 1 bit Direct Stream Digital x2 – Utilizado en grabadoras DSD profesionales |
14.2.3 – Cómo se realiza la conversión de la señal
Hay varias técnicas para convertir señales analógicas en digitales y se pueden encontrar en DSPs.
En la figura 190 tenemos un circuito llamado " flash converter" y que se puede encontrar en la entrada de un DSP basado en el convertidor digital-analógico.
Para un circuito de 8 bits lo que se hace es conectar 256 comparadores en serie, teniendo cada uno en su entrada de referencia aplicada una tensión que determinará su punto de disparo.
Estos circuitos están conectados a un decodificador que entrega en su salida los valores digitales correspondientes a la señal aplicada en la entrada.
En funcionamiento, el circuito está habilitado, por un instante, en el momento exacto en el que desea muestrear la señal.
La tensión de señal instantánea se aplica entonces al divisor de tensión conectado a la entrada de referencia de los comparadores de tensión.
Los comparadores, que se conmutan, son aquellos en los que el tensión instantáneo de la señal muestreada es mayor o igual al tensión de referencia, es decir, una cantidad proporcional a la intensidad de la señal.
Por lo tanto, tendremos cierto número de señales de entrada que determinarán el valor digital que el decodificador entregará en la salida.
Una desventaja de este tipo de convertidor es que se requieren tantos comparadores en cuanto a los niveles de señales que deben ser detectados. La ventaja está en su alta velocidad de operación.
Hay otras técnicas para convertir la señal como, por ejemplo, los convertidores de aproximación sucesivos, el dual slope converter, el último mostrado en bloques en la figura 191.
14.2.4 – El microprocesador
La señal digital obtenida por el convertidor se aplica a un microprocesador que lo presentará a una serie de procesamientos, de acuerdo con el propósito del proyecto. Así que en el chip DSP además del convertidor A/D encontramos un microprocesador.
El uso de microprocesadores específicos para el DSP, y no los tipos comunes, se debe principalmente al hecho de que las señales necesitan ser procesadas a velocidades muy altas. Un microprocesador común no tiene un rango bastante ancho del transeúnte para funcionar en un DSP.
Además, las funciones comúnmente utilizadas se resumen además, la multiplicación, y otras funciones simples que se deben aplicar rápidamente repetitivamente, que es una modalidad diferente de la operación esperada para los microprocesadores comunes.
Esto significa que los microprocesadores utilizados en DSPs tienen características especiales que los diferencian de los microprocesadores comunes.
Uno es el uso de circuitos especiales que son capaces de multiplicar números con una velocidad muy grande.
Otra característica especial incorporada en los microprocesadores DSPs y que tiene en cuenta su aplicación principal que es con señales de audio y vídeo es la incorporación de un modo especial de direccionamiento llamado bit-swapped addressing.
Como su nombre indica, el orden de procesamiento de los bits en la entrada y la salida se invierte. Así, con esta arquitectura, los bits se almacenan en el mismo orden en que se generan mediante muestreo, pero se abordan en el mismo orden en que se ordenan, sin necesidad de realizar cálculos de direccionamiento interno.
Sin embargo, una de las funciones principales encontradas en un DSP es el cálculo de las transformaciones de Fourier.
A través de la transformada de Fourier es posible representar una forma de onda en términos de frecuencia (por la intensidad relativa de los fundamentos y armónicos). En la figura 192 mostramos lo que sucede.
Esta forma de suplantación hace que sea sencillo implementar funciones de procesamiento, como un filtro que puede eliminar un componente de frecuencia que toma el DSP para funcionar como un filtro pasa pistas o rechaza bandas.
14.2.5 – DSPs comerciales
Varios fabricantes tienen en su línea de productos DSPs. Daremos a seguir algunos ejemplos. Observamos que lo ideal es que el lector entre en los sitios web de las empresas citadas para tener información sobre sus productos. Esto se debe a que los nuevos DSPs siempre se liberan con características cada vez más avanzadas.
Por lo tanto, comenzamos con Analog Devices que tiene una amplia línea de tipos de resaltado de DSPs que se utilizan en juguetes, sintetizadores de música y otras aplicaciones.
La información sobre los DSPs de Analog Devices se puede obtener de Internet en la dirección: http://www.analog.com
La Motorola también tiene DSPs en su línea de productos, por ejemplo, tipos que pueden ejecutar una instrucción por ciclo de clock con bajo consumo de potencia. La frecuencia máxima de estos dispositivos puede superar los 80 MHz. entre las aplicaciones de los DSPs de la Motorola tenemos: DVD, HDTV, Dolby, etc.
Una línea de DSPs actualmente ampliamente utilizada en proyectos es la del TMS320 de Texas Instruments.
Los DSPs de Texas se fabrican de acuerdo con la arquitectura de Harvard que permite el acceso simultáneo a instrucciones y operadores de datos.
El TMS320 de Texas Instruments se encuentra en varias generaciones y en versiones para operación de punto fijo y punto flotante.
Puede obtenerse más información sobre los DSPs de Texas en el sitio de internet: http://www.ti.com
14.3- FPGA
Muchas son las alternativas modernas para crear un nuevo producto. Se pueden utilizar microcontroladores, DSPs, FPGAs, ASICs e incluso circuitos integrados de funciones comunes.
Todo dependerá de varios factores que el proyectista debe considerar cuando se toma la decisión. Esta elección debe ser la mejor, para satisfacer las necesidades del proyecto, para que el producto sea un éxito.
Una solución común que se adopta en la industria grande es el ASIC, (Application Specific Integrated), es decir, el circuito integrado para una aplicación específica que se crea con todos los recursos para hacer lo que uno quiere. Los teléfonos móviles, reproductores de CD y DVD, cámaras digitales son algunos ejemplos de productos que hacen uso de ASICs.
La ventaja de este producto es que tiene un componente único para esa aplicación, con todos los recursos y sólo ellos, minimizando precios y espacio en un tablero, porque no hay desperdicio. La desventaja es en tiempo y precio de desarrollo, que sólo permite que este tipo de aplicación se adopte en una línea de producción a gran escala.
Otra solución es el microcontrolador, que puede programarse para hacer lo que uno desea. Hay cientos de soluciones en el mercado que le permiten elegir un microcontrolador con características que son más apropiadas para un proyecto. Sin embargo, este tipo de solución también tiene sus desventajas.
Una solución cada vez más adoptada es la que no está programada desde la fábrica o con todas las funciones ya disponibles de fábrica. Esta es la solución en la que las funciones son implementadas por el usuario. Este es el FPGA, que abordaremos a continuación.
FPGA es el acrónimo de Field Programmable Gate Array consistente en un dispositivo o hardware que puede ser reconfigurado o programado por el usuario. Es un circuito integrado que viene con un gran conjunto de bloques que, mediante programación, se pueden configurar de tal manera que el conjunto lleva un cierto número de funciones específicas.
En otras palabras, es un chip que puede ser programado por el usuario para hacer lo que uno quiere. A diferencia de un microcontrolador que viene con los bloques listos ya en una estructura definida y que pueden programarse para ciertas funciones, el FPGA viene con los bloques desconectados, luego siendo interconectados por la programación del usuario para hacer lo que desee. El microcontrolador viene con los bloques de funciones fijas, mientras que en el FPGA el usuario los crea, como se sugiere en la figura 193.
El FPGA fue creado por Xilinx en 1983, pero hoy en día hay muchas empresas que ofrecen en sus líneas de productos este tipo de componentes como el Altera, Actel, etc.
Un FPGA típico tiene tres tipos de bloques, que se muestran en su disposición básico en la figura 194. Estos bloques son:
CLB - Configuration Logical Blocos o Bloques Lógicos de Configuración. Se trata del corazón del FPGA, consistente en circuitos formados por la reunión de flip-flops , además de lógica combinacional. Con ellos es posible crear funciones lógicas. Hay varias configuraciones para estas células, dependientes del fabricante y lo que se denomina “granulación” (grain).
Por lo tanto, en FPGA en el que los granos son grandes, los bloques lógicos pueden ser complejos que contienen pequeños microprocesadores, memorias, unidades lógicas y aritméticas, etc. En los FPGAs con granulación mediana, ya hemos encontrado bloques lógicos menos complejos como funciones lógicas de mediana complejidad. Finalmente, en los FPGAs de granulación fina o granos pequeños, encontramos funciones simples en cada bloque como multiplexores, flip-flops, etc.
Para cada empresa encontramos arquitecturas típicas con varios tipos de granulación que influyen en la velocidad del dispositivo. A continuación, podemos citar primero los FPGAs de la Altera utilizando LUTs o Look-Up Table en la que tenemos células de almacenamiento que se emplean para implementar las funciones. En esta arquitectura, cada bloque almacena sólo un bit, es decir, un nivel lógico de 0 o 1. Esta arquitectura también es utilizada por la Xilinx, como se muestra en un bloque típico en la figura 195.
En este bloque tenemos varias entradas que entran en una matriz programada determinando qué tipo de función el bloque se ejecuta. Crear una tabla verdad para el bloque, según la voluntad del usuario. La salida de este bloque es entonces almacenada en un flip-flop y se utiliza cuando se solicita por el clock.
Otro tipo de configuración es la utilizada por la Plessey, que se muestra en la figura 196, y que consiste en puertos NAND de dos entradas que están conectados a otros bloques de funciones de manera para implementar la función deseada.
Este bloque es del tipo granulado fino, así como el llamado “crosspoint” (punto de cruzamiento) que se muestra en la figura 197.
En uno de los tipos posibles tenemos un par de transistor en las colas que se organizan en líneas paralelas.
Actel utiliza otro tipo de configuración que se muestra en la figura 198.
En ella tenemos las entradas de multiplexores conectadas de tal manera que permitan la implementación de varias funciones lógicas. Por ejemplo, un multiplexor de dos entradas(a) y (b) seleccionadas puede utilizar para implementar la función ac+bc.
IOB – Input/Output Blocks – estos son los circuitos que tienen por finalidad hacer el interfaz del FPGA con el mundo exterior. Ellos conducen las entradas de los CLBs las señales externas y después traen de vuelta el resultado de sus operaciones. Básicamente, estos circuitos funcionan como buffers, exactamente como en el caso de microcontroladores y DSP, trabajando con señales en ambas direcciones, según la programación.
Switch Matrix – son las llaves que hacen que las interconexiones de los distintos bloques o el enrutamiento de las señales. Como podemos ver en la figura 199, los bloques lógicos forman una matriz.
Para que el circuito funcione, los distintos bloques deben estar interconectados apropiadamente, lo que se logra a través de una programación externa. Esta programación determinará exactamente lo que hará el conjunto de bloques del FPGA, es decir, el modo final de su comportamiento.
Las interconexiones de los bloques también se denominan enrutamiento, y hay varias maneras de hacerlo, siendo las metodologías adoptadas por las distintas empresas, dando a cada producto sus propias características porque influyen en la capacidad de procesamiento del dispositivo, a su velocidad y en otros factores que deben observarse cuando se lleva a cabo un proyecto.
En la figura 200 tenemos un ejemplo de enrutamiento utilizado por Xilinx. En él, las conexiones se cruzan con las que están destinadas a la interconexión de los bloques (pasando las señales de uno a otro) y las que están destinadas a la programación, es decir, que determinan lo que el bloque va a hacer.
Para hacer las conexiones, los transistores se utilizan que funcionan como llaves que unen las varias líneas de programación de los bloques, pues deben ser utilizadas. Los transistores también transportan las señales a las líneas en las que deben ser encaminados.
Mediante el análisis de estas líneas de interconexión, podemos encontrar cuatro funciones diferentes: las líneas de propósito general que pasan de un bloque a otro, conectando llaves. Las líneas de conexión directas que tienen la función de vincular un bloque a otro directamente. Las líneas largas, cuyo propósito es proporcionar retrasos para sincronizar los circuitos, y las líneas de clock que envían las señales que sincronizan todas las funciones de la FPGA.
Se pueden encontrar otras metodologías. La Actel, por ejemplo, utiliza más segmentos o conexiones en la dirección horizontal que en la dirección vertical, como se muestra en la figura 201.
En esta tecnología las líneas horizontales conectan los bloques conmutadores mientras que las líneas verticales corresponden a los bloques que deben ser conmutados.
14.3.1 – Las Tecnologías de Enrutamiento
Las características de las llaves de enrutamiento programables determinan gran parte del comportamiento del dispositivo. Las capacitancias, las resistencias y la misma tecnología según la cual se fabrican influirán en ciertas características como la velocidad, la volatilidad y el consumo de energía del dispositivo.
Por ejemplo, una capacitancia más alta reduce la velocidad de propagación de la señal y también causa un aumento en el consumo del dispositivo. Hay básicamente tres tecnologías disponibles para FPGAs para dispositivos que están integrados en el chip.
a) SRAM (Static Access Memory). Se trata de la misma tecnología utilizada para fabricar otros tipos de memorias. En él, la llave que hace el enrutamiento de señales es un transistor que es controlado por una memoria SRAM, es decir, una memoria estática. La principal desventaja de esta tecnología es en el hecho de que la memoria SRAM es volátil, es decir, sus datos desaparecen cuando se apaga el circuito. Para superar esta función, los FPGAs de este tipo deben utilizar una memoria FLASH externa que contenga el programa. Con esto, tenemos que usar componentes adicionales en la pizarra, lo que significa precios adicionales y espacio en la placa.
b) Antifuse – esta es una tecnología en la que tenemos un dispositivo de dos terminales, similar a un fusible, como se muestra en la figura 202. El dispositivo tiene una alta impedancia cuando en condiciones normales, pero tiene una resistencia muy baja cuando se aplica una tensión de programación entre 11 y 20 V. Antifuse o Anti fusible, porque a diferencia de los fusibles comunes que " Abren "con la corriente, este dispositivo "cierra " el circuito cuando la corriente de programación es aplicada. Esta es la misma tecnología utilizada en la programación de PROMs.
c) Floating Gate (Compuerta Fluctuante) – en esta tecnología tenemos la existencia de transistores MOS, tales como los utilizados en memorias EEPROM y EEPROM. Estos transistores tienen dos compuertas para la programación y el control. La mayor ventaja de esta tecnología es el hecho de que los datos se conservan, incluso después de que el corte de alimentación, puede ser reprogramado por tensión (EEPROM) y además, esta operación se puede hacer con el CI instalado en el propio tablero, característica llamada ISP (In System Programmability).
Como podemos ver, hay varias tecnologías disponibles y dentro de la misma tecnología, el modo de construcción puede variar, por ejemplo, el tamaño de los bloques lógicos. ¿Qué significa esto para el rendimiento de un FPGA? Como tomar en cuenta estos factores. Los siguientes son algunos elementos importantes a tener en cuenta:
Comparación con otras tecnologías
Por lo que hemos visto sobre FPGAs, el lector ya puede tener una visión general de lo que estos dispositivos pueden hacer y cómo se utilizan. Sin embargo, su elección se puede hacer de una mejor manera si hacemos una comparación con otras tecnologías.
Por ejemplo, el tamaño de los bloques lógicos es un primer punto que debe observarse al elegir un FPGA para una aplicación. Un bloque grande implementa más funciones, lo que requiere menos bloques para el equipo. Sin embargo, un bloque más grande requiere más espacio. Hay, por lo tanto, un compromiso entre el tamaño del bloque y el número de funciones implementadas, y el diseñador debe elegir la mejor relación entre los dos para el proyecto.
El área lógica activa es menor que el área lógica total, incluyendo la programación y las salidas/entradas, así como las conexiones de enrutamiento. Realmente 70 a 90% del área de un FPGA consiste en las conexiones de enrutamiento. Por lo tanto, el tipo de enrutamiento debe tenerse en cuenta al elegir un FPGA para una aplicación.
La granulación también es importante. Una mayor granulación (granos más grandes) significa un retardo más corto de las señales. Con el aumento de la granulación también tenemos menos rutas para los señales (entre bloques).
Los FPGAs tampoco deben confundirse con CPLDs. Mientras que los FPGAs están formadas por un gran número de bloques pequeños, los CPLDs están formados por una pequeña cantidad de bloques grandes. Los FPGAs se basan en RAMs, lo que significa que deben ser reprogramados cuando se vuelven a conectar, y hay una memoria externa para eso.
Los CPLDs se basan en EPROM y por lo tanto no son volátiles. Los CPLDs son más rápidos, porque tienen menos bloques, pero en compensación son menos flexibles. Los FPGAs se pueden enrutar fácilmente para implementar funciones aritméticas y de RAM, lo que no ocurre con CPLDs. Los CPLDs son los más adecuados para proyectos sencillos, mientras que los FPGAs se pueden utilizar en proyectos complejos.
Comparando con los microcontroladores, vemos que estos componentes ya vienen con todas las funciones listas y sólo podemos juguetear con el software. Si el proyecto que queremos no es capaz de utilizar el hardware existente necesitaremos componentes externos, que pueden tomar el proyecto.
Del mismo modo, los DSPs ya vienen con todas las funciones preparadas y deben ser utilizados sólo por la programación. Si no pueden comportarse lo que quieren, se deben emplear circuitos externos adicionales.
Por último tenemos el caso de los circuitos integrados comunes, que sin duda serán necesarios en grandes cantidades, ya que cada uno sólo puede contener pocas funciones y además del precio, ocupará un área muy grande en la placa de circuito impreso, si la implementación del proyecto requiere un circuito de cierta complejidad. Esta solución sólo se aplica a circuitos muy sencillos.
Sumário
Curso de Electrónica - Electrónica Digital (CUR5000)
Curso de Electrónica - Electrónica Digital – Parte 1 (CUR5001S)
Curso de Electrónica Digital – Parte 2 - El Álgebra de Boole (CUR5002S)
Curso de Electrónica - Electrónica Digital - Parte 6 - Los Elementos Biestables (CUR5006S)
Curso de Electrónica - Electrónica Digital - Parte 9 - Contadores Digitales (CUR6002S)
Curso de Electrónica - Electrónica Digital - Parte 13 - Memorias, ADCs y DACs (CUR6006S)