1. INTRODUCCIÓN

Los DSP son microprocesadores diseñados para procesamiento digital de señales (manipulación matemática de señales representadas digitalmente). El procesamiento digital de señales es una tecnología cuyas aplicaciones están creciendo rápidamente, como en el caso de comunicaciones sin hilo, procesamiento de audio y vídeo y control industrial. A la vez que aumenta la popularidad de las aplicaciones DSP la variedad de procesadores DSP ha aumentado espectacularmente desde la introducción de los primeros chips comerciales a principios de los ochenta.

Los procesadores de hoy son dispositivos sofisticados con características impresionantes. En este apartado, explicamos las características comunes de los DSPs comerciales en la actualidad, analizando algunas de las diferencias principales entre ellos, centrándonos en las características que el diseñador del sistema debe examinar para encontrar el procesador que mas se ajusta a su aplicación.


2. OPERACIONES BÁSICAS

Los DSP son microprocesadores que comparten una arquitectura base optimizada. El procesamiento digital de la señal se basa en la manipulación matemática de las señales representadas en un formato digital, este análisis matemático conlleva un volumen de operaciones numéricas muy elevado. Por esto, la arquitectura de los DSP debe responder a las necesidades de las operaciones que soportan, fundamentalmente: filtrado, convolución, análisis de espectros, correlación, etc.. Comprobaremos que estas funciones comparten cálculos comunes.

Filtrado

Para filtros FIR.

Para filtros IIR

Análisis espectral.

Correlación.

En estos cálculos la operación básica a realizar es multiplicar-acumular, es decir, sumas acumulativas de productos en los que los factores varían en cada operación. Analíticamente operaciones del tipo:

Siendo y dos secuencias cuyas muestras varían en cada producto. Para optimizar esta operación la mayoría de los DSP comparten las siguientes características:

Todas estas características se ven reflejadas en la adopción de la arquitectura Harvard, por parte de los procesadores digitales de señal frente a la clásica arquitectura Von Neumann utilizada por los procesadores de propósito general.

En la arquitectura Von Neumann solo hay un bus de datos, entonces los operandos no pueden cargarse mientras se buscan instrucciones provocando un cuello de botella. Por su parte en la arquitectura Harvard el procesador puede acceder a varios bancos de memoria empleando grupos independientes de buses, permitiendo cargar operandos mientras se buscan instrucciones.

En los esquemas de las figuras 1 y 2 se observan las bases de las arquitecturas, comprobándose las diferencias anteriormente analizadas.

figura 1

3. ANÁLISIS DEL MAC

La característica mas importante de los DSP es la posibilidad de realizar la operación de multiplicar-acumular en un solo ciclo de instrucción. Para poder ejecutar esta instrucción en un solo ciclo los DSP integran un multiplicador y un acumulador en el camino principal del procesador.

Además para permitir series de operaciones de multiplicación-acumulación evitando desbordamientos aritméticos, generalmente disponen de un número de bits extra en el acumulador para permitir el crecimiento del resultado.

A continuación analizamos la estructura de la MAC en tres arquitecturas básicas en los DSPs, centrando nuestro estudio en las características que optimizan la ejecución de esta operación.

figura 2

4. MEMORIA

Una segunda característica compartida por los DSP es el poder realizar varios accesos a memoria en un solo ciclo de instrucción. Esto permite que el procesador busque una instrucción mientras a la vez accede a memoria en busca operandos y/o almacena el resultado de una operación anterior. La mayoría de los DSP son capaces de ejecutar una operación MAC mientras simultáneamente carga los datos y coeficientes para la siguiente instrucción MAC. En general los múltiples accesos a memoria en un solo ciclo tienen varias limitaciones, solo uno de los accesos puede ser a una memoria externa, y los múltiples accesos a memoria solo pueden tener lugar con determinadas instrucciones. Para permitir múltiples accesos simultáneos a memoria, los DSP tienen varios grupos de buses y memorias multipuertos y en algunos casos varios bancos de memoria diferentes.


5. DIRECCIONAMIENTO

Una tercera característica usada para aumentar la velocidad de procesamiento aritmético en los DSP es una o mas unidades generadoras de direcciones. Una vez configurados los registros de direccionamiento, la unidad generadora de direcciones trabaja en paralelo con la ejecución de instrucciones aritméticas construyendo las direcciones necesarias para los accesos a operandos.

