Professional Documents
Culture Documents
FCEFyN
Universidad Nacional de Cordoba
INTRODUCCIÒN A LOS DSP
CAPÍTULO I
INTRODUCCIÓN
Los rápidos avances en la electrónica, particularmente en las técnicas de fabricación de circuitos
integrados, han tenido, y sin duda continuarán teniendo, un gran impacto en la industria y la sociedad.
El rápido desarrollo de la tecnología de circuitos integrados, empezando con la integración a gran escala
(LSI, Large Scale Integration), y ahora la integración a gran escala (VLSI, Very Large Scale Integration) de
circuitos electrónicos ha estimulado el desarrollo de computadores digitales más potentes, pequeños,
rápidos y económicos, utilizados en hardware digitales de propósito general. Estas características, han
hecho posible construir sistemas digitales altamente sofisticados, capaces de realizar funciones y tareas
del procesado de señales digitales que normalmente eran demasiado difíciles y/o caras con circuitería o
sistemas de procesado de señales analógicas. De aquí, que muchas de las tareas del procesado de
señales que convencionalmente se realizaban analógicamente, se realicen hoy mediante hardware
digital, a un menor costo y a menudo más confiable. Los Sistemas DSP modernos son apropiados para
su implementación bajo el criterio VLSI. Las grandes inversiones necesarias para diseñar un nuevo
circuito integrado sólo pueden ser justificadas cuando el número de circuitos a fabricar es grande, o
cuando los niveles necesarios de desempeño son tan altos que no pueden ser alcanzados con la
tecnología existente. A menudo, ambos argumentos son válidos, particularmente en comunicaciones y
aplicaciones dirigidas a los consumidores. Avances en la tecnología de fabricación de circuitos integrados
también abren nuevas áreas de desarrollo basadas en DSP, tales como sensores inteligentes, visión de
robots y automatización, mientras entrega las bases para continuar los avances en áreas tradicionales
del procesamiento digital de señales, tales como música, voz, radar, sonar, video, audio y
comunicaciones. El siguiente texto tiene como fin entregar una breve introducción a los sistemas DSP a
través de la presentación de sus principales características, aplicaciones y algunos datos de interés en
cuanto a fabricantes, modelos y formas de elegir la plataforma más adecuada.
PROCESADORES DIGITALES DE SEÑALES
De manera habitual se esta acostumbrado a escuchar acerca del Procesamiento Digital de Señales o DSP
por sus siglas en ingles (Digital Signal Processing). Se entiende al procesamiento digital de señales, como
la disciplina dentro del área de las matemáticas, que tienen como objeto operar o transformar señales
digitales con el fin de entender o destacar la información implícita o explicita que estas poseen.
Entendiendo como señal digital, a la evolución temporal discreta de alguna magnitud física sensada,
como por ejemplo: señales de radar, música, voz, sonar, vibraciones, temperatura, etc.
Con el avance de la tecnología, esta disciplina teórica, fue materializándose en diferentes circuitos
electrónicos que permitieron desarrollar etapas de procesamiento digital de señal. Tal desarrollo llevó a
contar con Procesadores Digitales de Señal o DSP por sus siglas en ingles (Digital Signal Processor).
Un DSP es un microprocesador que permite realizar el procesamiento digital de señal a partir reglas bien
definidas las cuales son introducidas al hardware a través de un software específico que puede o no
manejar lenguajes tanto de alto como de bajo nivel. Una de las características que hacen único a los
DSP, es la posibilidad de realizar el procesamiento de las señales en tiempo real. Esta capacidad de
procesamiento en tiempo real hace a los DSP ideales para aplicaciones que no toleran ningún retardo,
como por ejemplo, las comunicaciones telefónicas por celular. Si esto no fuera posible de realizar, se
tendría retardos que darían lugar cortes o a confusión al momento de entablar una comunicación.
DE ANÁLOGO A DIGITAL
Las aplicaciones clásicas de los DSP trabajan señales del mundo real, tales como sonido y ondas de radio
que se originan en forma analógica. Como se sabe, una señal analógica es continua en el tiempo; cambia
suavemente desde un estado a otro. Los computadores digitales, por otro lado, manejan la información
discontinuamente, como una serie de números binarios, por lo que se hace necesario como primera
etapa en la mayoría de los sistemas basados en DSP, transformar las señales analógicas en digitales. Esta
transformación la hacen los Conversores Analógicos – Digitales (ADC, en inglés). Una vez terminada la
etapa de conversión analógica – digital, los datos son entregados al DSP, el cual está ahora en
condiciones de procesarlas. Eventualmente el DSP deberá devolver los datos ya procesados para lo cual
es necesaria una etapa final que transforme el formato digital a analógico. Por ejemplo, una señal de
audio puede ser adquirida (ADC) y filtrada para eliminar en gran medida ruido, crujidos de estática,
amplificar ciertas frecuencias de interés, eliminar otras, etc. Luego de esto, la información puede ser
devuelta a través de una conversión digital – analógica (DAC).
Ejemplos interesantes de aplicaciones en las cuales se utilizan DSP:
Eliminar el eco en las líneas de comunicaciones.
Lograr hacer más claras aquellas imágenes obtenidas de los equipos de diagnóstico médico por
imágenes.
Cifrar conversaciones en teléfonos celulares para mantener privacidad.
Analizar datos sísmicos para determinar los estratos que subyacen en el subsuelo.
En su núcleo, un DSP es altamente numérico y repetitivo. A la vez que cada dato esta disponible, éste
debe ser multiplicado, sumado y además de eso transformado de acuerdo a fórmulas complejas. Lo que
permite realizar todo ello, es la velocidad del dispositivo. Los sistemas basados en DSP deben trabajar a
tal velocidad, que sean capaces de realizar procesamiento en tiempo real, capturando y procesando
información a la vez que el fenómeno transcurre o con una tasa de retardo de tiempo aceptable. Los
conversores analógicos – digitales deben adquirir la información lo suficientemente seguido como para
captar todas las fluctuaciones relevantes de las señales. Si el ADC es muy lento se perderá información.
Por otro lado el DSP también debe trabajar rápido para no perder la información que le llega desde el
ADC y además cumplir con el adecuado procesamiento de las señales. Por ejemplo, un sistema estereo
maneja sonidos de hasta 20 KHz, por lo tanto el DSP deberá ser capaz de procesar alrededor del
centenar de millones de operaciones por segundo. Otras señales, tales como transmisiones por satélite
son del orden de los Gigahertz por lo que requieren un procesamiento de mayor velocidad. En las Figura
1 y 2 se muestra un diagrama en bloques conceptual de un sistema de procesamiento digital de señal
que utiliza un DSP.
Entrada Analógica
Filtro
Anti-aliasing
Filtro
HOST
Anti-imagen
Programador
Salida Analógica
Figura 2: Ejemplo de aplicación de un DSP. La señal entrante entra directamente en un filtro antialiasing
para evitar frecuencias superiores a la de muestreo del conversor analógico‐digital. Después se lleva a
cabo el procesado digital en el módulo DSP, para después volverse a convertir en analógico a la salida.
UN DSP PARA CADA APLICACIÓN: FORMATO ARITMETICO Y ANCHO DE PALABRA
Una de las características más importantes que determinan la idoneidad de un DSP para una aplicación
dada es el tipo de formato y número de bits de los datos con que realiza los cálculos matemáticos. Con
relación al tipo de formato de datos, los DSP pueden operar con números en coma fija o en coma
flotante.
Algunos DSP sólo son capaces de operar con números enteros, mientras que las aplicaciones es común
manejar números fraccionarios como por ejemplo los coeficientes de un filtro. El formato de coma fija
utiliza una representación similar a la de un número entero, salvo que se considera la existencia de un
punto binario mediante el cual se escalan los valores enteros para de esta forma, obtener números
fraccionarios. Este factor de escala es igual a 2‐bp donde “bp” es la posición del punto binario. El DSP
realiza las operaciones de suma o multiplicación como si se tratase de números enteros, sin considerar
este factor de escala. Es responsabilidad del programador interpretar la posición del punto binario.
Al desplazar el punto decimal a la izquierda, utilizando más bits para la parte fraccionaria, la precisión
aumenta, pero disminuye el margen de valores de la representación. Puesto que el tamaño de la palabra
de datos es fijo, la situación del punto binario será una situación de compromiso entre la precisión a
obtener y el margen de valores a cubrir. El programador debe utilizar el mayor número de bits para la
parte fraccionaria (máxima precisión) que permiten representar todo el rango de valores que toma una
variable.
Si durante el procesamiento un número en coma fija aumenta demasiado para poder ser representado
con el número de bits disponibles para la parte entera, el programador debe realizar un escalado
descendente del número mediante un desplazamiento a derechas perdiendo los bits de menor peso y
por tanto disminuyendo la precisión. Si por el contrario el número en coma fija disminuye demasiado el
número de bits utilizados en la parte fraccionaria puede ser insuficiente. El programador debe realizar
un desplazamiento a izquierdas para aumentar la precisión.
En ambos casos el programador debe tomar en consideración como se ha ido desplazando el punto
binario restaurando todos los números de coma fraccionaria a una misma escala en una etapa posterior.
Esto convierte la programación de aplicaciones en una tarea muy tediosa.
La utilización de rutinas en coma fija que emulan las operaciones en coma flotante (que permiten
manejar cómodamente números fraccionarios) es muy costosa en cuanto tiempo de ejecución del
código, lo que hace imposible su uso en aplicaciones de tiempo real.
Otros procesadores disponen de una CPU capaz de operar directamente con números de coma flotante.
La aritmética en coma flotante es un mecanismo más flexible que la aritmética en coma fija. Con la
aritmética en coma flotante, los diseñadores de sistemas tienen acceso a un rango de valores mucho
más amplio y a una mejor precisión. Esto facilita la programación ya que no es necesario preocuparse de
la realización del escalado. Un número de coma flotante se representa mediante una mantisa y un
exponente siendo su valor:
valor = mantisa ∙ 2 exponente (1)
La mantisa es un número fraccionario mientras que el exponente determina la posición del punto
binario. En estos procesadores es el propio hardware de la CPU el que realiza los escalados mencionados
anteriormente, quedando reflejada la posición del punto binario en el exponente. Esto facilita
enormemente la programación de las aplicaciones. En la Figura 3, se muestra un resumen, de las
representaciones numéricas más comunes en los DSP.
b7 b6 b5 b4 b 3 b2 b 1 b0
b7 b6 b5 b4 b 3 b2 b1 b 0
0 1 0 1 0 0 1 1
• 0 1 0 1 0 0 1 1
•
27 26 25 24 23 22 21 20 bp = 3
24 23 22 21 20 2-1 2-2 2-3
64 + 16 + 2 + 1 = 83
8 + 2 + 0.25+0.125 = 10.375
(a) (b)
mantisa exponente
0 1 1 0 1 0 0 0 0 0 1 1 0
•
21 20 2 -1 2 -2 2 -3 2 -4 2 -5 2 -6 2 -7 23 22 21 20
exponente
Valor = mantisa . 2
(c)
DSP
Co ma Fija Co ma Flotante
Figura 3. Representaciones numéricas comunes en los DSP comerciales. a) Formato número entero, b)
Formato número coma fija, c) Formato número coma flotante.
Además de la clasificación que normalmente se realiza de un DSP en base al tipo de aritmética que
utilizan para realizar los cálculos matemáticos (coma fija y coma flotante), dentro de cada grupo se
clasifican, según la anchura de su palabra de datos.
Los DSP de coma fija requieren un hardware más simple que la de los procesadores de coma flotante.
Esto se traduce en una reducción del coste unitario del DSP haciéndolos idóneos para aplicaciones de
gran consumo que no requieran unas prestaciones elevadas. Esta simplicidad en el DSP también reduce
el consumo del dispositivo y su tamaño, un aspecto sumamente interesante para aplicaciones portátiles
como por ejemplo teléfonos móviles. La utilización de un DSP poco sofisticada permite liberar área del
chip para incluir bancos de internos de memoria RAM de mayor tamaño o incluso bancos de memoria
EPROM o FLASH, donde grabar el código de la aplicación. Además, suelen disponer de un conjunto de
periféricos más variado. De hecho los procesadores destinados a aplicaciones específicas como por
ejemplo control de motores, sistemas de tratamiento de voz, etc., son procesadores de coma fija.
La anchura de la palabra de datos puede ser según los casos de 16, 24 o 32 bits. Esto tiene una
importante repercusión en el coste, porque influye poderosamente en el tamaño del circuito integrado
y en el número de terminales del dispositivo, así como el tamaño de los dispositivos de memoria externa
conectados al mismo. Por lo tanto, los diseñadores intentan utilizar el chip con el menor ancho de
palabra que su aplicación puede tolerar.
Los DSP de coma flotante son dispositivos de gama alta, cuya CPU dispone de hardware específico para
operar con datos de coma flotante. La anchura de la palabra de datos suele ser de 32 bits si bien el uso
de bits de guarda les permite operar en el interior de la CPU con datos de 40 bits. Esto no es
impedimento para que puedan operar también con datos en coma fija. El área ocupada del CPU de este
tipo de DSP es mayor que en el caso de los de coma fija. Por este motivo, la variedad de los periféricos
que integran es menor, tratándose en la mayoría de los casos de periféricos (puertos serie y paralelo,
DMA) utilizados en la comunicación con elementos externos (conversores A/D y D/A). Dentro de este
grupo de DSP, los más sofisticados disponen de puertos de comunicación que permiten facilitan el
montaje de redes de DSP para procesamiento en paralelo.
Cada tipo de procesador es ideal para un rango específico de aplicaciones. Los procesadores de 16 bits
de coma fija son adecuados para sistemas de voz, como teléfonos, ya que éstos trabajan con el rango
relativamente estrecho de las frecuencias del sonido. Las aplicaciones estéreo de alta fidelidad tienen un
rango de frecuencias más amplio, de forma general, los requerimientos mínimos para este tipo de
aplicaciones serían un ADC de 16 bits y un procesador de 24 bits de coma fija, de esta forma se
proporciona un rango suficientemente amplio para obtener la señal de alta fidelidad y para poder
manipular los valores que se obtienen al procesar la señal. El procesamiento de imágenes, gráficos en
3D y simulaciones científicas tiene un rango dinámico mucho más amplio, por lo que precisa
procesadores DSP de 32 bits con aritmética de coma flotante. . Los siguientes son ejemplos de los usos
de DSP en la actualidad:
Wireless LAN,
Reconocimiento de Voz,
Manejo de imágenes digitales,
Reproductores digitales de audio,
Teléfonos celulares,
Modems inalámbricos,
Cámaras digitales,
Control de motores,
Manejo de bombas, ventiladores, HVAC,
Inversores industriales,
Automatización y Control de sistemas,
Transporte, etc.
RANGO DINAMICO
El rango dinámico es un concepto propio de los procesadores. Se define como la relación existente entre
el máximo y mínimo valor (distinto de cero) representables. En un formato de coma flotante éste viene
determinado por el número de niveles del exponente. Si expresamos esta relación en dB:
RD[dB] = 6 ∙ Niveles del exponente (2)
Así para el caso típico de un exponente de 8 bits el rango dinámico es de 1530. En un formato en coma
fija este depende del tamaño de palabra de datos según la relación:
RD[dB] = 6 ∙ Tamaño de palabra (3)
El rango dinámico del procesador debe ser superior al de la aplicación. Este último viene determinado
por los conversores A/D y D/A utilizados. De esta forma se garantiza que los errores introducidos
durante el procesamiento (debidos a truncamientos, redondeos, etc) quedan por debajo del error que
introducen los propios conversores. En la Figura 4, se muestra un grafica de los valores típicos de rango
dinámico.
Rango
Dinámico
(dB)
1500 dB
1500
1000
500
192 dB
144 dB
96 dB Nº bits
Coma Coma fija Coma fija Coma fija
flotante de de 32 bits. 24 bits. 16 bits.
32/40 bits.
Figura 4: Valores típicos de Rango Dinámico
CARACTERÍSTICAS DE UN DSP
Una de las más importantes características de un DSP es su capacidad de realizar operaciones de
multiplicación y acumulación o MAC (por sus siglas en ingles multiply‐accumulate unit) en pocos ciclos
de reloj. No obstante para ello, es necesario que el dispositivo posea la característica de manejar
aplicaciones críticas en tiempo real. Esto requiere de una arquitectura que soporte un flujo de datos a
alta velocidad hacia y desde la unidad de cálculo y memoria. Esta ejecución a menudo requiere el uso de
unidades DMA (Direct Memory Acess) y unidades generadores de direcciones (AGU) que operan en
paralelo con otras partes del chip. Los AGU realizan los cálculos de direcciones, permitiendo al DSP
buscar dos datos distintos para operar con ellos en pocos ciclos de reloj, de tal forma que es posible
ejecutar algoritmos complejos en tiempo real. Es importante para los DSP tener un mecanismo efectivo
de salto para la ejecución de loops ya que el código generalmente programado es altamente repetitivo.
La arquitectura permite realizar estos loops sin instrucciones adicionales ni demoras significativas en
comparación con otros tipos de procesadores.
Los DSP deben manejar rangos dinámicos extendidos y de precisión para evitar overflow y underflow y
para minimizar los errores de redondeo. Para acomodarse a esta capacidad, los DSP incluyen
acumuladores dedicados con registros más anchos que el tamaño nominal de los datos para así
conservar la precisión (por ejemplo, DSP de 16 bits poseen acumuladores de 32 bits para manejar el
resultado de las multiplicaciones). También deben soportar el manejo de buffers circulares para la
ejecución de funciones algorítmicas, tales como filtros. En estos tipos de buffers el puntero del buffer se
actualiza en paralelo con otras funciones del chip en pocos ciclos de reloj.
Por otro lado, los DSP al igual que todo microcontrolador, se utilizan sobre todo en aplicaciones donde
existen acontecimientos externos los que requieren de la detección y el control. El ambiente externo es
detectado por cualquiera de los dispositivos periféricos; puertos digitales I/O, pines dedicados a las
interrupciones o las entradas analógicas. La fuente de señales para estos pines proviene de los
interruptores, sensores analógicos y/o digitales, y de las señales de estado de otros sistemas. Cada
entrada representa un pedazo de información sobre el estado de un cierto acontecimiento exterior. Las
salidas se envían a actuadores, relays, motores o a otros dispositivos que controlen acontecimientos.
Entre la detección y actuación está el DSP, analizando las entradas y el estado actual del sistema, para
luego realizar la acción que se les programó.
Un DSP se puede programar tanto en lenguaje ensamblador como en lenguaje C. Cada familia de DSP
tiene su propio lenguaje ensamblador y sus propias herramientas suministradas por el fabricante. En los
últimos tiempos hay otros fabricantes que desarrollan plataformas especiales que permiten programar a
los DSP en entornos de alto nivel como por ejemplo Matlab y Labview.
La organización del subsistema de memoria de un DSP puede tener un gran impacto en sus
prestaciones. Como se ha mencionado anteriormente, la instrucción MAC, así como otras, son
fundamentales en muchos de los algoritmos de procesado de señal. Una ejecución rápida de la
instrucción MAC requiere que la lectura en memoria del código de la instrucción y de sus dos operandos
se haga en un ciclo de instrucción. Existe una variedad de formas de hacerlo, utilizando memorias
multipuerto para permitir múltiples accesos a memoria en un ciclo de instrucción, mediante memorias
de datos e instrucciones separadas (arquitectura Harvard), y memorias caches de instrucciones para
permitir el acceso a la memoria para la obtención de datos mientras que las instrucciones se obtienen
de la cache en lugar de la memoria. La Figura 5 muestra las diferencias entre la arquitectura Harvard y la
Von Neumann, esta última utilizada en la mayoría de procesadores de propósito general.
Dir Dir
Memoria PROCESADOR Memoria
D DSP D de Datos
de Programa
Figura 5: Tipos de arquitectura de memoria entre un Microcontrolador (arquitectura von Neumann) y un
DSP (arquitectura Harvard).
Otro punto importante a tener en cuenta es la cantidad de memoria que soporta el DSP, interna y
externamente. Atendiendo a las características de la aplicación, la mayoría de los DSP de coma fija
poseen memorias internas, en el propio chip, de tamaño pequeño medio, entre 256 y 32k palabras, y un
bus externo de direcciones pequeño. Así por ejemplo, la mayoría de los DSP de coma fija de Analog
Devices, Lucent Technologies, Freescale y Texas Instruments tienen buses de direcciones de 16 bits o
menos, lo que limita la cantidad de memoria externa de acceso directo. Por el contrario, la mayoría de
los DSP de coma flotante proporcionan poca o ninguna memoria interna, pero se caracterizan por tener
buses de direcciones externos de gran tamaño, para soportar una gran cantidad de memoria externa.
Por ejemplo, el ADSP‐21020 de Analog Devices no tiene memoria interna pero posee un bus externo de
direcciones de 24 bits. De forma similar, el TMS320C30 de Texas Instruments posee 6k palabras de
memoria interna y dos buses externos de direcciones, uno de 24 bits y el otro de 13 bits. Además, estos
DSP poseen memorias cache para permitir un uso más eficiente de memorias externas lentas.
Cabe destacar que en la actualidad cada vez se empieza a desarrollar más la tecnología mezclada entre
microprocesadores y DSP. Diversas son las razones para que se produzca esta integración, sin embargo a
groso modo es posible identificar una en particular. Los requerimientos de control en tiempo real bajo
condiciones cada vez más exigentes en cuanto a necesidad de cálculo han llevado a los fabricantes de
microcontroladores (microchip, ST, etc.) a integrar a sus microprocesadores características de DSP
(unidades de cálculo paralelas, pipeling, etc.) y por el otro lado los fabricantes de DSP (Texas, Freescale,
Analog Device, etc.) a integrar características de microcontroladores (Conversores A/D, puertos digitales
I/O, bloques PWM).
Como resumen se puede enunciar que las características que hacen a un DSP son:
Arquitectura del núcleo del DSP.
o Ejecución rápida de operaciones MAC.
o Modos de direccionamiento especializados para manejo de buffers a través de unidades
AGU.
Juego de instrucciones.
o Control eficiente de bucles para algoritmos DSP iterativos como lOOPS.
Arquitectura de memoria.
o Múltiples accesos simultáneos a memoria.
Periféricos integrados e interfaces de I/O.
Gran interacción con el mundo exterior.
De lo expuesto, a continuación en la Tabla 1, se detallan algunas de las operaciones más comunes en el
mundo del procesamiento digital de señales, los algoritmos utilizados y el hardware necesario en las
arquitecturas DSP para llevar a cabo dichas operaciones.
Tabla 1: Necesidades del procesamiento digital de señales, a partir de considera que ya se han adquirido
las muestras por conversión analógico/digital y se han almacenado las muestras x(n) en un buffer de
memoria.
Análisis de la señal
Valor medio. Ajuste rango Acumulador. Divisor. Acceso
c) Valor medio x m = [x(1) + x(2) + ... + x(N)] / N dinámico secuencial de buffer en
memoria
d) Potencia 2 2
Px = [x(1) + x(2) + ... + x(N) ]
2 Potencia de la señal Multiplicación y acumulación.
Diferencia entre valores. Extraer valor absoluto
e) Valor absoluto x(a) ‐ x(b) ; x(a) ‐ x(b)
Rango dinámico
Tratamiento de la señal
VELOCIDAD DE LOS DSP
La medida clave para saber si un DSP es o no apropiado para una aplicación es su velocidad de
ejecución. Existen varias formas para medir la velocidad de un procesador, aunque quizás el parámetro
más usual es el tiempo de ciclo de instrucción: tiempo necesario para ejecutar la instrucción más rápida
del procesador. Su inverso dividido por un millón da lugar a la velocidad del procesador en millones de
instrucciones por segundo o MIPS. En la actualidad todos los DSP ejecutan una instrucción por ciclo de
instrucción. Un problema que se presenta cuando se compararan los tiempos de ejecución de
instrucciones de varios procesadores es que la cantidad de trabajo realizado por una instrucción varía
significativamente de un procesador a otro. Por ejemplo, algunos DSP disponen de desplazadotes
combinatorios (“barrel shifters”) que permiten hacer desplazamientos de múltiples bits en los datos con
sólo una instrucción, mientras que otros DSP requieren que el dato sea desplazado con repetidas
instrucciones de desplazamiento de un solo bit. De forma similar, algunos DSP permiten el movimiento
de datos en paralelo (carga simultánea de datos mientras se ejecuta una instrucción) que no están
relacionados con la instrucción que la ALU está ejecutando, pero otros DSP sólo soportan movimientos
en paralelo que estén relacionados con los operandos de la instrucción que esté ejecutando la ALU.
El parámetro MIPS, al igual que MFLOPS, MOPS, MBPS y otros, se miden de forma muy precisa aunque
su valor no necesariamente dice mucho de lo que un determinado DSP es capaz de hacer. Dichos valores
sirven para ubicar cada DSP en una categoría amplia en cuanto a prestaciones pero uno se debería
preguntar si se trata de valores de pico o sostenidos. Además, también nos deberíamos preguntar cómo
se ven afectadas las prestaciones del DSP cuando muchos de los datos se encuentran fuera del chip, en
la memoria externa.
Una solución a estos problemas consiste en decidir una operación básica y utilizarla como referencia al
comparar distintos DSP. La operación que suele tomarse como referencia es la MAC.
Desafortunadamente, los tiempos de ejecución de la MAC proporcionan, a veces, poca información para
poder diferenciar entre distintos DSP, ya que en la mayoría de ellos esta instrucción se ejecuta en un
solo ciclo de instrucción, y como se ha mencionado anteriormente, algunos DSP pueden hacer mucho
más que otros en una simple instrucción MAC. Además, los tiempos de ejecución de la MAC no suele
reflejar las prestaciones de otro tipo importante de operaciones como los bucles que están presentes en
todas las aplicaciones.
Un enfoque mucho más general consiste en definir un conjunto algoritmos o funciones, como un filtro
FIR o IIR, e implementarlo en distintos DSP y de esta forma ver cuál de ellos proporciona unas mejores
prestaciones. Sin embargo, la implementación de estos algoritmos para distintos DSP puede resultar una
tarea ardua. En este sentido, una buena referencia pueden ser los tests que efectúa la Berkeley Design
Technology, Inc., pionera en utilizar distintas porciones de algoritmos y funciones para medir las
prestaciones de los diferentes DSP.
VENTAJAS Y DESVENTAJAS DE LOS DSP
Las siguientes son algunas ventajas inherentes a la utilización de sistemas digitales con DSP:
• La Tecnología VLSI (Very Large Scale Integration) da la posibilidad de diseñar sistemas con la
capacidad para ejecutar procesamiento en tiempo real de muchas de las señales de interés para
aplicaciones en comunicaciones, control, procesamiento de imagen, multimedia, etc.
• Los sistemas digitales son más confiables que los correspondientes sistemas analógicos.
• Los sistemas digitales ofrecen una mayor flexibilidad que los correspondientes sistemas analógicos.
• Mayor precisión y mayor exactitud pueden ser obtenidas con sistemas digitales, comparado con los
correspondientes sistemas analógicos.
• Un sistema programable permite flexibilidad en la reconfiguración de aplicaciones DSP.
• La tolerancia de los componentes en un sistema analógico hacen que esto sea una dificultad para el
diseñador al controlar la exactitud de la señal de salida análoga. Por otro lado, la exactitud de la señal de
salida para un sistema digital es predecible y controlable por el tipo de aritmética usada y el número de
bits usado en los cálculos.
• Las señales digitales pueden ser almacenadas en un disco flexible, Disco Duro o CD – ROM, sin la
pérdida de fidelidad más allá que el introducido por el conversor Analógico ‐ Digital (ADC). Éste no es el
caso para las señales analógicas.
A pesar de ellas existen algunos inconvenientes que deberán ser tomados en cuenta al momento de
escoger una plataforma para el procesamiento de señales analógicas por medio digitales:
• La conversión de una señal analógica en digital, obtenida muestreando la señal y cuantificando las
muestras, produce una distorsión que nos impide la reconstrucción de la señal analógica original en su
“real totalidad” a partir de muestras cuantificadas.
• Existen efectos debidos a la precisión finita que deben ser considerados en el procesado digital de las
muestras cuantificadas.
• Para muchas señales de gran ancho de banda, se requiere procesado en tiempo real. Para tales
señales, el procesado analógico, o incluso óptico, son las únicas soluciones válidas. Sin embargo, cuando
los circuitos digitales existen y son de suficiente velocidad se hacen preferibles.
FABRICANTES DE DSP
Actualmente el mercado se ha ampliado enormemente en cuanto a la oferta de DSP. Existen diversos
fabricantes, cada uno con un tipo especial y particular de arquitectura, uso y/o aplicación. Entre los más
conocidos se destacan: Texas Instruments, Freescale, Analog Devices, Hewlet Packard, Cirrus, Creative,
Microchip, Philips, Yamaha, Airelog Device, AT&T , SGS‐Thomson. De todos ellos cabe mencionar las
siguientes familias de DSP:
TEXAS INSTRUMENTS:
o Familia DaVinci: Familia de DSP orientados al video digital, a la codificación y
decodificación de video.
o Familia OMAP: Familia de DSP alto rendimiento para aplicaciones de procesamiento de
gran cantidad de datos, aplicaciones de multimedia, aplicaciones para computadoras de
sistemas operativo Linux o Windows.
o Familia TMS320C2000: Familia de DSP orientada al control digital.
o Familia TMS320C5000: Familia de DSP orientados a la industria de bajo consume,
productos portatiles, reproductores de música, telefonía VoIP, equipos de libre
mantenimiento, GPS y equipos de medicina.
o Familia TMS320C6000 :
DSP de punto flotante TMS320C67x y TMS320C672x: Familia de DSP con un
poderoso compilador de C y assembler, para la optimización de aplicaciones de
audio de alta fidelidad.
FREESCALE:
o Familia StarCore (SC3400, MSC81xx, MSC711x): DSP de altas velocidades y múltiples
núcleos, orientados a la telefonía y telecomunicaciones.
o Familia Symphony™ Audio (DSP563XX, DSP567XX): Familia de DSP de 24 bits, de simple
y doble núcleo, orientados al procesamiento de audio.
o Familias DSP56300: Familia de DSP de 24 bits, orientados a las transmisiones
inalámbricas, telecomunicaciones y productos multimedia
o Familias 56800/E (DSP568XX, DSP56F8XX, DSP56F8XXX): Familia de DSP de 16 bits, que
combinan la potencia de procesamiento de un DSP con la funcionalidad y la facilidad de
uso de un microcontrolador en un único chip. Ideal para el control.
ANALOG DEVICES:
o Familias Blackfin: Familia de DSP embebidos 16/32‐bits, ideal para aplicaciones de multi‐
formato de audio, vídeo, voz y procesamiento de imágenes.
o Familias Sharc: Familia de DSP de punto flotante, originales por sus prestaciones de
memoria y rendimiento de I/O. Presenta velocidades de 319 MFLOPS / dólar, ideal para
aplicaciones de elevado rango dinámico.
o Familias TigerSharc: Familia de DSP de alto rendimiento, aplicados en la industria
y en aplicaciones de multiprocesamiento, con rendimiento por encima de mil millones
de operaciones por segundo de punto flotante.
o Familias ADSP‐21xx: Familia de DSP de alta velocidad (160MHz) y bajo consumo (184
micro‐Amper). Ideales para el procesamiento de voz, reconocimiento de voz y
aplicaciones de control en tiempo real.
CONCLUSIÓN
Los algoritmos de tratamiento digital de señal han sido los motivadores en el desarrollo de nuevas
tecnologías que permitan implementarlos. Dicha evolución tecnológica dio lugar a los DSP como
procesadores específicamente diseñados para tales aplicaciones. El diseño específico de un DSP
determina algunos aspectos o características como son: La arquitectura del núcleo del DSP y la memoria,
su juego de instrucciones, la integración de periféricos que le permitan interactuar con el exterior, el
formato de representación aritmética utilizado y la anchura de la palabra de datos.
De algunos de los temas expuestos, surgen los siguientes puntos de vistas a la hora de hacer la selección
del DSP para nuestra aplicación:
Tipo de aritmética utilizada y ancho de palabra de datos.
Rango dinámico.
Velocidad.
o Valores de pico:
Coma fija: MIPS.
Coma flotante: MFLOPS.
o Test de pruebas (benchmarks).
Memoria interna.
Soporte multiprocesador.
Consumo.
Coste.
BIBLIOGRAFÍA
Jennifer Eyre and Jeff Bier, 2000. Choosing a DSP Processor. Berkeley Design Technology, Inc.
Jennifer Eyre and Jeff Bier, 2000. Evaluating DSP Processor Performance. Berkeley Design Technology,
Inc.
Jennifer Eyre and Jeff Bier, 2000. The Evolution of DSP Processors. Berkeley Design Technology, Inc.
Jordi Salazar, 2001. Procesadores Digitales De Señal (Dsp): Arquitecturas Y Criterios De Selección. Dpto.
Ingeniería Electrónica. Centro De Sistemas Y Sensores Electrónicos, Universidad Politécnica De Cataluña.
Rodrigo Huerta Cortés, 2004. Laboratorio De Procesamiento Digital De Señales. Universidad Técnica
Federico Santa María Departamento De Electrónica.
Steven W. Smith, 1997.The Scientist and Engineer's Guide to Digital Signal Processing. ISBN 0‐9660176‐
3‐3.
GLOSARIO DE TÉRMINOS
DSP: (Digital Signal Processor). Procesador digital de señal.
AGU: (Address Generation Unit). Unidad de Generación de Direcciones.
ALU: (Arithmetic/Logic Unit). Unidad aritmético‐lógica. Unidad de ejecución en un procesador
responsable de la aritmética (sumar, restar, desplazar, etc.) y de la lógica (y, o, no, o‐exclusiva, etc.),
entre registros específicos.
MAC: (multiply‐accumulate unit). Unidad de ejecución en un DSP responsable de la realización de
multiplicaciones y acumulaciones, entre registros específicos.
MIPS: (Million instructions per second). Número de instrucciones que el procesador puede ejecutar por
segundo. La clave está en cuánto puede hacer cada instrucción. El parámetro MFLOPS es normalmente
una medida más fiable de las prestaciones del procesador.
MOPS: (Million operation per second). Número total de operaciones que el procesador puede realizar
por segundo. Se incluye accesos DMA, transferencias de datos, operaciones de entrada salida. Este
parámetro proporciona una idea aproximada de la capacidad de procesado y de entrada salida del
procesador.
MFLOPS: (Million floating‐point operations per second). Número de multiplicaciones, sumas, restas, etc.
en coma flotante que el procesador puede realizar. Algunas veces este parámetro hace referencia a
valores de pico en lugar de valores sostenidos.
MBPS: (Mega‐bytes per second). Proporciona una medida del rendimiento total de procesamiento de
datos.
MMACS: (Million multiply‐accumulate per second). Número de multiplicaciones y acumulaciones que el
procesador puede realizar por segundo.
VLIW: (Very long instruction word). Formato muy largo de palabra de instrucción.
FFT: (Fast Fourier Transform). Transformada de Fourier rápida. Método computacional eficiente para
estimar el espectro frecuencial de una señal.
FIR: (Finite impulse response). Respuesta impulsional finita. Una categoría de filtros digitales.
IIR: (Infinite impulse response). Respuesta impulsional infinita. Una categoría de filtros digitales.
PGA: (Pin grid array). Un tipo de encapsulado para circuitos integrados. Las conexiones externas se
realizan con terminales de conexión dispuestos en forma de cuadrícula.
PQFP: (Plastic quad flat pack). Un tipo de encapsulado para circuitos integrados.
QFP: (Quad flat pack). Un tipo de encapsulado para circuitos integrados. Los circuitos integrados con
este encapsulado son típicamente más baratos que el mismo circuito con encapsulado PGA.
TQFP: (Thin quad flat pack). Tipo de encapsulado similar, pero más delgado, al PQFP. El encapsulado
TQFP normalmente se utiliza en sistemas portátiles pequeños.