Redeya.com |
Introducción
a los D.S.P
Autores: Juan Antonio Rubia Mena masamue2001@teleline.es Jesús de la Casa Cárdenas casacar@ujaen.es Indice
1. Introducción Actualmente los D.S.P. (Digital Signal Processor) se están convirtiendo en elementos muy comunes en el diseño electrónico, sustituyendo en algunas aplicaciones a los microprocesadores y microcontroladores. Principalmente encontraremos D.S.P. en circuitos relacionados con las telecomunicaciones, sistemas de audio y en algoritmos avanzados de control de motores. Por ejemplo, podemos encontrar D.S.P.. como integrantes de estas aplicaciones :
Los D.S.P. , al igual que los microprocesadores, son sistemas programables que nos permiten implementar muchos tipos de aplicaciones en función de las posibilidades del sistema y, por supuesto, de las habilidades del programador. Desde el punto de vista de la arquitectura interna, podemos decir que un D.S.P.. es un microprocesador (o un microcontrolador, como ya veremos) optimizado internamente para realizar los cálculos necesarios para implementar algoritmos de proceso de señal. Esta optimización se consigue mediante algunos aspectos principales:
La ejecución de varias operaciones en un sólo ciclo es posible ya que están implementadas como circuitería adicional y no como código microprogramado en la propia unidad central. Un ejemplo típico es la instrucción MAC (multiply and accumulate) que puede realizarse como un conjunto de puertas lógicas que estarán conectadas a uno o más registros especiales del D.S.P. Los modos de direccionamiento especiales se implementan para agilizar el tratamiento de estructuras de datos (como por ejemplo, buffers circulares) similares a las que conocemos de lenguajes de programación de nivel medio-alto. De este modo se han implementado algunos modos de direccionamiento tales como:
3. Arquitectura Típica de un D.S.P. Los D.S.P. abandonan la arquitectura clásica de Von Neumann, en la que datos y programas están en la misma zona de memoria, y apuestan por la denominada ``Arquitectura Hardvard''. En una arquitectura Hardvard existen bloques de memoria físicamente separados para datos y programas. Cada uno de estos bloques de memoria se direcciona mediante buses separados (tanto de direcciones como de datos), e incluso es posible que la memoria de datos tenga distinta anchura de palabra que la memoria de programa (como ocurre en ciertos microcontroladores).
![]() Con este diseño se consigue acelerar la ejecución de las instrucciones, ya que el sistema puede ejecutar simultáneamente la lectura de datos de la instrucción ``n'' y comenzar a decodificar la instrucción ``n+1'', disminuyendo el tiempo total de ejecución de cada instrucción. Para ver esto más claro, pensemos en un microprocesador clásico, cuyo ciclo de trabajo es:
Normalmente en los D.S.P. se usa una arquitectura Hardvard modificada con 3 buses: uno de programa y dos de datos, lo cual permite que la CPU lea una instrucción y dos operandos a la vez (pero no dos posiciones de memoria a la vez, para lo que hace falta una RAM de doble puerto). En el proceso de señales, las operaciones con 2 operandos son muy comunes, motivo por el cual se hace esta modificación. También es bastante común encontrar un solapamiento entre la ROM y la RAM de datos, de modo que podemos usar parte de la ROM de programa para almacenar coeficientes y leerlos en la RAM de datos, sin tener que usar instrucciones específicas para leer los datos almacenados en ROM, como ocurre en algunos microcontroladores, como la familia 8051, que posee la instrucción instrucción MOVX para tal fin. 4. La unidad aritmético-lógica de los D.S.P. En el proceso digital de señales, una de las operaciones más comunes es el cálculo de sumas de productos, que también se usa bastante en sistemas digitales de control, por lo que cualquier mejora en esta zona mejorará el rendimiento global del circuito. La multiplicación es una operación que es fácil de programar, aunque por su carácter iterativo es de una duración considerable. Así, por ejemplo, en un microprocesador 8086, una suma necesita 3 ciclos de reloj, mientras que una multiplicación en punto fijo puede necesitar unos 130-160 ciclos de reloj. En tareas normales, la multiplicación apenas supone el 1% del total de las operaciones, por lo cual los microprocesadores no suelen incorporar esta operación; pero en el proceso digital de señales es una de las operaciones principales, por lo cual se hace imprescindible la presencia de un multiplicador que la realice en el menor tiempo posible. Otra característica interesante de los D.S.P. es la existencia de dos unidades aritmético-lógicas, una general y otra de tipo específico. Estas dos unidades son:
![]() Además de las instrucciones aritméticas habituales, la unidad central aritmético-lógica puede realizar operaciones booleanas, facilitando la manipulación de bits que se usa para el trabajo con números enteros con signo. Los D.S.P. de propósito general trabajan con aritmética entera, pero también existen D.S.P. que operan en coma flotante. La salida de la UAL pasa al acumulador, que es un registro de 32 bits en el caso de un D.S.P. de 16 bits . Este registro puede dividirse en 2 segmentos de 16 bits para su almacenamiento en memoria. Para dividirlo se usan operaciones de rotación de bits, pero no las realiza la UAL ya que para este fin existe un registro de desplazamiento incorporado dentro de la UAL . La UAL de los D.S.P.'s presenta la posibilidad de multiplicar datos. Como sabemos, realizar una multiplicación en ensamblador consume bastante ciclos de reloj, debido a las sumas y desplazamientos que hay que hacer. En cambio, un D.S.P. realiza la multiplicación en un solo ciclo ya que incorpora un multiplicador construido a base de puertas lógicas.
![]() Normalmente la operación de multiplicación viene acompañada por la operación ``MAC'' (Multiply and accumulate) que implementa las sumas de productos que hemos visto antes y como siempre en un sólo ciclo de instrucción. Los modos de saturación están también presentes en la UAL de un D.S.P. y se refieren a la posibilidad de configurar el comportamiento del D.S.P. cuando se produce un desbordamiento de bits en una operación aritmética; de este modo es más fácil trabajar en aritmética con signo. 5. Variaciones en la arquitectura de los D.S.P. Una característica bastante común de los D.S.P. es su adaptación a diversas aplicaciones por parte de los fabricantes, añadiendo diversas características adicionales y periféricos, de modo que un tipo determinado de D.S.P. sea la respuesta casi perfecta a una necesidad concreta. Así, consultando los catálogos, encontraremos unos D.S.P. que se parecen bastante a un microprocesador avanzado, y otros que nos recuerdan a algunos microcontroladores de gama alta. En los D.S.P. dedicados a tareas de control, podemos encontrar los periféricos típicos de los microcontroladores, y otros no tan comunes. En concreto, podemos hallar periféricos tales como:
El grado de especialización de los D.S.P. se puede ver en una aplicación como el control de motores, que comentaremos seguidamente. 5.1 D.S.P. para control de motores El control de motores, (y en general todo lo relacionado con los sistemas electrónicos de potencia) es un campo al que los fabricantes de D.S.P. se están dedicando ampliamente, ya que al estar presente en casi todos los procesos industriales el desarrollo de módulos de control de potencia es una inversión segura. De este modo podemos encontrar D.S.P. con circuitería auxiliar incorporada que pueden ser una solución en una sola pastilla a algunos sistemas de control de potencia tales como:
![]() En un D.S.P. típico para control de motores trifásicos podemos reconocer los periféricos típicos de un microcontrolador, pero además encontraremos estos bloques:
Los D.S.P. para control de motores presentan en su interior 6 ó 12 módulos PWM para controlar totalmente 1 ó 2 grupos de tiristores o IGBT, que se programan mediante unos registros que el D.S.P. posee al efecto y en los que especificamos el ancho de pulso o el ciclo de trabajo requerido. No obstante, es muy corriente encontrar un módulo denominado generador de eventos, que proporciona una flexibilidad impresionante al control de los motores, ya que se encarga de sincronizar todos los módulos PWM de modo que nosotros sólo tenemos que preocuparnos de indicarle un ciclo de trabajo y él hace el resto. Además suele ir acompañado por un controlador de banda muerta que se encarga de introducir unos retardos entre las señales que atacan a los semiconductores de potencia, de modo que se evitan los cortocircuitos en los últimos por culpa de los retardos en la conmutación de los mismos. Para las aplicaciones más exigentes los fabricantes han desarrollado una gama de D.S.P. con una enorme capacidad de cálculo, de unos 1600 MIPS, cuando lo típico en un D.S.P. es alcanzar unos 150 MIPS como máximo. Estos circuitos están concebidos especialmente para aplicaciones relacionadas con el mundo el las telecomunicaciones, como estaciones base de radio, servidores de acceso remoto, modems de cable o sistemas de telefonía celular. En realidad, estos D.S.P. están formados por varias unidades funcionales (8 en el TMS 320C6201 de Texas Instruments), altamente optimizadas, que trabajan en paralelo. De este modo es posible alcanzar un rendimiento de cálculo de 1600 MIPS con un reloj de 200 Mhz.
![]() Este circuito incorpora en su interior una memoria SRAM de 1 Mbit (y 256 bits de ancho) que se divide en 512 Kbits para datos y 512 Kbits para programa/caché. La memoria tiene una anchura de 256 bits para así poder leer 8 instrucciones de 32 bits en un solo acceso a memoria. En el caso de no disponer de suficiente memoria interna, podemos añadir memoria externa de 32 bits de ancho; en este caso la memoria interna de programa se configura para usarse como caché, de modo que no disminuya en exceso el rendimiento por usar una memoria con una anchura de palabra menor. Para minimizar la circuitería incorporada en el D.S.P. encargada de la coordinación entre procesadores, la paralelización es responsabilidad en gran medida de las herramientas de programación, que en este caso son ensambladores y compiladores de C. Por tanto, es evidente que tendremos que usar exclusivamente las herramientas que nos proporciona el mismo fabricante, ya que de ellas depende fundamentalmente el rendimiento del sistema. Con la llegada de los D.S.P. se abre un nuevo campo
para el diseñador de sistemas, ya que podemos implementar sistemas que
requieren una gran capacidad de proceso con un coste mucho menor que cualquiera
de las soluciones existentes. No obstante, no tenemos que lanzarnos alocadamente
a programar D.S.P. para todas las aplicaciones, sino que debemos escoger
el sistema más adecuado a nuestras necesidades, aunque ello implique el
tener que desarrollar una rutina de multiplicación en ensamblador. |
Página original de Http://www.redeya.com, prohibida su reproducción sin consentimiento del autor |