miércoles, 4 de marzo de 2009

Arduino y compañía

Buenas! Tras encontrar algo de información acerca del sistema uCLinux en la familia de DSPs Blackfin (remito al artículo de Analog Devices realizado por el compañero Alex), me gustaría comentar un movimiento parecido al del software libre pero en hardware (denominado Hardware Abierto).
Algunos conocerán la historia y filosofía del movimiento del software libre (por ahí están Richard Stallman, Linus Torvalds o el movimiento GNU como algunos de los nombres que siempre suenan) en el que se propone la libre distribución del software (tanto a nivel de poder distribuir el código como de hacerlo de forma gratuita) protegido por la licencia GPL, en la que se aseguran tanto la autoría de la persona sobre el código como el hecho de que ese software no acabe siendo propietario.
Aunque yo conocía ya el movimiento del software libre, me llamó la atención cuando un compañero de clase me habló de Arduino. Este nombre un tanto peculiar representa una placa de desarrollo de aplicaciones con un microcontrolador (concretamente un ATmega) cuyo diseño está bajo la licencia GPL, lo que permite que ese diseño sea libre de implementarse como quiera, quien quiera y cuando quiera. Quizás en esto cueste un poco más de ver la libertad que implica ya que, desde que yo recuerde, la gente se creaba su propio grabador de Pics (típicamente el TE-20) para programar los famosos 16F84 que se insertaban en la tarjeta Piccard para poder ver el Canal Satélite gratis, y nadie decía si el grabador era propiedad de alguien, un diseño privado o cualquier otra cosa que afectara a la libre distribución de su diseño. Sin embargo, el tener un movimiento que permita tener diseños de hardware que pertenezcan a todos y, a la vez, a nadie no deja de ser curioso en una asignatura enfocada al hardware que se utiliza en el procesado de señales, ya que quizás algún día podamos recurrir a él para una aplicación medianamente modesta sin necesidad de pagar una gran cantidad de dinero por un hardware propietario.
Por último, para enlazar un poco con lo que sería nuestra asignatura, encontré un vídeo de unos chavales que, utilizando la placa Arduino (aunque no la he comentado mucho, cuenta, además de con el procesador, con unos conversores A/D y D/A, con lo que podemos digitalizar nuestra señal y tratarla con cualquiera de los algoritmos de procesado de señal que sepamos) han implementado unos efectos para su guitarra eléctrica.
Para acabar simplemente decir que, aunque existen más proyectos con la misma temática (es decir, otras placas parecidas a la que da título al post), yo os remito a la página principal de Arduino, que es de la que se ha hablado aquí.

Procesadores Digitales de Señal: Arquitecturas y criterios de selección

1. Justifica la necesidad de un DSP en una aplicación real de electrónica de consumo. ¿En qué casos usarías un microprocesador convencional?
Un DSP, hoy en día, lo podemos encontrar en cualquier reproductor de mp3 (descompresión de la señal, aplicación de efectos de audio...), en una cámara de vídeo o de fotos (algoritmos de compresión, algoritmos de balances de color...), en dispositivos de red (módems, routers...) y muchas más aplicaciones de ámbito diario, que al fin y al cabo es la electrónica de consumo.
Un microprocesador convencional lo utilizaría en cualquier aplicación de control de otros dispositivos u otros DSPs pero no para el procesado de señal ya que no sería algo eficiente.

2. ¿Qué entiendes por escalado de datos? ¿Por qué crees que se deben escalar las señales en datos de coma fija?
Simplemente el cambiar el rango en que se mueve una señal pero conservando cada uno de sus valores, es decir, no saturándola sino convirtiendo cada valor de un rango (escala) a otro rango, de forma lineal o no.
Por el hecho de que los DSPs de coma fija tienen una rango dinámico relativamente limitado (relativamente porque todo depende siempre de la problemática a la que vaya destinado a dar respuesta), al procesar datos puede que los resultados, aún estando los de origen en el rango que acepta el procesador, la salida se nos vaya de rango y por tanto sea necesario volver a introducir la señal en el mismo. Llegados a este punto bien se podría saturar la señal, pero si la gran mayoría de la señal está fuera de rango, el resultado no sería nada bueno (muchísimas muestras podrían tener el mismo valor cuando en realidad deberían ser muy diferentes), por lo que se prefiere escalar la señal, eliminando problemas como, por ejemplo, la distorsión armónica en señales de audio.