Las unidades generadoras de direcciones de los DSP pueden implementar varios modos de direccionamiento específicos para aplicaciones DSP:

Direccionamiento por registro indirecto con postincremento: se usa cuando un cálculo repetitivo se ejecuta sobre series de datos almacenados secuencialmente en memoria.

Direccionamiento de módulo: Se usa para simplificar el uso de buffers circulares. El modo de direccionamiento circular o de módulo permite la generación de buffers circulares, muy útiles para la implementación de correlaciones y convoluciones. Algunos algoritmos necesitan la implementación de un buffer circular en memoria. En la convolución y en la correlación, el buffer circular se usa como un ventana deslizante que contiene los datos que han sido más recientemente procesados; cuando se introduce un nuevo dato, el nuevo dato se escribe sobre el dato más antiguo.

Direccionamiento bit reverse: Se usa para el direccionamiento específico de la FFT. El orden en el que se accede a los datos en una FFT corresponde, en binario, al número de dato dentro de la secuencia pero invertido.


6. SET DE INSTRUCCIONES

Como la mayoría de algoritmos DSP implican el desarrollo de cálculos repetitivos, la mayor parte de los DSP proporcionan un soporte especial para realizar bucles de forma eficaz. Normalmente, depende de una instrucción loop y repeat que permiten al programador implementar un bucle for-next sin gastar ningún ciclo de instrucción para actualizar y chequear el contador de bucle.


7. ENTRADA/SALIDA

Para permitir transferencias de entrada/salida eficientes y a bajo coste la mayor parte de los DSP incorporan uno o varios interfaces de entrada/salida series o paralelos y mecanismos generales de entrada/salida para manejar interrupciones y accesos directos a memoria para permitir transferencias sin intervención del procesador.


8. PARÁMETROS DE SELECCIÓN DEL DSP ADECUADO

Como hemos visto hasta ahora, el DSP adecuado para cada tarea depende enormemente de esa tarea. Por ejemplo, un procesador que desarrolla bien ciertas tareas puede ser una pobre elección para otras. Basándonos en esto podemos considerar ciertas características que varían de un DSP a otro a la hora de elegir un procesador.

Una forma de clasificar los dispositivos DSP y sus aplicaciones es por su rango dinámico. Se denomina rango dinámico al conjunto de valores, entre el menor y el mayor, que puede ser procesado en el curso de una operación. Esto nos ha de proporcionar un conjunto de valores para describir por completo una forma de onda señalada, desde el mínimo más profundo hasta el pico más alto. El rango ha de ser más amplio que el requerido para los cálculos, ya que se irán generando valores mayores y menores a partir de las multiplicaciones y divisiones. El dispositivo DSP ha de tener la capacidad de manipular los valores que se generen, si no pudiera se produciría un desbordamiento.

La capacidad del procesador en función de su anchura de datos (el numero de bits que manipula) y del tipo de aritmética que permite (coma fija o flotante), nos permite asignarle un tipo correspondiente de aplicaciones, así como determinar cual dispone de un mayor rango dinámico. Un DSP de 32 bits tiene un rango dinámico mayor que uno de 24 bits, y este a su vez, mayor que uno de 16 bits. Los chips de coma flotante tiene rangos dinámicos más amplios que los dispositivos de coma fija. Cada tipo de procesador es ideal para un rango específico de aplicaciones. Los DSPs de 16 bits de coma fija, como por ejemplo la familia de Motorola DSP 56100 son buenos para sistemas de voz, como teléfonos, ya que estos DSP 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, usando un ADC de 16 bits y un DSP de 24 bits de coma fija como los DSP56002; el ADC es de 16 bits ya que es suficientemente amplio para obtener la señal de alta fidelidad completa, el DSP ha de ser de 24 bits para poder manipular los valores que se obtienen al procesar la señal. El procesamiento de imágenes, gráficas en 3D y simulaciones científicas tiene un rango dinámico mucho más amplio y necesitan DSPs de 32 bits con aritmética de coma flotante como por ejemplo el 96002 o el TMS320C30.

8.1. Formato aritmético

