decodificador de audio mpeg-3 en tiempo real y control atapi

Anuncio
DECODIFICADOR DE AUDIO MPEG-3
EN TIEMPO REAL Y CONTROL ATAPI
Autores : Luis A. Muñoz
Dany Valdez
Asesor : José Oliden
[email protected]
[email protected]
[email protected]
Universidad Peruana de Ciencias Aplicadas UPC
Dirección: Av. Prolongación Primavera 2390
Monterrico, Surco, Lima 33
RESUMEN
Han pasado más de 10 años desde que el algoritmo
de compresión MPEG I Capa 3 fue estandarizado.
Desde ese momento, una explosión de aplicaciones
de software vieron la luz y una miríada de archivos
*.mp3 empezaron a inundar la Internet. Sin embargo, las aplicaciones basadas en hardware no han
visto la luz hasta hace apenas unos años atrás, en
gran parte por la complejidad del algoritmo en sí y
por el elevado costo de los DSPs capaces de realizar semejante tarea.
Actualmente la oferta y disponibilidad de estos ICs
han permitido a grupos de aficionados e ingenieros
electrónicos el poder acceder a estudiar e investigar
el uso de estos decodificadores y el diseño de soluciones en hardware de intercambio de archivos
mp3 eficientes y de bajo costo. Este avance ha ido
acompañado de la disponibilidad de nuevos y poderosos microcontroladores que hacen posible la
construcción de complejos algoritmos de control
para acceder a medio de almacenamiento masivos
como los CD-ROMs, que operan bajo un protocolo
conocido como ATAPI que establece las operaciones que pueden realizarse sobre una lectora de CDROM de PC.
Este documento introduce la tecnología que esta
detrás de los decodificadores mp3, para luego exponer los diferentes codificadores que permiten
desarrollar una reproductor. Así también, expone el
protocolo de control ATAPI y la posibilidad de
construir una controladora ATAPI en un microcontrolador para extraer la información digital.
OBJETIVO
El objetivo final de este proyecto es la construcción
de un decodificador de audio MP3 totalmente independiente de la PC, de tal forma que tenga una
interfaz IDE para acceder a los archivos de audio
mp3 disponibles en un CD-ROM. Como función
adicional, es posible que el decodificador pueda
leer los datos digitales contenidos en un CD de
audio comercial, de forma tal el decodificador
pueda extraer música tanto en formato digital, así
como comprimida de acuerdo con el algoritmo
MPEG 1/2 Capa 2/3.
INTRODUCCION
La construcción de un decodificador de música
digital MP3 está en función de la disponibilidad
de los métodos para decodificar y descomprimir
un archivo MP3 en tiempo real, lo que permite
un flujo continuo de información a la salida. Este
proceso es de capital importancia por obvias
razones, por lo que es necesario disponer de un
hardware lo suficientemente potente como para
poder procesar el algoritmo MPEG Capa 3, así
como una gran cantidad de memoria para almacenar las tablas y datos requeridos para el tratamiento de la señal comprimida original.
A mediados de la década de los 90’s los primeros
chips decodificadores de tramas MPEG estuvieron disponibles en los laboratorios. Estos DSPs
de propósito específico lograban alcanzar las
velocidades requeridas gracias a la arquitectura
RISC y un diseño elegante como para poder
decodificar una trama MPEG en tiempo real sin
pérdida apreciable de calidad. Pronto, estos circuitos empezaron a proliferar en el mercado y
aunque aún son pocos los fabricantes que ofrecen
soluciones de esta naturaleza, poco a poco están
invadiendo el mercado con piezas cada vez más
pequeñas, integradas y robustas.
Un decodificador de música MP3 stand-alone
completo se puede esquematizar como se muestra en el Figura 1. Stand-alone hace referencia a
que no se utiliza la potencia de procesamiento de
una PC (como en el caso de aplicaciones como
WinAmp) aunque puede ser una fuente de información. Se puede observar que el sistema es
relativamente simple y que su construcción no
sólo es posible sino que interesante pues integra
la electrónica del mundo digital y analógico con
resultados que pueden ser medidos directamente
por el placer de la música.
psicoacústico (el estudio de la manera como el
cerebro procesa la información oída) llamado
“enmascaramiento de audio”. En la figura 2 se
observa un gráfico en frecuencia de la ocurrencia
de un tono de gran amplitud rodeado por una
señal de audio de menor intensidad. Por compartir la misma vecindad en frecuencia, el cerebro
“enmascara” los componentes en frecuencia de
menor intensidad y sólo registra el tono.
Figura 1 – Diagrama de bloques de un reproductor
“stand-alone”
El Procesador Principal controla que el flujo de los
datos mp3 lleguen al decodificador con el formato
adecuado y con la velocidad suficiente como para
permitir una decodificación en tiempo real. Así
también, permite controlar los periféricos externos
necesarios para interactuar con el sistema (un teclado y una pantalla LCD).
El Decodificador mp3 recibe la trama (en forma
paralela o serial) y la descomprime, con lo que se
obtiene una trama PCM que ingresa al Conversor
Análogo/Digital (DAC) que regenera la señal y la
retorna al mundo analógico. Los resultados se pueden escuchar ya sea por unos audífonos o por una
salida del tipo Line-Out para ser amplificada por un
equipo externo.
Los Controles Misceláneos que se muestran en la
figura 1 afectan el resultado audible del proceso, de
forma que tal que se puede variar el volumen, el
nivel de agudos o bajos, así como el balance de los
canales de salida (en un sistema estéreo). Este tipo
de controles también puede ser efectuado en el
bloque Decodificador mp3 pues la trama PCM
puede ser afectada por medio del proceso digital de
señales, añadiendo efectos en la señal antes de que
retorne a su contraparte analógica. Actualmente la
mayor parte de los sistemas implementados hacen
uso de este tipo de soluciones
El algoritmo de compresión MPEG es un algoritmo
“con perdidas” por lo que el resultado final es una
muestra de audio que al retornar a su forma original, no es la misma (a diferencia de los algoritmos
de compresión de datos como el Lempel-Ziff utilizado en el WinZip). Sin embargo, es un algoritmo
“si perdidas perceptuales”, por lo que el resultado
auditivo de la muestra original y la resultante no
pueden distinguirse. Para lograr esto se burla el
sentido del la audición en función de un principio
Figura 2 – Enmascaramiento de audio
Por lo tanto, el algoritmo de compresión MPEG I
Capa 3 utiliza un modelo psicoacústico que, una
vez llevada la señal de audio del dominio del
tiempo a la frecuencia y disgregada en múltiples
bandas estrechas, reconoce las zonas que serán
enmascaradas en cada una de estas y asigna de
manera dinámica bits en función de el resultado
de esta operación (a mayor enmascaramiento en
la banda, menos bits serán asignados para la
codificación de la banda). La muestra de audio
resultante será de 6 a 10 veces más pequeña, sin
perder su calidad de audio aparente.
El algoritmo de compresión MPEG actualmente
es un estándar normado por la ISO (ISO/IEC
11172-3) que establece el proceso de empaquetamiento de datos a una tasa de 1.5Mbps. Aunque no especifica un método de compresión,
sugiere un proceso que se observa en la figura 3.
Se puede observar que el decodificador es bastante simple. La trama MPEG es disgregada para
ser posteriormente reconstruida en frecuencia
gracias al encabezado que llega con los datos
comprimidos. Una vez reestablecidas las muestras en frecuencia, el siguiente bloque transforma
las muestras del dominio de la frecuencia al
dominio del tiempo, donde se obtendrá una trama PCM de la misma naturaleza que la trama
PCM del audio digital original.
Figura 3 – Compresión / descompresión
Por lo tanto, la disponibilidad de DSPs que permita
la descompresión de audio MPEG estará en función
de la capacidad de ejecutar las operaciones de traslado al dominio del tiempo (un proceso matemático
conocido como Transformada Coseno Discreta
Modificada Inversa o MDCT Inversa por sus siglas
en inglés). Actualmente existen muchos ICs que
pueden realizar este tipo de procesamiento. Son
DSPs de propósito específico y han sido concebidos para la descompresión de tramas MPEG.
Para realizar un reproductor en si es necesario que
el procesador central pueda entregar una trama
MPEG continua y al mismo tiempo controlar los
periféricos. Es de especial cuidado la fuente de
datos, que puede ser una PC (como se observa en la
figura 1) o un medio de almacenamiento masivo
independiente, como un Disco Duro o un CDROM. Este último presenta características ideales
para un reproductor de esta naturaleza, por su gran
capacidad de almacenamiento y su fácil uso. Para
evitar el uso de un controlador del servomecanismo
de la lectora y la decodificación de los bits recuperados por el pick-up láser, se puede utilizar una
lectora ATAPI (como las encontradas en casi todas
las PCs comerciales). El protocolo ATAPI (conocido erróneamente como IDE) se encuentra también
normado por el Comité Técnico T3 y el sistema de
archivos de un CD-ROM también se encuentra
especificado por la ISO (ISO9660), aunque también existen formatos propietarios utilizados por los
diferentes sistemas operativos).
El protocolo ATAPI permite dejar de lado el control mecánico de la lectora y dedicarse al manejo de
la lectura de datos contenidos en el CD-ROM (tanto de audio normal como de datos) . Para un microcontrolador, un dispositivo ATAPI se puede concebir como un conjunto de registros que deben de ser
accedidos para leer o escribir. En la figura 4 se
observa un dispositivo ATAPI desde el punto de
vista del procesador central.
Así, si se quiere acceder a los datos contenidos
en el sector 128 se escribe el comando de lectura
(READ10) especificando en el registro ATA
Command, junto con los argumentos (el sector y
la cantidad de bytes que se requieren en el Buffer
de Datos) de tal manera que se escriben 12 bytes
de manera consecutiva en el registro ATA
Command. Una vez realizado este proceso, el
Buffer se llenará con los datos esperados, los que
serán leídos por medio del registro Data (el único
de 16 bits de ancho) utilizando un mecanismo
automático FIFO (First In-Fist Out). Así, el procesador central no tiene que preocuparse por los
detalles de control de lectura; solamente es necesaria la implementación del protocolo ATAPI
Para el manejo de comandos de lectura y escritura, así como de control de dispositivo en si (como abrir la puerta de la lectora).
Figura 4 – Dispositivo ATAPI
Estos dos elementos (junto con un conversor
digital/analógico para tornar la salida PCM del
decodificador mp3 en audio) son necesarios para
la implementación de un reproductor mp3, por lo
que es necesario escoger los elementos que pueden cumplir con los requisitos del diseño.
DESCRIPCIÓN DEL PROYECTO
El proyecto se ha dividido en dos partes: el módulo de decodificación mp3 y el módulo de control ATAPI. De esta manera es posible integrar
posteriormente ambos módulos en un solo sistema de decodificación.
Para la construcción del primer módulo, es necesario utilizar una combinación de DSP y DAC
que cumpla con los requisitos ya citados, además
de ser de fácil disponibilidad. De todos los ICs
disponibles en el mercado (MAS3507 y STA013
cuando inicio el proyecto) y los DAC para este
tipo de aplicaciones (DAC3550 y DAC4334) se
escogió la combinación STA013 y DAC4334 por
su fácil disponibilidad y amplio soporte, así como
su facilidad de manejo físico pues, aunque como
los demás ICs, su empaque SOIC (de montaje superficial) tiene dimensiones ligeramente más grandes a nivel de pines por lo que es posible manipularlo manualmente.
Para probar el módulo se confeccionó un programa
en Lenguaje C para “imprimir” el contenido de un
archivo MPEG por el puerto paralelo en el formato
del STA013 (I2S) como se observa en la figura 5.
El modulo necesita ser inicializado y controlado
por medios de comandos sobre un bus I2C (para el
control de volumen, por ejemplo). El microcontrolador escogido fue el PIC16F877 por tener experiencia en el desarrollo de aplicaciones y las herramientas necesarias para su implementación.
control de la lectora y se obtuvieron, luego de
pruebas de ensayo/error (pues la documentación
del protocolo ATAPI es bastante engorrosa y
confusa, además de encontrarse en constante
actualización), resultados positivos. Es posible
controlar la lectora, leer y ejecutar funciones de
reproducción de audio de un CD-DA (CD de
Audio comerciales) y extracción de datos de un
CD-ROM.
Una vez los dos módulos listos, el siguiente paso
es integrar los módulos para lograr un producto
final. La figura 6 muestra el especto del resultado
final. La implementación de esta fase, sin embargo, involucra un desarrollo totalmente nuevo
pues es necesario contemplar los tiempos que el
algoritmo debe de tomar para mantener el flujo
de información al decodificador sin saltos, además de manejas el control de los dispositivos de
manera eficiente. Además, es necesario mezclar
las salidas de audio (dependiendo de si el CD
introducido en la lectora ha sido reconocido
como CD-DA o CD-ROM).
Figura 5 – Pruebas del módulo de decodificación
El módulo de decodificación respondió satisfactoriamente y se hicieron medidas del tiempo de transferencia de información para ver la viabilidad del
PIC16F877. El STA013 posee un buffer interno
que debe de estar siempre con datos por encima de
un umbral. Cuando el buffer se encuentra con pocos datos, coloca a “1” una línea (DEMAND) que
instruye al algoritmo para que envíe datos lo más
rápido posible hasta que la línea vuelva a “0”. Se
observó que el tiempo que transcurre entre dos
peticiones de datos (con una tasa de transmisión de
aproximadamente 20Kbps) puede alcanzar hasta
2mseg. El PIC16F877 operando a 20Mhz puede
realizar 10.000 instrucciones en ese tiempo, por lo
que es posible que pueda manejar la transferencia
de ráfagas de datos MPEG de 128kbps a 44.1Khz
sin que el buffer del STA013 se encuentre vacío.
El segundo módulo se encarga del control de la
lectora e CD-ROM (Control ATAPI). Este módulo
está confirmado por una circuitería compleja que
involucra el microcontrolador, 32Kb de RAM, un
decoder 74138 para el control de los periféricos,
teclado, LCD y el puerto ATAPI. Se implementó
en assembler los comandos y reglas ATAPI para el
Figura 6 – Esquema de interconexión de
módulos
Por eso el producto final debe de estar contenido
un una sola tarjeta que controle todos los
elementos de la figura 1. Los resultados
obtenidos hasta la fecha son bastante alentadores
y auguran que este proyecto estará listo en muy
corto plazo.
REFERENCIAS BIBLIOGRAFICAS
[1] K. Brandenburg, H. Popp – An Introduction
to MPEG Layer 3 – EBU Technical Review
– Junio 2000.
[2] José Ma. Angulo, Susana Romero, Ignacio
Angulo – Microcontroladores PIC, diseño
práctico de aplicaciones, segunda parte
(PIC16F87x). MacGrawHill – Primera Edición - 2000
[3] STA013 – MPEG 2.5 LAYER III Audio
Decoder – Technical Data – Noviembre
1999
[4] CS4334 – Preliminary Product Information –
Agosto 1998
[5] ATA Packet Interface for CD-ROMs (SSF8020i) Revisión 2.6 Proposed - Enero 22,
1996
[6] AT Attachment with Packet Interface Extension
(ATA/ATAPI-4) - Agosto 20, 1998
Referencias Internet:
[7] http://www.pjrc.com/tech/mp3/sta013.html
MP3 Player, Using The STA013 Chip.
[8] http://www.mp3projects.com
MP3Projects.
Descargar