3. ¿Qué medidas para comparar la velocidad de un procesador conoces? ¿Te parecen adecuadas? ¿Cómo crees que se utilizan? Añade otras que tú consideres necesarias.
Algunas de las medidas del rendimiento conocidas son:
MIPS: Millones de instrucciones por segundo. Hace referencia a la cantidad de instrucciones que es capaz de procesar el DSP en un segundo. El que el procesador sea mejor o peor según este dato sea grande o pequeño dependerá de la arquitectura del mismo (RISC, CISC...).
MOPS: Millones de operaciones por segundo. Hace referencia a la cantidad de operaciones que puede realizar el procesador en un segundo. No es exactamente lo mismo que el parámetro anterior ya que puede que una intrucción no sea exactamente una operación (por ejemplo, en una arquitectura CISC una instrucción puede significar varias operaciones).
FLOPS: Operaciones de coma flotante por segundo. Hace referencia a lo mismo que MIPS pero se aplica a procesadores que trabajan en coma flotante.
MBPS: MegaBytes por segundo. Hace referencia al rendimiento del sistema.
MAC: Operación de multiplicación-acumulación. Hace referencia al tiempo que tarda el procesador en realizar una multiplicación y guardar el resultado en memoria.
Las medidas aquí propuestas parecen bastante razonables para cuantificar la velocidad y capacidad de procesado de un DSP. Con respecto a otra forma de medir su potencia, yo añadiría resultados de tiempo obtenidos ante procesos conocidos, como pueden ser tablas de tiempo de cómputo ante operaciones que han de realizar estos procesadores como FFTs, operaciones con filtros... Esto realmente aparece en los datasheets de los procesadores, pero al no aparecer en este artículo, creí oportuno el nombrarlo.


4. Explica, con tus propias palabras, qué es la segmentación de intrucciones. ¿Qué son las instrucciones de "salto"? ¿Por qué dan problemas con el pipelining?
La segmentación en procesadores consiste en dividir las instrucciones en unidades más pequeñas (procesos más pequeños) que puedan procesarse de forma paralela y así ganar tiempo de cómputo, ya que en los procesadores en los que las instrucciones se procesan de forma secuencial (un detrás de la otra), el tiempo de cómputo total, en el mejor caso, es la suma de los tiempos de cada operación, mientras que en un sistema en que se permita el solape, idealmente con un solape total, el tiempo de cómputo (en un período estacionario tras el transitorio inicial) sería el tiempo que tarda la mayor operación en realizarse.
Una operación de salto es una operación que cambia de la línea en la que está a otra línea que nos es la que le sigue, sino que es otra que estará en otra parte del código (tanto por arriba como por abajo). Un ejemplo de instrucción de salto sería el famoso GOTO o un condicional IF.
Las instrucciones de tipo salto dan problemas con el pipelining porque el procesador, si comienza a realizar la línea que sigue a la que se está ejecutando (concepto de solape de instrucciones), puede que esa línea nunca se tenga que ejecutar (imaginemos un condicional en el que la condición evaluada no se cumpla) o por ejemplo que la línea siguiente requiera un resultado de la anterior para poder procesarse. En este tipo de casos, no se puede realizar el solape (al menos el solape ideal del 100%) ya que necesitamos un resultado anterior para poder seguir.
Como conclusión de esto podemos afirmar que, en el peor caso del pipelining, nos encontramos con un sistema totalmente secuencial.

5. Imagina que tienes un puesto de ingeniero jefe de un proyecto telecomunicaciones en una empresa. Tu primer cometido es elegir una placa de desarrollo en tiempo real adecuada para la aplicación que vas a desarrollar. Especifica qué criterios tomarías para realizar dicha elección, justificándolos.
Para elegir una placa de desarrollo sobre la que realizar las pruebas de los algoritmos de la empresa, me basaría en los siguientes criterios:
  • Primero de todo intentaría escoger un DSP cuyas características se acercaran bastante a los procesadores que luego pueda utilizar en el proyecto. De nada serviría el poder utilizar procesadores muy potentes en diseño y esperar los mismos resultados en la fase de producción, siendo los utilizados en la segunda etapa bastante distintos (normalmente menos potentes) a los primeros. Además, también conviene utilizar un DSP cuyas características sean lo más cercanas posible a lo que finalmente requerirá el algoritmo por el hecho de que si no tuviéramos suficiente potencia de cálculo, el DSP no funcionaría en "tiempo real" y si tuviéramos más de la necesaria habrían partes del procesador que no estarían funcionando al máximo pero sí gastanto potencia energética.
  • Siguiendo con el tema de potencia (aunque en este caso energética), intentaría utilizar un DSP bastante similar al que fuera a utilizar en la aplicación final: el saber si el algoritmo necesita gran potencia energética (que aunque está relacionado con la de cálculo, vale la pena considerarlo como una variable más para un mejor diseño) vendrá bastante bien para poder optimizar el diseño final.
  • También, como criterio de búsqueda de qué DSP utilizar, propondría la utilización de un procesador que fuera relativamente común (en la medida de lo posible) y de una empresa relativamente fuerte en este tipo de mercado. Este criterio es algo inicial y no implica que más tarde, cuando ya se pudieran evaluar los objetivos comerciales del proyecto, si se hubiera tenido éxito, no se pudiera contemplar la posibilidad de firmar con una casa de DSP más modesta la creación de una línea propia de procesadores.