Una de las características mas fundamentales de los procesadores digitales programables es el tipo de aritmética utilizada por el procesador. La mayor parte de los DSP usan aritmética de coma fija, donde los número se representan como enteros o como fracciones entre -1.0 y +1.0. Otros procesadores usan aritmética de coma flotante, donde los valores se representan por una mantisa y un exponente como mantisa x 2exp. La mantisa generalmente es una fracción con rango entre -1.0 y +1.0, mientras el exponente es un entero que representa en binario el número de lugares a partir de la coma que se debe desplazar a izquierda o derecha para obtener el valor representado.

La aritmética en coma flotante es mucho mas flexible que la de coma fija. En coma flotante, los diseñadores de sistemas tienen acceso a un rango dinámico más amplio ( la distancia entre mayor y el menor valor que puede representar). Como resultado, los DSP de coma flotante son generalmente mas fáciles de programar que sus correspondientes de coma fija, pero normalmente más caros. El incremento del coste se debe a la compleja circuitería necesaria para realizar los procesos en coma flotante. En coma flotante el programador no necesita conocer en muchos casos ni el rango dinámico ni la precisión, mientras que, en coma fija, los programadores han de ser cuidadosos asegurándose de que sus señales no excedan el rango dinámico.

Los procesadores de coma fija, se usan en muchas aplicaciones debido a su bajo coste. En estas aplicaciones son necesarios programas y algoritmos diseñados para determinar el rango dinámico y la precisión. En las aplicaciones en las que el coste es poco importante o bien es necesario un amplio rango dinámico o gran precisión, se utilizarán los procesadores en coma flotante.

En los procesadores de propósito general, la aritmética de coma flotante se suele simular mediante software, es decir, generando rutinas que emulen el elemento de aritmética en coma flotante. Estas rutinas tienen un alto coste en términos de ciclos de procesador. Una técnica más eficiente para incrementar el rango numérico de procesadores de punto fijo es el punto flotante de bloque, donde un grupo de números de mantisas diferentes y exponente común se procesan como un bloque de datos. Estos bloques se suelen manejar por software, aunque algunos procesadores tienen circuitería hardware para lograr su implementación.

8.2. Anchura de datos

Todos los DSP comunes de punto flotante usan una palabra de datos de 32 bits. Para DSP de punto fijo, el tamaño de palabra mas común es de 16 bits (Existen excepciones como la familia DSP56000 de Motorola que usa un tamaño de palabra de 24 bits y la familia ZR38000 de Zoran, que emplea una de 20 bits). El tamaño del dato tiene una mayor repercusión en el coste, ya que influye notablemente en el tamaño del chip y el número de pins que requiere, así como el tamaño de los dispositivos externos conectados al DSP. Por todo esto, los diseñadores tratan de emplear anchuras de palabras lo mas pequeñas posibles de acuerdo a sus necesidades.

Como en el caso de la elección entre coma fija y coma flotante, hay que buscar el equilibrio entre el tamaño de palabra y la complejidad de desarrollo. Por ejemplo, un procesador de 16 bits puede llevar a cabo operaciones aritméticas de 32 bits en doble precisión a través de encadenar juntas una combinación adecuada de instrucciones. Por supuesto la aritmética de doble precisión es mucho mas lenta que la precisión simple. Si el volumen de una aplicación puede manejarse con aritmética de precisión simple, pero la aplicación necesita mas precisión para unasección pequeña del código, valdría la pena emplear selectivamente la aritmética de doble precisión.

Aunque normalmente todos los DSP emplean un tamaño de palabra de instrucción igual al tamaño de palabra de datos, aún así hay excepciones como el caso de la familia ADSP-2100 que trabaja con una palabra de datos de 16 bits y una de instrucciones de 24 bits o el ZR38000 de 20 bits que emplea una palabra de instrucción de 32 bits.

8.3. Velocidad

Se puede obtener una medida de cómo de adecuado es un procesador para una determinada tarea a través de su velocidad de ejecución. Hay muchas formas de medir la velocidad de ejecución de un procesadores. Quizá la fundamental sea el tiempo de ciclo de instrucción: la cantidad de tiempo empleado en ejecutar la instrucción mas rápida del procesador. El inverso de este tiempo dividido por un millón es la velocidad de ejecución del procesador en millones de instrucciones por segundo o MIPS.

