domingo, 22 de febrero de 2009

SISTEMA OPERATIVO ANDROID de GOOGLE

El gigante Google hasta en la “sopa”.


Todo el mundo que navega por internet conoce la palabra Google. En el certamen 3GSM celebrado en Barcelona el presente año se ha convertido en realidad la presentación de Android. Para los que no estamos muy puestos en el tema, y a modo de introducción, contestaremos rápidamente a unas preguntas básicas:


¿Qué es Android? Android es una plataforma de software y un sistema operativo para dispositivos móviles basado en el kernel de Linux. Desarrollado por Google y la "Open Handset Alliance." Permite escribir código en lenguaje Java con algunas librerías desarrolladas por Google y destinadas para controlar el móvil.


¿Cómo se distribuirá este 'Sistema Operativo'? Será 'free' con el sentido de 'gratis'. Su código fuente está abierto para todos aquellos interesados (Ver apartado curiosidades).


Texas Instruments y Google: dos gigantes Estadounidenses.


La compañía estadounidense Texas Instruments (TI) ha presentado el primer dispositivo basado en la plataforma Android de Google sobre 2 “teléfonos” diferentes.

1.

Uno está basado en su OMAP850, un chip único que contiene un procesador de aplicaciones para Android y un procesador de banda base para controlar el interfaz radio del teléfono.

2.

El otro terminal contiene un procesador de aplicaciones multimedia OMAP3430 de Texas Instruments, capaz de decodificar señales de televisión de alta definición a una resolución de 720 p. que requiere un procesador de banda base independiente y está diseñado para móviles multimedia de alta calidad.


Conectando con el blog de Francisco que nos habla acerca del la familia OMAP de TI, se refiere a esta como una plataforma que “ofrece una variedad de aplicaciones de alto rendimiento con procesadores rápidos, energía portátil y una sólida red de apoyo con un catálogo que incluye software de fuente abierta”.


Veamos una imagen ofrecida por TI del procesador OMAP 3430:



Conclusiones


Si estaís realmente interesados por el tema, os recomiento visitar:


http://www.androidgoogle.net/


En primer lugar señalar que un fabricante mundialmente conocido de DSP como Texas Instruments ha sabido aprovechar la oportunidad y el “boom” internacional ofrecido por Android poniendo el nombre de sus DSP OMAP 859 y 3430 (e inevitablemente de la compañía) al lado de tan esperado software.


Por otra parte, en tiempos de crisis no resulta descabellado afirmar que el futuro está en el software “free”. En un contexto mundial donde las compañías están obsesionadas con recortar gastos y poder superar estos tiempos difíciles, resulta lógico pensar que paulatinamente irá decreciendo el número de dispositivos móviles que funcionan con Microsoft.


Concluyendo el post, tan solo apuntar que me parece muy inteligente la trayectoria de Google. Sacar al mercado un software libre no les hace ganar dinero directamente, pero la cosa cambia cuando está destinado a proporcionar un gran avance en el acceso a internet desde terminales móviles. Así pues, se verán aumentados sin duda alguna los ingresos del gigante Estadounidense Google en cuanto a publicidad.



ENLACES y CURIOSIDADES

- El móvil de google “dream”:

http://zonadigital.excite.es/noticias/3039/Google-presenta-su-movil-Dream

- Lógicamente, está disponible el código fuente del SO… si os atrevéis aquí está el enlace:

http://source.android.com/download

- Más información técnica de los DSP empleados por TI para Andorid en:

http://focus.ti.com/pr/docs/preldetail.tsp?sectionId=594&prelId=sc08019

- Demostración Android (videos)

http://www.youtube.com/watch?v=yOnV5lAvW4Y

http://www.youtube.com/watch?v=sOSk9TW7z-4

http://www.youtube.com/watch?v=inRMILwJa-U

La información ha sido extraída de:

www.ti.com

www.idg.es/

wikipedia

www.androidgoogle.net/

JUGAR CON IEEE 754

Buenas, ante todo comentar que publico este comentario también en mi blog dado que es cuestión de horas que Mamen se cambié el blog de la UA. Os paso un código en Matlab que convierte un número decimal a IEEE 754 (previa conversión decimal-hexadecimal-binario). Permite elegir entre precisión simple y doble. Así podremos hacernos mejor una idea.

Se compone de 2 funciones:

1º) Convierte el número de hexadecimal a binario

function x=h2b(y)
% Función que convierte de hexadecimal a binario
X = ['0000'; % 0
'0001'; % 1
'0010'; % 2
'0011'; % 3
'0100'; % 4
'0101'; % 5
'0110'; % 6
'0111'; % 7
'1000'; % 8
'1001'; % 9
'1010'; % a
'1011'; % b
'1100'; % c
'1101'; % d
'1110'; % e
'1111']; % f
x = X(sscanf(y,'%x')+1,:);
end