lunes, 23 de febrero de 2009

World Mobile Congress

Entre el 16 y el 19 de febrero en la ciudad de Barcelona ha tenido lugar la feria más importante del ámbito de la telefonía móvil denominada la World Mobile Congress. Cada año, en este evento, se exponen los avances más significativos conseguidos en este campo.
En la edición que ha tenido lugar se preveían cerca de 50.000 visitantes (según cifras oficiales, finalmente hubieron 47.000 asistentes) y unas 1.300 compañías. Algunas de estas compañías, habituales por otro lado en estas ferias, fueron Telefónica, Microsoft, Nokia, Samsung o Toshiba.
Algunas de las novedades que en esta feria se expusieron son las que siguen:
  • Móvil ecológico Blue Earth: Aunque ya se comentó en clase (creo que fue el compañero Javier Sala), me pareció una idea bastante curiosa y, buscando información, encontré que es una propuesta de la empresa Samsung y que el aparato en sí lleva una placa solar capaz de abastecerlo, así como que parte del mismo (en concreto la carcasa) está fabricado con materiales reciclados.

  • MiFi: Es una propuesta de la empresa Novatel y que llegará a España de la mano de Telefónica. Esta tecnología permitirá crear redes WiFi a partir de las conexiones clásicas a Internet por medio de la telefonía móvil: con este aparato y una tarjeta SIM, que será la que nos dé acceso a la red, podremos crear una red inalámbrica a la que podremos conectar ordenadores, consolas, teléfonos móviles con opciones de WiFi...

  • Sistema Operativo Android: Como ya ha comentado el compañero David del Rosario en su blog, Android es un sistema operativo que está basado en el núcleo de Linux (lo que se conoce como el kernel) y que seguirá con la filosofía del mismo: libre distribución y código abierto (licencia open source). Este sistema está previsto que se vea en la famosa HTC Dream y en algunos otros dispositivos de Samsung o Motorola.
  • Sistemas de escritorio 3D: Aunque no es nada excesivamente nuevo en ordenadores personales, los sistemas que permiten hacer escritorios tridimensionales en el móvil (como en su momento Beryl ó Compiz Fusion en Sistemas Linux para ordenadores) es algo que se ve como una tendencia futura.
  • i-mate Project Centurion: En esta edición del World Mobile Congress se presentó el que posiblemente sea el móvil más pequeño con Windows Mobile hasta la fecha (del tamaño de una tarjeta de crédito).

  • Cargador Universal: Como ya apuntó un compañero en clase (creo recordar que fue Nacho), este simple aparato, aunque parezca la mayor tontería del mundo, solucionará el hecho de que por ejemplo en casa, por tener cada uno el móvil de una marca, tengan que haber sendos cargadores.
  • Cargador Ecológico: Samsung está bastante comprometida con el medio ambiente por lo que parece: en la misma feria presentó el Blue Earth (móvil ecológico comentado antes) y el cargador que ahora estamos comentando que tiene dos vertientes, la de carga por energía solar y la de carga con una dinamo. Aunque esto no parece nuevo (los ordenadores OLPC o las famosas linternas recargables que tienen adaptadores para el móvil), es la primera propuesta de esta índole para este tipo de dispositivos.
Como algo destacable de esta edición de la feria yo opino que es la movilización por el desarrollo sostenible (dos de los avances comentados fomentan la ecología) como uno de los claros objetivos futuros. En cuanto a la tecnología, de las comentadas, que más me ha llamado la atención ha sido el sistema MiFi ya que, una vez salvada la barrera de llevar la red de redes a cualquier parte del mundo (hablando por hablar), se consigue que ese acceso no esté centralizado en un único punto.