Un problema al comparar tiempos de ciclos de ejecución es que la cantidad de trabajo terminado por una instrucción varía mucho de un procesador a otro. Por ejemplo, algunas de las características de desplazamiento circular soportada por los DSP requieren que el dato sea desplazado con instrucciones de desplazamiento de un bit repetidas. Asimismo, algunos DSP permiten movimientos en paralelo de datos independientemente de la instrucción que ejecutemos en la ALU, mientras que otros solo soportan movimientos en paralelo que estén relacionados con los operandos de la instrucción de la ALU.

Para resolver este problema, se toma una operación básica en lugar de una instrucción, y se usa como punto de referencia al comparar. Una operación común es la operación MAC, aunque desafortunadamente proporciona poca información para diferenciar procesadores, ya que en la mayor parte de los DSP modernos una operación MAC se ejecuta en un solo ciclo de instrucción, y algunos DSP son capaces de realizar mucho mas en una instrucción MAC que otros. Además los tiempos de MAC no reflejan la implementación de otras operaciones importantes como los bucles.

Un acercamiento mas general es definir un conjunto de benchmarks estándar y comparar sus velocidades de ejecución en diferentes DSP. Estos benchmarks pueden ser simples algoritmos, funciones de kernel como filtros FIR o IIR, o pueden ser aplicaciones enteras o partes de esas aplicaciones. Implementar estos benchmarks de forma consistente en varios DSP y analizar sus resultados puede ser un objetivo difícil, pero existen programas software que nos facilitan esta tarea, como BDT Benchmarks.

Como ejemplo de la utilidad comparativa de los benchmarks, incluimos a continuación dos ejemplos. El primero es una comparación en la velocidad de ejecución de dos FFT, una de 256 y otra de 1024 puntos, sobre las tres arquitecturas analizadas en capítulos anteriores y un procesador pentium como representante de las máquinas de propósito general. El tiempo está en microsegundos.

Si la comparación se realiza en términos de "millones de operaciones por segundo" (MOPS) o "millones de operaciones en coma flotante por segundo" (MFLOPS) hay que tener cuidado porque cada fabricante de DSP tiene ideas diferentes de lo que constituye un "operación". Por ejemplo, se dice que muchos procesadores de coma flotante tienen el doble de MFLOPS que de MIPS porque pueden ejecutar una multiplicación en coma flotante en paralelo con una suma en coma flotante.

8.4. Multiprocesamiento

Aplicaciones con una gran carga aritmética (como radar o sonar) a menudo requieren varios DSPs. En esos casos, facilidad de interconexión (en términos de tiempo de diseño de la circuitería de comunicaciones y el costo de unir los procesadores) y su funcionamiento (en términos de velocidad de comunicación y latencia) son los factores importantes. Algunas familias de DSPs (especialmente Texas Instruments TMS320C4x y Analog Devices ADSP-2106x) proporcionan hardware especial para el diseño de un sistema multiprocesador.

8.5. Potencia

Los DSPs cada vez se usan más en aplicaciones portátiles como teléfonos móviles donde el consumo se convierte en una característica importante. Por esto, la mayoría de los fabricantes de DSPs han reducido los voltajes de alimentación de los procesadores e incluyen algunas características que permiten al programador reducir el consumo, algunas de estas características son las siguientes:

A pesar de estas características es difícil obtener el consumo de los DSPs porque este consumo varía, hasta por un factor de 3, dependiendo de la instrucción que está ejecutando. Los vendedores suelen publicar el consumo típico o máximo sin especificar lo que constituye un programa típico.

8.7. Costo

Los diseñadores procuran usar el DSP de menor coste que cumple los requerimientos de la aplicación, aunque sean menos flexibles y más difíciles de programar.

Un factor que influye en el precio es el tipo de encapsulado. Encapsulados del tipo "plastic quad flat pack" (PQFP) y "thin quad flat pack" (TQFP) son más baratos que un encapsulado del tipo "pin grid array" (PGA).

A continuación incluimos una tabla de precios de los principales DSP en el mercado:

CompañiaDispositivo Tipo de

Dato

Anchura

de bus

(ext/dato/dir)

Memoria

disponible