2º) Calcula el número IEEE 754

function x=dec_a_754(r,precision)
% Devuelve el número decimal de entrada r en formato IEE754
% La precisión puede ser 'simple' o 'doble'

% En primer lugar determinamos la precisión
if (strcmp(precision,'simple'))
y = sprintf('%tx',r);
elseif (strcmp(precision,'doble'))
y = sprintf('%bx',r);
% Si no es simple o doble --> error
else
error('La precisión puede ser ''simple'' o ''doble''\n');
end

y
x = '';
% Concatenamos cadenas
for i=1:length(y)
x = strcat(x,h2b(y(i)));
end


Trastear un rato las funciones de Matlab ayudan a hacerse una idea de las operaciones que se realizarían internamente en un DSP. Saludos. David.

jueves, 19 de febrero de 2009

Procesamiento de señales a tiempo real basados en PC: WaveProc

Introducción

Desarrollar un algoritmo de audio implica una primera fase donde se ajusta y depura el algoritmo hasta obtener el funcionamiento y la calidad deseada. El objetivo es proponer un prototipo para un sistema rentable y rápido. La forma más sencilla de conseguirlo es con un ordenador personal, un software matemático como MatLab y DSP’s para manejar el procesamiento a tiempo real.

Habitualmente, es preciso para el tratamiento de señales a tiempo real un hardware dedicado, compuesto normalmente por convertidores analógico-digital, digital-analógico y procesadores DSP. La idea es aprovechar las facilidades que ofrece un PC como interfaz del prototipo (pantalla, teclado, ratón…).

Un PC como plataforma de un DSP

Un software adecuado para programar es, por ejemplo C ++, aunque para la fase de desarrollo del algoritmo se recomienda Matlab ya facilita la representación de datos, funciones, implementación de algoritmos, creación de interfaces de usuario (GUI) y comunicación con programas en otros lenguajes y dispositivos hardware.

Procesadores de señal orientados a objeto

Al procesar una señal de audio, son frecuentes las repeticiones de código usado una y otra vez en un algoritmo, por lo que se pensó en emplear un objeto como componente básico. El sistema, llamado WaveProc, ha sido desarrollado con ventanas DLL así que puede ser llamado como una función de MatLab.






El controlador ASIO (Audio Stream Input Output) es compatible con muchas tarjetas de sonido de alta calidad (24 bits, con tasas de de muestreo de hasta 96 KHz) y permite trabajar con VST, DirectX y demás protocolos, con lo que es posible su uso en la mayoría de aplicaciones de audio. Por medio de la aplicación waveproc.dll se consigue que los bloques que más se utilicen durante la ejecución del programa se añadan a un nuevo algoritmo.

El número de canales en cada bloque y el enrutamiento de la señal entre los mismos, es programable. Otra cuestión importante es que el tratamiento de la señal en cada bloque se realiza tomando una muestra por muestra. Si fuera necesario un bucle de realimentación, MatLab decidirá que secuencia trata en cada bloque. El sistema WaveProc, permite a cada bloque ejecutar una vez por muestra de entrada, P veces por muestra de entrada o una vez cada muestra de entrada de Q.

Funcionamiento

El funcionamiento de un DSP sobre una plataforma PC depende de muchos factores, no sólo la frecuencia de reloj principal. En muchos casos se produce un embotellamiento en el acceso a memoria, en particular cuando el algoritmo requiere ejecutar grandes bloques en como por ejemplo filtros FIR o FFT. En la aplicación WaveProc el componente básico es un filtro IIR, que tiene la siguiente función de transferencia:



Los datos manejados por el filtro son de coma flotante de 64 bits. Sobre un PC estándar de oficina (1.8 GHz el Pentium) una cascada de 500 biquads que controlan una tasa de muestreo de 48 KHz en solo canal, consume el 65 % del uso de CPU. Sobre DSP dedicado, 24 bit Motorola de coma fija, un biquad puede ser ejecutado en más o menor 7 ciclos.

Ejemplo: Si la tasa de muestreo es 48.000 Hz y la frecuencia de reloj del DSP es 150 MHz, sólo (150M/48K) / 7 = 446 biquads pueden ser ejecutados por muestra.

El código de control empleado en MatLab es:



La función WaveProc permite poner en práctica su propio tratamiento de señal (muestra por muestra) y utiliza la flexibilidad y la facilidad de MatLab como un regulador. La principal desventaja del sistema es la latencia de la entrada digital a la salida digital, que hace el sistema inaplicable si por ejemplo en el empleo de bucles de realimentación. Esta latencia es debido a los buffers de entrada/salida, los cuales aíslan el tratamiento de señal del sistema operativo. Es posible reducir la latencia mediante buffers de protección, y es recomendable el uso de sistemas operativos como Linux.