Ref:
http://www.informador.com.mx/tecnologia/2009/78994/6/mobile-world-congress-2009-la-mayor-feria-de-telefonia-celular.htm
http://www.abc.es/20090216/economia-tecnologia/mifi-como-conectar-hasta-200902162031.html
http://en.wikipedia.org/wiki/Android_(operating_system)
http://muycomputer.com/FrontOffice/ZonaPractica/Especiales/especialDet/_wE9ERk2XxDAdds-dSMgnBi7YA8SxVxHlHF0D3GrFQHxiKnX_mo5MJptAU6WzalJ3
http://gizmovil.com/2009/02/mwc-2009-i-mate-project-centurion-el-telefono-con-windows-mobile-mas-pequeno-del-mundo/
http://gizmologia.com/

lunes, 16 de febrero de 2009

Un DSP en tu vida: POD 2.0 de Line6

Para esta actividad de la asignatura PDS comentaré el caso de una unidad de efectos muy utilizada por los guitarristas eléctricos, el POD de la empresa Line6.
Aunque antes se empleaban efectos de guitarra totalmente analógicos y se conseguían grandes resultados (hay vertientes que defienden que incluso con un sonido mejor que cualquier sonido conseguido por un procesado digital, pero eso es otro tema) también resultaban caros debido a que cada efecto que queríamos conseguir requería la utilización de un pedal de efecto diferente (es decir, un nuevo sistema en nuestra cadena de procesado del sonido). Ya cuando los DSPs empezaron a ser potentes y, sobretodo, baratos se comenzaron a crear unidades de procesado de efectos que permitían crear casi cualquier procesado en la señal imitando los pedales analógicos. Como sabemos, al fin y al cabo cada efecto analógico es un filtro, también analógico, y eso se puede modelar de forma digital con los coeficientes de un filtro FIR o un filtro IIR. Es aquí donde reside la ventaja: con un DSP podemos reproducir los coeficientes (estáticos o dinámicos en función del efecto) que resultan de nuestra cadena de efectos y crear así nuestra propia cadena de forma digital.
Retomando la historia inicial, el primer POD vio la luz en el año 1998 de la mano de la empresa Line6 y fue una gran revolución porque, aunque ya existían grandes pedaleras digitales, esta unidad de procesado estaba pensada para la grabación (aunque luego también surgió el formato pedalera) lo que permitía, entre otras cosas, una gran capacidad de modificación de sonidos y la posibilidad de imitar amplificadores comerciales, lo que hacía que los grupos ya no necesitaran grabar la cadena de sonido guitarra-efectos-amplificador-altavoces, sino que con conectar al aparato su instrumento ya lo tenían todo.
El POD que vamos a comentar aquí es el POD 2.0 (una revisión del original). El DSP que utiliza esta unidad es el ADSP - 21065L de la empresa Analog Devices. Aquí podemos ver una imagen del circuito de la unidad y un detalle del propio DSP:
Detalle del circuito del POD 2.0

Detalle del ADSP - 21065L de Analog Devices del POD 2.0

Las características de este circuito son:
  • Familia SHARC (Super Harvard Architechture)
  • Resolución de 32 bits
  • 198 MFLOPs
  • Frecuencia del reloj: 66 MHz (Tiempo de Ciclo: 15 nseg)
  • 66 MMACs
  • Memoria SRAM integrada: 544 Kbits
En el catálogo del fabricante también se adjunta una tabla en la que se puede ver el coste que tienen las operaciones en el procesador. Aquí reproducimos algunas de las mismas:
En el catálogo del fabricante también se adjunta una tabla en la que se puede ver el coste que tienen las operaciones en el procesador. Aquí reproducimos algunas de las mismas:





OperaciónTiempo (nseg)Ciclos de reloj
FFT de 1024 puntos274
18221
Filtro FIR151
Filtro IIR604
División (Y/X)906

Finalmente, las funciones de este DSP dentro del producto están claras ya con lo introducido: mediante filtros digitales, los cuales se encarga el DSP de procesar con la señal de entrada, conseguir hacer efectos de audio (reverb, delay, wah-wah, phaser...) en un dominio digital.

Ref:
http://www.analog.com/en/embedded-processing-dsp/sharc/adsp-21065l/processors/product.html

http://pdf1.alldatasheet.com/datasheet-pdf/view/48856/AD/ADSP-21065L.html

miércoles, 11 de febrero de 2009

DSPs para audio en videoconsolas