Opción

multipro-cesador

PrecioNotas
Analog Devices;

Norwood,MA

ADSP-2101KSfijo 16/24/148K RAM no$14.40/10K Programado con Sintaxis tipo algebráico
ADSP-2105KP fijo16/24/14 4K RAMno $9.50/10K
ADSP-2115KS fijo16/24/14 4K RAMno $11.40/10K
ADSP-2171KS fijo16/24/14 10K RAM

24K ROM

no$23/10K FFT compleja radix-4;1024 en 1.07ms
ADSP-2181KS fijo16/24/14 80K RAMno $33/10K
ADSP-21csp01 fijo16/24/14 20K RAM

64x16 caché

no$33/10K 16M unificados de espacio de direcc..
ADSP-21020 flotante32/48/32 32x16 caché no$106/1K
ADSP-21062 flotante32/48/32 256K RAM

32x16 caché

si$196/1K 240Mb/s,4G direcc.externas.
Motorola

Semiconductor,Austin

TX

DSP56002fijo 24/24/24512x16 RAM

64x16 programa

512x8 datos

ROM

no$17.30/100K Puerto OnCe,PLL,

6P10pins

DSP 56004 fijo24/24/24 512x16 RAM

64x16 programa

512x8 datos

ROM

no$9K/100K 2 configuraciones

intercambiables de

memoria, OnCe, PLL

DSP56005 fijo24/24/24 4608x8 progra./

512x8datos

RAM,64x16/512x8datos ROM

no$17.10/100K Puerto OnCe, PLL
DSP56007 fijo24/24/24 3200x16 RAM

6400x16 progr.

/1K ROM

no$13.30/100K 2 configuraciones

intercambiables de

memoria, OnCe, PLL

DSP56009 fijo24/24/24 2816x16progr.

/8960x8datos RAM,10Kpro.

/4846x8datos ROM

no$23/100K 4 configuraciones

intercambiables de

memoria, OnCe, PLL

DSP56158 fijo16/16/16 2Kx16 RAM,

4Kx16 ROM

no$44.30 Puerto OnCe, PLL

co-deco,25GP10

DSP56168 fijo16/16/16 256x16 RAM

12Kx16 ROM

4096x16

EPROM

si$18.49/100K Puerto OnCe, PLL

co-deco

DSP56302 fijo24/24/24 20Kx24 PRAM, 7Kx24X/7Kx24Y RAM,192x24

boot ROM,1Kx24 caché

si$100/100K
DSP96002 flotante32/32/32 1Kx16prog.

/1Kx16 datos

RAM,64x8pro.

/1Kx8 datos

ROM

si$81.20/100K Configurado para aplicaciones de imágen
Texas Instruments

Inc.;Denver,CO

TMS320C1xfijo 16/16/16256x16 RAM,

8K ROM,

4K EPROM

no$4 a $8/10K C14 características

PWN

TMS320C2x fijo16/16/16 1.5K RAM

4K EPROM

4K ROM

no$11.10/10K
TMS320C3x fijo32/32/24 2Kx32 RAM

boot ROM

64x16 caché

si$10 a $75
TMS320C4x flotante32/32/32 2Kx32 RAM

boot ROM

512x8 caché

si$99 a $176

/10K

TMS320C5x flotante16/16/16 10Kx16 RAM

32Kx16ROM

si$9 a $50
TMS320C54x flotante16/16/16 32Kx16 RAM

48Kx16ROM

si$20 a $60
TMS320C8x ámbos64/64/32 50K RAMsi $160 a $375

/10K

mas de 4 DSP dentro del chip con

100MFLOP

NEC Electronics;

Mountain View,CA

MPD77017fijo 16/16/14256x32 RAM

12Kx32ROM

si$23 /500K ensamblador tipo

C e instrucciones

paralelas

SiemensSABC165 fijo16/16/24 2Kx16 RAMsi $14.85/10K
Butterfly DSP

Inc.;Vancouver,WA

TCSPámbos 32/32/3232Kx32 RAM

64Kx32ROM

si$300/10K

Fuente:Web de la revista EMBEDDED SYSTEMS PROGRAMMING (ESP) Magazine.Abril 97