Artículo original: TC electronic MATLAB libraries.

miércoles, 11 de febrero de 2009

Sega Saturn: Procesador Mototola 68EC000.


FIGURA 1

FIGURA 2
ESPECIFICACIONES:
- 22.6MHz Yamaha FH1 24-bit procesador de señal digital.
- 11.3MHz Motorola 68EC000 procesador de sonido.
- 32 canales PCM.
- 8 FM canales.
- 44.1KHz sampling rate.

El DSP Motorola 68EC000, es la versión de bajo coste del Motorola 68000 diseñado para aplicaciones específicas. En el caso que nos ocupa: audio digital. Es programable.

Tener presente que la mayoría de procesadores, se suelen separar los operadores aritméticos en 2 conjuntos según se opere con datos en coma fija o en coma flotante. Básicamente, el DSP Motorola 68EC000 está compuesto de los siguientes registros dedicados para enteros:
• 16 registros de 32 bits para propósito general (D7 – D0, A7 – A0).
• 32 bits destinados a contador de programa (PC)
• 8 bits para registros de condiciones de código (CCR).

NOTA “Contador de programa”: Dependiendo de la arquitectura y del fabricante del procesador, podemos encontrarnos con diferentes organizaciones de registros. El control de programa es una forma de organizar los registros que contienen la dirección de la siguiente instrucción a ejecutar. Existen otros tipos como: registro de instrucción, registro de dirección a memoria o registro intermedio de memoria (más usual en microprocesadores para PC). Para hacernos una idea, el PC se encuentra forma parte de la ALU.

VER FIGURA 1


1. Registros para datos: Son registros para operaciones bit a bit. También se pueden utilizar como registros indexados.

2. Registros de direcciones: Estos registros pueden ser usados como indicadores de pilas para software, registros de índice, o registros de dirección base. Los registros de dirección base pueden emplearse para operaciones de palabras largas (32 bits) y palabras (16 bits). El registro A7 se utiliza como un indicador de pilas de hardware, por ejemplo para el uso de llamadas de subrutina.

3. Registro de condiciones de código (CCR): Muchas operaciones con enteros, afectan al CCR. Está formado por 5 bits. El bit menos significativo se denomina “registro de esta” (SR) y ofrece un operando para cálculos de precisión. Los otros 4 bits restantes nos permiten elegir ciertas opciones sobre las operaciones que va a llevar a cabo el procesador. Para el caso concreto del procesador Motorola en estudio:

VER FIGURA 2

· X – Extend: Contendrá el valor del bit C de las operaciones aritméticas.
· N - Negative: Tomará valores 0 o 1 en función del signo del resultado de la operación.
· Z – Zero: Se pone a 1 si el resultado es 0.
· V – Overflow: Tomará el valor 1 si se produce un desbordamiento.
· C – Carry: Tendrá el valor 1 si se produce un acarreo durante una operación.

Para más información acerca del modelo programable de coma flotante ver bibliografía.

Bibliografía: Traducido de Programmer’s reference manual. Motorola (ISBN 013-723289-6)

Modulación ADPCM (empleada en la consola Super Nintendo)

La modulación DPCM es una modulación diferencial PCM, que se utiliza principalmente cuando la señal varía relativamente poco en el tiempo donde resulta muy eficiente. Se basa en codificar el valor de la diferencia entre muestras consecutivas con un solo bit. Surge el problema de que no sea posible seguir una variación rápida de la señal de entrada (sobrecarga de pendiente). Para aliviar este problema, se utiliza la modulación ADPCM (delta adaptativa) que consiste en variar el valor del salto (quantum) de forma dinámica.

Modulación PCM (empleada en la consola PS3)

¿Qué es? Es la técnica más sencilla para y extendida para transmitir de forma digital señales de naturaleza analógia.
¿En qué consiste? Consiste en muestrear la señal analógica, cuantificar las muestras y convertir las muestras cuantificadas en palabras de código de b bits, donde cada palabra código representa el valor de la amplitud cuantificado.
¿Dónde se suele utilizar? Se suele emplear en el formateo de señales de audio. Por ejemplo, para audio habitual (calidad CD) se utiliza:
- W = 20 – 20.000 Hz
- fnyquist = 40 KHz
- fs = 44’1 KHz
- b = 16 bits
- Vt = 705’6 Kbps

También se emplea en DSP.

Bibliografía: Apuntes de Sistemas Lineales UA.