Buenas! La primera actividad propuesta para la asignatura Procesadores Digitales de Señal (PDS) consiste en buscar DSPs que se encuentren en videoconsolas, siendo en mi caso particular y en el de otros tres compañeros (visitar Blog de David, Blog de Javi y Blog del Torres) el buscar los procesadores dedicados al tratamiento del audio en las mismas. En este post vamos a comentar una serie de casos concretos acerca de estos DSPs.

Allí por finales de 1993 o principios de 1994 (final de la época de consolas como la Sega Megadrive o la SuperNintendo y a poco de salir la Sony Playstation) vio la luz una consola de Atari, famosa empresa creadora de videojuegos como el clásico Pong o el survival horror Alone in the Dark, llamada Atari Jaguar. Sólo por citar ciertos elementos curiosos de ésta, fue una consola adelantada a su época ya que era capaz de procesar 64 bits (o así se decía) en un momento en que pasábamos de consolas de 16 bits a otras de 32 bits gracias a la utilización de 5 procesadores (entre ellos, el Motorola 68000). Sin embargo, no consiguió un gran hueco en el mercado.

En cuanto al tema del audio en esta consola, además del chip de audio que utilizaba (llamado Jerry y que era capaz de dar una calidad tipo CD), destacaba la utilización de un DSP de 32 bits, con arquitectura RISC (arquitectura con operaciones de proceso muy pequeñas y que se procesan muy rápido) y con una memoria interna de 8 KB.


Ref:

http://www.elotrolado.net/wiki/Jaguar

http://www.museo8bits.com/jaguar.htm

http://es.wikipedia.org/wiki/Atari_Jaguar


Entre 1998 y 1999 vio la luz la Sega Dreamcast, que era bastante mejor que la Playstation y su rival la Nintendo 64. Era una consola de 128 bits y daba un resultado gráfico muy bueno, pero nunca consiguió el gran mercado esperado ya que poco después de salir esta consola vería la luz la Playstation 2 que recogería el testigo, y por tanto los usuarios, de su predecesora.

El sonido en esta consola venía dado por un chip de la compañía Yamaha (AICA) que internamente utilizaba un DSP con una arquitectura RISC (concretamente, uno de la familia ARM el cual es diseñado por la empresa Acorn Computers), con una frecuencia de 22.5 MHz, 32 bits de resolución y capacidad de procesar 64 canales modulados bien en PCM o bien en ADPCM.


Ref:

http://www.museo8bits.com/

http://en.wikipedia.org/wiki/Dreamcast

http://www.elotrolado.net/wiki/Dreamcast


Por último en este post comentaremos la consola que Nintendo sacó al mercado entre 2001 y 2002 como respuesta a la Playstation 2 de Sony: la Nintendo Gamecube. Como datos generales de esta consola, cabe destacar que tenía una calidad de imagen similar a la recién comentada consola de Sega y que era la primera consola en la Nintendo desechaba el uso de cartuchos.

Pasando al tema del sonido, la Gamecube utiliza como base de su sonido un DSP creado por la empresa Macronix con una resolución de 16 bits. Consta de una arquitectura Harvard (como la gran mayoría de DSPs), por lo que posee memoria diferente para datos y para instrucciones, que se distribuyen así:

  • Memoria para datos: 8 KB RAM + 8 KB ROM
  • Memoria para instrucciones: 8 KB RAM + 4 KB ROM

La frecuencia de operación del chip es de 81 MHz, es capaz de procesar 64 canales simultáneamente modulados en ADPCM, y la frecuencia de muestreo a la funciona el sistema es de 48 KHz (calidad DVD).


Ref:

http://www.museo8bits.com/

http://es.wikipedia.org/wiki/Nintendo_GameCube

http://www.nintendo.es/NOE/es_ES/systems/especificaciones_tcnicas_1149.html

lunes, 2 de febrero de 2009

Inaguramos asignatura y sección

Buenas! Con motivo de la necesidad de llevar un blog por parte de la asignatura Procesadores Digitales de Señal (DSPs) intentaremos retomar este blog y darle un poquito de "vidilla", que buena falta le hace.
Nos vemos!

jueves, 1 de enero de 2009

Feliz Año 2009

Buenas a todos! Desde aquí os deseo a los que estéis por ahí que este año que entra os traiga muchas cosillas buenas en general y a los de teleco pocas ICT's, a no ser que sea para cobrarlas.
Os dejo esta estampa que representa de la mejor forma que hay el año nuevo aquí en España:
Nos vemos!