Los DSP se integran de forma comercial en placas en las que los procesadores estudiados funcionan como centro de control de diversos sistemas. Vemos algunos ejemplos de placas en los que las arquitecturas analizadas sirven de núcleo:

CompañiaProducto BusProcesador base PrecioPeriféricos
Applied Corp.;Peabody;(MA) B105 ModularISA TMS320C30/C50$12,000 A/D,D/A,I/O digital,

receptores digitales,

demodulación..

Bittware Research

Systems;Concord,NH

BlacktipISA ADSP-2106x$1,270 I/O digital,1-8 canales..
DSP Research

Inc,;Sunnyvale,CA

Tiger 30ISA TMS320C30$4,500 buses 100Mb/s, A/D

interfaz telefónico

Hollis Electronics;

Amherst,NH

DSP Platform- ADSP-2101

ADSP-2105

$775ADC,DAC,pueto de

expansión,RS232

Momentum Data

Systems;Costa Mesa

(CA)

Eagle-56ISA 56002$1,995 2 AD 1847 codecs
Momentum Data

Systems;Costa Mesa

(CA)

Raptor-563PCI 56301$2,995 2 AD 1847 codecs

Fuente:Web de la revista EMBEDDED SYSTEMS PROGRAMMING (ESP) Magazine.Abril 97

El precio de los procesadores está continuamente bajando, también hay que tener en cuenta que el precio del DSP depende de la cantidad encargada.


9. OTROS PROCESADORES DIGITALES DE SEÑAL

Anteriormente se han analizado las arquitecturas básicas de los fabricantes mas importantes de procesadores digitales de la señal. En concreto nuestro estudio se centró en un dispositivo representativo de cada grupo, siendo analizados: un procesador digital de 16 bits que utiliza formato de datos en coma fija (ADSP-2100), otro de 24 bits que utiliza formato de datos en coma fija (DSP56000) y otro de 32 bits que utiliza formato de datos tanto en coma fija como en coma flotante (TMS320C30).

Existen en el mercado otras compañías que desarrollan sus propias familias de dispositivos para el procesamiento digital de la señal. AT&T/Lucent Technology, por ejemplo, fabrica una gama de procesadores digitales basada en buses de 16 bits variando entre los modelos DSP32 y DSP1004-1027; que permiten soportar multiprocesamiento e incluyendo todos cachés de instrucciones, oscilando su precio entre $10 y $57.

La empresa NE Electronics tiene en el mercado entre otros una variedad de procesadores digitales de la señal basados en buses de 16 bits, como es el caso de los modelos MDP77017/18, que utilizan formato de datos en coma fija, permiten soportan multiprocesamiento y cuyo precio varía entre $23 y $27.

Butterfly DSP diseña comercialmente procesadores digitales de 32 bits, como el TSP que admite formato de datos tanto en coma fija como en coma flotante, puede soportar multiprocesamiento y está desarrollado para aplicaciones finales de alta calidad, cuyo precio se encuentra alrededor de $300. También dispone de procesadores de 24 bits como el BDSP9124 que utiliza formato de datos en coma fija, admite multiprocesamiento y está enfocado a software para el cálculo de FFT complejas.

No podemos obviar la presencia en este sector de otras compañías multinacionales importantes, que dedican sus esfuerzos a desarrollar productos en este campo, como son: IBM, Zilog, Nokia, Phillips, British Telecom, Ericsson, Intel, Samsung, Siemens, Sony. etc..

De acuerdo con los estudios de mercados hechos por la empresa Forward Concepts, las ventas de DSP totales en USA en 1997 serán de 2,5 billones de dólares, con un margen de crecimiento anual previsto del 35 %.

Para concluir, es revelador notar que la popularidad creciente de algunas funciones de los DSP en la codificación de voz o en el procesamiento de sonidos que disponen de ciertas ventajas sobre otros sistemas, ha llevado a los diseñadores de PC a considerar la implementación de DSP como procesadores de propósito general. Los fabricantes de procesadores de propósito general han respondido añadiendo capacidades del procesamiento digital en sus chips. Como por ejemplo, el incluir la extensión de instrucciones MMX de Intel en los Pentium y la aparición de la instrucción multiplicar-acumular en un sólo ciclo en el procesador RISC R4650 de Integrated Device Technology.


HOME