ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
AMPLIFICADOR DE AURICULARES CON INTERFAZ USB Y "CROSSFEED" DIGITAL
Autor: Fernando de Miguel de Couto Director: José Daniel Muñoz Frías
Madrid Mayo de 2013
1
AUTORIZACIÓN PARA LA DIGITALIZACIÓN, DEPÓSITO Y DIVULGACIÓN EN ACCESO
ABIERTO (RESTRINGIDO) DE DOCUMENTACIÓN
1º. Declaración de la autoría y acreditación de la misma.
El autor D. Fernando de Miguel de Couto, como estudiante de la UNIVERSIDAD PONTIFICIA
COMILLAS (COMILLAS), DECLARA
que es el titular de los derechos de propiedad intelectual, objeto de la presente cesión, en
relación con la obra del proyecto fin de carrera: “Amplificador de auriculares con interfaz USB
y ‘crossfeed’ digital” 1, que ésta es una obra original, y que ostenta la condición de autor en el
sentido que otorga la Ley de Propiedad Intelectual como titular único o cotitular de la obra.
En caso de ser cotitular, el autor (firmante) declara asimismo que cuenta con el
consentimiento de los restantes titulares para hacer la presente cesión. En caso de previa
cesión a terceros de derechos de explotación de la obra, el autor declara que tiene la oportuna
autorización de dichos titulares de derechos a los fines de esta cesión o bien que retiene la
facultad de ceder estos derechos en la forma prevista en la presente cesión y así lo acredita.
2º. Objeto y fines de la cesión.
Con el fin de dar la máxima difusión a la obra citada a través del Repositorio institucional de la
Universidad y hacer posible su utilización de forma libre y gratuita ( con las limitaciones que
más adelante se detallan) por todos los usuarios del repositorio y del portal e-ciencia, el autor
CEDE a la Universidad Pontificia Comillas de forma gratuita y no exclusiva, por el máximo plazo
legal y con ámbito universal, los derechos de digitalización, de archivo, de reproducción, de
distribución, de comunicación pública, incluido el derecho de puesta a disposición electrónica,
tal y como se describen en la Ley de Propiedad Intelectual. El derecho de transformación se
cede a los únicos efectos de lo dispuesto en la letra (a) del apartado siguiente.
3º. Condiciones de la cesión.
Sin perjuicio de la titularidad de la obra, que sigue correspondiendo a su autor, la cesión de
derechos contemplada en esta licencia, el repositorio institucional podrá:
(a) Transformarla para adaptarla a cualquier tecnología susceptible de incorporarla a internet;
realizar adaptaciones para hacer posible la utilización de la obra en formatos electrónicos, así
1 Especificar si es una tesis doctoral, proyecto fin de carrera, proyecto fin de Máster o cualquier otro
trabajo que deba ser objeto de evaluación académica
2
como incorporar metadatos para realizar el registro de la obra e incorporar “marcas de agua”
o cualquier otro sistema de seguridad o de protección.
(b) Reproducirla en un soporte digital para su incorporación a una base de datos electrónica,
incluyendo el derecho de reproducir y almacenar la obra en servidores, a los efectos de
garantizar su seguridad, conservación y preservar el formato. .
(c) Comunicarla y ponerla a disposición del público a través de un archivo abierto institucional,
accesible de modo libre y gratuito a través de internet.2
(d) Distribuir copias electrónicas de la obra a los usuarios en un soporte digital. 3
4º. Derechos del autor.
El autor, en tanto que titular de una obra que cede con carácter no exclusivo a la Universidad
por medio de su registro en el Repositorio Institucional tiene derecho a:
a) A que la Universidad identifique claramente su nombre como el autor o propietario de los
derechos del documento.
b) Comunicar y dar publicidad a la obra en la versión que ceda y en otras posteriores a través
de cualquier medio.
c) Solicitar la retirada de la obra del repositorio por causa justificada. A tal fin deberá ponerse
en contacto con el vicerrector/a de investigación ([email protected]).
d) Autorizar expresamente a COMILLAS para, en su caso, realizar los trámites necesarios para
la obtención del ISBN.
d) Recibir notificación fehaciente de cualquier reclamación que puedan formular terceras
personas en relación con la obra y, en particular, de reclamaciones relativas a los derechos de
propiedad intelectual sobre ella.
2 En el supuesto de que el autor opte por el acceso restringido, este apartado quedaría redactado en los
siguientes términos:
(c) Comunicarla y ponerla a disposición del público a través de un archivo institucional, accesible de
modo restringido, en los términos previstos en el Reglamento del Repositorio Institucional
3 En el supuesto de que el autor opte por el acceso restringido, este apartado quedaría eliminado.
3
5º. Deberes del autor.
El autor se compromete a:
a) Garantizar que el compromiso que adquiere mediante el presente escrito no infringe ningún
derecho de terceros, ya sean de propiedad industrial, intelectual o cualquier otro.
b) Garantizar que el contenido de las obras no atenta contra los derechos al honor, a la
intimidad y a la imagen de terceros.
c) Asumir toda reclamación o responsabilidad, incluyendo las indemnizaciones por daños, que
pudieran ejercitarse contra la Universidad por terceros que vieran infringidos sus derechos e
intereses a causa de la cesión.
d) Asumir la responsabilidad en el caso de que las instituciones fueran condenadas por
infracción de derechos derivada de las obras objeto de la cesión.
6º. Fines y funcionamiento del Repositorio Institucional.
La obra se pondrá a disposición de los usuarios para que hagan de ella un uso justo y
respetuoso con los derechos del autor, según lo permitido por la legislación aplicable, y con
fines de estudio, investigación, o cualquier otro fin lícito. Con dicha finalidad, la Universidad
asume los siguientes deberes y se reserva las siguientes facultades:
a) Deberes del repositorio Institucional:
- La Universidad informará a los usuarios del archivo sobre los usos permitidos, y no garantiza
ni asume responsabilidad alguna por otras formas en que los usuarios hagan un uso posterior
de las obras no conforme con la legislación vigente. El uso posterior, más allá de la copia
privada, requerirá que se cite la fuente y se reconozca la autoría, que no se obtenga beneficio
comercial, y que no se realicen obras derivadas.
- La Universidad no revisará el contenido de las obras, que en todo caso permanecerá bajo la
responsabilidad exclusiva del autor y no estará obligada a ejercitar acciones legales en nombre
del autor en el supuesto de infracciones a derechos de propiedad intelectual derivados del
depósito y archivo de las obras. El autor renuncia a cualquier reclamación frente a la
Universidad por las formas no ajustadas a la legislación vigente en que los usuarios hagan uso
de las obras.
- La Universidad adoptará las medidas necesarias para la preservación de la obra en un
futuro.
b) Derechos que se reserva el Repositorio institucional respecto de las obras en él registradas:
4
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
AMPLIFICADOR DE AURICULARES CON INTERFAZ USB Y "CROSSFEED" DIGITAL
Autor: Fernando de Miguel de Couto Director: José Daniel Muñoz Frías
Madrid Mayo de 2013
Agradecimientos
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Agradecimientos
En primer lugar, me gustaría nombrar a mi familia, agradecerles todos los
consejos y ánimos que he recibido de su parte, este y durante todos los años de la
carrera. Y, en especial, me gustaría agradecer a mis padres, Fernando y Aurora,
todas las oportunidades que me han dado a lo largo de mi vida, ya que siempre me
han apoyado, y animado a que sea yo mismo. Y a mi hermana Aurora, por toda su
ayuda durante toda la carrera.
Un agradecimiento especial a Rocio, Nehuen y Sara, amigos de mi ciudad y
una amiga del Erasmus. Gracias a ellos he podido continuar adelante este año.
Con sus risas, consejos y ánimos han conseguido que pueda llegar a escribir estos
agradecimientos.
Por otro lado, agradecer a toda la gente que durante este año se ha preocupado
por mi proyecto, y se interesaban como progresaba. Agradecimientos también a
Diego, por hacer el logotipo del proyecto, localizado en la esquina superior
izquierda en la redacción del mismo.
Por último, pero no menos importante, le doy las gracias a mi director de
proyecto, José Daniel, que siempre estuvo para ayudarme y aconsejarme con una
sonrisa en la cara.
Resumen del proyecto
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Amplificador de auriculares con interfaz USB y
“crossfeed” digital
Autor: Fernando de Miguel de Couto
Director: José Daniel Muños Frías
Resumen del proyecto.
El problema que intenta resolver el filtro ‘crossfeed’ es recuperar la sensación
estéreo que se pierde cuando se reproduce música con los auriculares, ya que estos
fuerzan cada canal directamente a cada oído, y de esta forma se pierde la
sensación de espacio que se conseguiría con unos altavoces.
Por lo tanto, un filtro 'crossfeed' consiste en la naturalización de la música
estéreo a través de auriculares. Este tipo de filtro consigue que al escuchar música
estéreo en los auriculares, ésta sea lo más envolvente posible. Es decir, que con la
información básica que disponen los reproductores de música, obtenida de los dos
canales, el izquierdo y el derecho, el oyente pueda apreciar un sonido envolvente
de lo que se está escuchado. Por lo tanto el filtro hace posible que se pueda
identificar de donde provienen los diferentes sonidos, y la distancia a la que
estarían de su persona.
La sensación de naturalidad con la que escuchamos los sonidos se produce por
la simultaneidad de diferentes circunstancias. Para saber de dónde proceden los
sonidos, basta con controlar la atenuación y el tiempo con que llega la señal a los
oídos, de esta manera se puede determinar con bastante precisión la lejanía de la
fuente de sonido. Esta característica suele venir incluida en la información
grabada de la música estéreo, ya que las ondas de sonido se grabaron con la
Resumen del proyecto
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
atenuación y el tiempo de llegada natural que corresponde a la distancia de donde
está la fuente de sonido.
Otra causa son las reflexiones y absorciones que pueda hacer nuestra cabeza
con dichas ondas de sonido. Esto puede amplificar o atenuar la señal en diferentes
frecuencias que, añadido a las reflexiones del sonido en los medios físicos que
rodean al oyente, dan la sensación de profundidad y espacio, es decir, la
naturalidad de la audición.
El 'crossfeed' consigue reproducir esta sensación, centrándose en las causas
más importantes de percepción de la señal; ya que cuando se escucha música
estéreo en auriculares, todas estas causas de profundidad y direccionalidad de las
fuentes de sonido se pierden, y la acción del movimiento natural de la cabeza para
detectar las fuentes de sonido, también desaparecen. Lo que puede llevar a
acarrear estrés mental, sobre todo a las personas que trabajen con la música, o
estén gran parte del día escuchando música.
Cada fuente de sonido puede producir señales diferentes, ya sean sonidos
agudos (con una frecuencia elevada) o sonidos graves (con una frecuencia baja),
y, como se ve en la Figura 1, según la posición de las fuentes de sonido, la señal
que llega a nuestros oídos es diferente, a causa de la distancia que hay entre ellos,
y todas las reflexiones y absorciones nombradas con anterioridad.
Resumen del proyecto
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Figura 1: Percepción de las señales según su posición
Por esta razón, el filtro 'crossfeed' aplica un paso bajo y un paso alto a cada
canal de audio de la música estéreo. Como se puede apreciar en la Figura 2, el
filtro 'crossfeed' de este proyecto, consigue la naturalización de la señal a través
del uso de filtros digitales en los canales de audio. Para ello, se realiza una
alimentación cruzada de la señal. Se suma la señal obtenida de un filtro que
refuerza los altos de un canal (filtro que deja pasar las frecuencias bajas de dicho
canal, y robustece las frecuencias altas de dicho canal), con la señal obtenida del
paso bajo del otro canal (ya que las ondas que más se sienten en la lejanía son, y
son absorbidas por los tejidos de la piel, son los graves). Aplicando por último un
retardo a la señal que sale del paso bajo, retardo que físicamente correspondería
con el tiempo de retraso en que una señal llegue al oído izquierdo, cuando primero
ha llegado al derecho, o viceversa.
Figura 2: Diagrama de bloques del filtro crossfeed
Resumen del proyecto
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
El filtro 'crossfeed' está hecho de forma digital, ya que el mundo digital, a día de
hoy, ofrece muchas mejoras en comparación con el mundo analógico. Gracias a
realizarlo de esta forma, se consiguen valores de filtrado más perfectos, sin ruidos,
y retrasos o sumatorios de señal mucho más exactos.
El filtro se ha realizado con un microcontrolador de la marca XMOS, el XS1-
L8-64, microchip con soporte para USB 2.0 de audio, formado por un núcleo y 8
hilos en paralelo.
Abstract
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Headphone amplifier with USB interface and
“crossfeed” digital.
Author: Fernando de Miguel de Couto
Director: José Daniel Muños Frías
Abstract
The problem the 'crossfeed' filter attempts to solve is recovering the stereo
sensation that is lost when music is played using headphones. These force each
channel directly into the ears loosing the sensation of space gained when playing
the music in loudspeakers.
A 'crossfeed' filter naturalizes the stereo music being played with headphones.
This type of filter allows listening to stereo music in headphones to be as
surrounding as possible. In other words, starting from the basic information
available to the music players, got from the left and right channel, allow the
listener to appreciate the surrounding sound of what was actually recorded. This
way, he could perceive where the sounds are coming from and the distance to
them.
The natural sensation felt when earing sounds is produced by different
circumstances that happen simultaneously. For knowing where the sounds come
from its enough having control of the attenuation and the time delay it takes a
signal to reach the ears. This way, the distance to the source of the sound can be
estimated with an acceptable accuracy. This properties are often included in the
recorded stereo information since the soundwaves will be recorded with the
attenuation and the time delay natural to the distance to the music recorder.
Abstract
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Another cause are the reflections and absoritions of the soundwaves that can be
caused by our head. This can amplify or attenuate the signal in different
frequencies that, added to the reflections of the sound in different objects
surrounding the listener, will give a feeling of depth and space, namely, a natural
sensation.
The 'crossfeed' filter reproduces this sensation by focusing in the most relevant
elements for signal perception. When we listen to stereo music with headphones,
that which causes deepness and the directionality of the sound is lost along with
the natural movement of the head for detecting the sources of the sounds. This can
lead to mental stress, specially in people that works with music or spends a great
amount of time listening to music.
Each sound source can produce different signals, and they can be high-pitched
(with a high frequency value) or low-pitched (with a lower frequency value). As
shown in the Figure 1, depending on the position of the source, the signal that
arrives to our ears is different due to the distance between them and, all the
reflections and absortions mentioned before.
Figure 1: Signal perception depending on the position of the sources
Abstract
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
For this reason, the 'crossfeed' filter places a low-pass filter and a high-pass
filter to each one of the stereo channels. As shown in the FIGURE 2, this project's
'crossfeed' filter achieves the naturalization of the signal thanks to applying these
filters to the audio channels. For that, the signals between the channels are
crossfeeded. We add the resulting signal of a filter that intensifies the high
frequencies of one channel (a filter that allow the low frequencies to pass and
intensifies high frequencies) to the signal resulting of a low-pass filter on the other
channel (since the soundwaves felt more distant and absorbed by the skin are the
low-pitched ones). Finally applying a delay to the signal resulting from the low-
pass filter, a delay that physically corresponds with the one it takes a soundwave
to get to one ear after having arrived to the other, or viceversa.
Figure 2: ‘Crossfeed’ filter’s blocks diagram
Abstract
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
The 'crossfeed' filter has been made using digital technologies instead of
analog ones due to the many adventages the first offers when comparing them.
Thanks to this, the resulting signal is much cleaner, with no noise or delay, and it
returns more exact values.
The filtering processes has been made using a XMOS microcontroller, the
XS1-L8-64, a microchip with USB 2.0 support for audio and a single core with 8
parallel threads.
Índice de documentos
Documento I. Memoria
Parte I. Memoria pág 3 a 86 84 páginas
Parte II. Estudio económico pág 87 a 90 4 páginas
Parte III. Manual de usuario pág 91 a 94 4 páginas
Parte IV. Código fuente pág 95 a 104 10 páginas
Parte V. Anexo pág 105 a 107+ 21 páginas
Documento II. Presupuesto
Capítulo 1. Mediciones pág 2 a 3 2 páginas
Capítulo 2. Precios unitarios pág 4 a 5 2 páginas
Capítulo 3. Sumas parciales pág 6 a 8 3 páginas
Capítulo 4. Presupuesto general pág 9 1 páginas
Documento I.
Memoria
ÍNDICE DE LA MEMORIA
I
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Índice de la memoria
Parte I Memoria .......................................................................................... 3
Capítulo 1 Introducción ................................................................................... 5
1.1 Conceptos previos ............................................................................................ 5
1.2 Introducción ..................................................................................................... 6
1.3 Crossfeed .......................................................................................................... 8
1.4 Contexto Histórico ......................................................................................... 14
1.5 Motivación ...................................................................................................... 16
1.6 Objetivos......................................................................................................... 17
1.7 Recursos / herramientas empleadas ............................................................. 18
Capítulo 2 Estudios Previos ............................................................................ 19
2.1 Benjamin Ben Bauer ..................................................................................... 19
2.2 Siegfried Linkwitz ......................................................................................... 20
2.3 Jan Meier........................................................................................................ 21
2.4 Chu Moy ......................................................................................................... 23
2.5 Boris Mikhaylov ............................................................................................ 25
2.6 Conclusiones................................................................................................... 26
Capítulo 3 Desarrollo de los filtros crossfeed ................................................ 29
3.1 Sistema LTI .................................................................................................... 30
3.2 Filtros IIR ....................................................................................................... 31
3.3 Filtros FIR ...................................................................................................... 33
ÍNDICE DE LA MEMORIA
II
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
3.4 Implantación de los filtros crossfeed ............................................................ 35
3.5 Resultados ...................................................................................................... 41
Capítulo 4 Información del microcontrolador utilizado ............................... 45
4.1 Microprocesadores con núcleo Xcore .......................................................... 45
4.2 Software del audio ......................................................................................... 52
4.3 USB Audio 2.0 Reference Design (XS1-L1)................................................. 56
4.4 Conocimientos importantes para la implantación de código ..................... 61
Capítulo 5 Implantación del código en el microcontrolador ........................ 69
5.1 Problemas con los números decimales ......................................................... 69
5.2 Problemas con limitaciones por la cantidad de operaciones ..................... 75
Capítulo 6 Conclusiones ................................................................................. 79
Capítulo 7 Futuros desarrollos ...................................................................... 81
7.1 Crossfeed en ordenadores ............................................................................. 81
7.2 Crossfeed en móviles ..................................................................................... 81
7.3 Crossfeed en los auriculares ......................................................................... 82
7.4 Mejoras ........................................................................................................... 83
Bibliografía 85
Parte II Estudio económico ........................................................................ 87
Capítulo 1 Estudio económico ........................................................................ 89
Parte III Manual de usuario ....................................................................... 91
Capítulo 1 Manual de usuario 1 .................................................................... 93
Parte IV Código fuente ................................................................................ 95
Capítulo 1 Código fuente ................................................................................ 97
1.1 Main ................................................................................................................ 97
1.2 Void dsp ( ) ................................................................................................... 100
ÍNDICE DE LA MEMORIA
III
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
1.3 Int fir ( ) ........................................................................................................ 103
1.4 Coeffs.xc ....................................................................................................... 104
Parte V Anexo .......................................................................................... 105
Capítulo 1 Anexo .......................................................................................... 107
ÍNDICE DE FIGURAS
IV
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
ÍNDICE DE FIGURAS
V
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Índice de figuras
Figura 1: Diferencia de percepción del sonido con cascos y de forma natural ....... 9
Figura 2: Grabadores de sonido binaural .............................................................. 10
Figura 3: Respuestas a un impulso, registradas con una cabeza artificial, para pata
θ=30° y φ=0° ......................................................................................................... 11
Figura 4: Esquema de la percepción de las señales a través de los oídos ............. 12
Figura 5: Esquema general analógico para conseguir una señal crossfeed ........... 12
Figura 6: Esquema de la modificación de una señal por el crossfeed ................... 13
Figura 7: Esquema digital crossfeed ..................................................................... 14
Figura 8: Gráfica de la respuesta en frecuencia de la amplitud del filtro de
Linkwitz ................................................................................................................. 20
Figura 9: Gráfica de la respuesta en frecuencia de la amplitud del filtro de Meier
............................................................................................................................... 22
Figura 10: Gráfica de la respuesta en frecuencia del retardo de las señales en el
filtro de Meier ........................................................................................................ 23
Figura 11: Respuesta en frecuencia del filtro de Chu Moy ................................... 24
Figura 12: Comparación de la respuesta en frecuencia entre el filtro de Jan Meier
y Chu Moy ............................................................................................................. 24
Figura 13: Tiempo de retardo de las señales en el filtro de Chu Moy .................. 25
Figura 14: Comparación en frecuencia de la magnitud de los filtros diseñados por
Jan Meier, Chu Moy y Boris Mikhaylov ............................................................... 27
Figura 15: Comparación de los tiempos de retardo en los filtros diseñados por Jan
Meier, Chu Moy y Boris Mikhaylov ..................................................................... 28
ÍNDICE DE FIGURAS
VI
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Figura 16: Diagrama de bloques del crossfeed, usado para la programación en
Matlab .................................................................................................................... 29
Figura 17: Diagrama de Bode de un filtro IIR ...................................................... 32
Figura 18: Diagrama de Bode de un filtro FIR ..................................................... 34
Figura 19: Señal generada a 50 y 120 Hz con ruido ............................................. 35
Figura 20: Filtro FIR de prueba, aplicado a 100Hz ............................................... 36
Figura 21: Filtro FIR de prueba, aplicado a 100Hz ............................................... 37
Figura 22: Señal de audio Lr ................................................................................. 39
Figura 23: Señal de audio Rr ................................................................................. 39
Figura 24: Filtro paso bajo a 700Hz de la señal de audio ..................................... 40
Figura 25: Filtro paso alto a 700Hz de la señal de audio ...................................... 40
Figura 26: Comparación de los diferentes filtros crossfeed en un escenario ........ 42
Figura 27: Una familia Xcore™ formada por 8 hilos Xcore ................................. 46
Figura 28: Dos núcleos Xcore™ conectados a un núcleo Xcore USB ................. 49
Figura 29: Tiempo de respuesta de un hilo Xcore ................................................. 50
Figura 30: Microcontrolador con un núcleo Xcore™ y 8 hilos Xcore................. 51
Figura 31: Estructura de bloques del software del audio ...................................... 52
Figura 32: Software dispositivo XS1-L1............................................................... 56
Figura 33: Software XS1-L1 con DSP .................................................................. 59
Figura 34: Salida del puerto XS1_PORT_1A ....................................................... 62
Figura 35: Ejemplo de salida del XS1_PORT_4A ................................................ 63
Figura 36: Diagrama de bloques del crossfeed ..................................................... 76
Memoria
- 1 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Índice de tablas
Tabla 1: Ejemplo de la estructura de la coma flotante .......................................... 70
Tabla 2: Coeficientes para k=51 ............................................................................ 74
Tabla 3: Coeficientes para k=13 ............................................................................ 74
Memoria
- 2 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Introducción
- 3 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Parte I MEMORIA
Introducción
- 4 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Introducción
- 5 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Capítulo 1 INTRODUCCIÓN
1.1 CONCEPTOS PREVIOS
Antes de comenzar, se realizarán dos definiciones básicas, pero necesarias,
usadas para la comprensión y el estudio del proyecto. La definición de
amplificador de auriculares, y de sonido estéreo.
Se define como amplificador de auriculares, un amplificador de audio diseñado
especialmente para usar los auriculares en lugar de altavoces. Por lo general se
encuentran dentro de dispositivos electrónicos tales como reproductores de
música portátil, televisores, etc.
Se define como sonido estéreo, al método de reproducción de sonido que crea
una ilusión de direccionalidad y perspectiva audible. Esto se consigue
normalmente mediante el uso de dos canales de audio independientes, a través de
una configuración de dos altavoces. El propósito de grabar en sonido
estereofónico es el de recrear una experiencia más natural al escucharlo, y donde,
al menos en parte, se reproducen las direcciones izquierda y derecha de las que
proviene cada fuente de sonido grabada. El sonido estéreo es bastante común en
los sistemas de entretenimiento, tales como la radio, la televisión, la música
grabada y el cine.
Por último, se establece que cuando se hable de grados, se tomara como ángulo
θ = 0º el eje horizontal.
Introducción
- 6 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
1.2 INTRODUCCIÓN
A partir de estas definiciones, la primera idea que puede venir en mente
cuando se piensa en un amplificador de auriculares es que solamente es utilizado
por la gente que trabaje con la música; pero que es una cosa poco usada, ya que
solamente tenemos que conectar los auriculares a la salida del reproductor de
música del ordenador, a la salida del reproductor de CD o del amplificador
integrado, y así seremos capaces de disfrutar de nuestra música.
Lamentablemente, las salidas de audio, a veces, en estos dispositivos son ideas
de último momento, y como podemos imaginar, ideas de baja prioridad, realizadas
con los componentes más económicos que podamos encontrar en el mercado,
sonando en consecuencia a los componentes usados. Otras veces, esta calidad de
audio se ve reducida ya que se contamina con ruido del sistema digital, o porque
la alimentación de dichos dispositivos es a través de baterías.
Aunque la calidad del sonido de los reproductores portátiles, diseñados
específicamente para auriculares, está lejos de ser optimo (ya que estos tienen la
limitación de la baja tensión a la que tienen que trabajar), para escuchar y usar
bien los auriculares, se necesita casi obligatoriamente un amplificador de
auriculares decente.
Los amplificadores de auriculares que incluyen un crossfeed suelen estar
formados de varias partes; a grandes rasgos podríamos diferenciar: diferentes
filtros (que dan un sonido más detallado y limpio), una alimentación cruzada de la
señal (que porta una escucha más relajada y natural), y por último, una
amplificación de la señal (que sirve para obtener una escucha mejorada).
Una de las mejoras que se realizaran con este proyecto en los amplificadores
de auriculares, es que todo se hará de forma digital, así, podremos evitar
diferentes problemas naturales; problemas como el ruido generado por diferentes
componentes electrónicos del “reproductor” de música (que como ya hemos
hablado antes, normalmente la prioridad del aparato electrónico no es la
Introducción
- 7 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
reproducción de música, por lo tanto, es bastante común que un componente del
aparato añada ruido a nuestra señal de música), este ruido se quitará con diferentes
filtros paso alto (pero nunca se puede conseguir algo ideal con componentes
analógicos), y lo mismo pasa con la alimentación cruzada, todos los estudios
anteriores son con componentes analógicos, los cuales no son ideales, por lo tanto
se generan errores de transición, hasta que dichos componentes analógicos
alcanzan el estado en régimen permanente.
Todo esto sirve para reproducir una sensación más natural, similar a la de los
sonidos escuchados con los altavoces. Realmente, esta sensación de naturalidad se
consigue con varias causas que ocurren todas a la vez; primero se diferencia la
procedencia de un sonido, por la atenuación y el retardo con que llega a cada oído
(esta es una de las características más importantes), además, estas ondas de sonido
se ven parcialmente absorbidas y reflejadas por los tejidos de la cabeza, que
acaban llegando al canal auditivo y amplifican o atenúan componentes de
frecuencias específicas. Y por último, las reflexiones de las ondas de sonido en las
paredes, en el techo y en el suelo de la habitación, nos ayudan a tener una
sensación extra del espacio y la profundidad de las cosas.
Todos estos mecanismos de audición direccional no se encuentran cuando se
utilizan los auriculares. Además, los auriculares están conectados directamente a
la cabeza, por lo que los movimientos de la cabeza no ayudará a agregar esta
información a la que estamos acostumbrados. Como resultado, el sonido que se
oye por los auriculares parece adherirse a nuestra cabeza, e intenta forzar un
campo de sonido natural creado, el cerebro no ve indicios lógicos para la
direccionalidad del sonido, y esto inconscientemente se convierte en estrés
mental.
Poder reproducir todos estos campos de forma artificial para simular los
sonidos de forma más natural es bastante complicado. Afortunadamente, la
información direccional media es proporcionada por el retardo del tiempo y el
nivel de atenuación de los sonidos que llegan al oído opuesto. Un filtro de
alimentación cruzada o crossfeed puede simular este proceso, y añadido a una
Introducción
- 8 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
atenuación y retraso de la señal ayudan a reproducir esta forma de escucha más
natural, y por lo tanto, se reduce considerablemente los síntomas adversos
surgidos por la escucha con auriculares.
Por esta razón, es de gran utilidad e importancia explicar un poco más a fondo
uno de los apartados más importantes del proyecto, la alimentación cruzada, o
crossfeed.
1.3 CROSSFEED
Resumiendo y ampliando un poco todo lo expuesto anteriormente, se sabe que
para localizar y exteriorizar las fuentes de sonidos, se usan los dos oídos. El
sonido de una fuente que se tenga a la derecha (por ejemplo, un altavoz derecho)
se escucha no sólo por el oído derecho, sino también, por el oído izquierdo;
solamente que la señal se escuchará un poco atrasada y atenuada. El cerebro
compara el sonido retardado y atenuado con el original para deducir la ubicación
exacta de la fuente de sonido. Cuando escuchamos sonidos en unos auriculares,
todas estas fuentes de información están ausentes.
Los auriculares colocados directamente en los oídos nos provocan una
intensificación del sonido estéreo, algo que no es natural, donde un oído no oye lo
que el otro está escuchando. Esto da una fatiga auditiva al oyente con dolores de
cabeza e incluso mareos después de un largo tiempo de audición.
Para ayudar a reducir esta fatiga auditiva causada por la imagen estéreo no
natural proporcionada por los auriculares, se pensó en desarrollar de forma
analógica una alimentación cruzada de la señal de sonido o crossfeed
(básicamente, un simulador acústico).
El proceso de crossfeed se basa en una alimentación cruzada de la señal de
audio estéreo, de los canales izquierdo y derecho, con un filtro que imita las
características de absorción de sonido de la cabeza humana. Después de pasar a
Introducción
- 9 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
través de un filtro, se mezcla una porción retardada de los canales izquierdo y
derecho, entre sí, para simular el retraso que se produce cuando se escuchan
señales de audio a través de altavoces estéreo posicionados aproximadamente a 60
grados de la cabeza.
El resultado obtenido con el crossfeed es un sonido mucho más realista, más
natural, donde podemos diferenciar las ubicaciones de las fuentes de los diferentes
sonidos incluso con la utilización de cascos. Gracias a esto podemos evitar lo
representado en la Figura 1 [EIER__], ya que la causa de esta fatiga auditiva
mencionada con anterioridad es por la creación de tres “globos” auditivos en
nuestra cabeza (los dos laterales creados por los altavoces de los auriculares
cuando los escuchamos en modo estéreo, y el central, una zona de nuestra cabeza
ausente de sonido direccional, en esta parte de la cabeza, se mezclan los sonidos
de los otros dos “globos”, creándonos el estrés mental nombrado con
anterioridad), en lugar del “globo” auditivo único que crea el cerebro de forma
natural, donde todo el sonido lo escuchamos al unísono.
Figura 1: Diferencia de percepción del sonido con cascos y de forma natural
Hay un tipo de grabación (llamada grabación “binaural”) que se diseñan
específicamente para escucharlas con auriculares, por lo tanto no tienen estos
problemas (es un micrófono especial que se asemeja a una cabeza humana con
elementos de micrófonos en los oídos). Lamentablemente, este tipo de grabación
binaural solamente producen un sonido agradable con los auriculares, no es
aconsejable usarlas con altavoces; por esta causa pocas empresas invierten en su
producción. En la Figura 2, se observan dos imágenes de dos tipos diferentes de
Introducción
- 10 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
micrófonos de sonido binaural, podemos observar que la estructura es muy
diversa, pero la idea principal es la misma, intentar captar el sonido de la forma
más similar posible al sonido captado por nuestros aparatos auditivos, a causa de
esto, se crean micrófonos tan peculiares y diferentes.
Figura 2: Grabadores de sonido binaural
Continuando con el crossfeed, y lo relacionado al retraso de la onda por la
distancia entre las orejas en la cabeza, en la Figura 3 [TAV__] se observa un gráfico
de dos respuestas a un impulso, una por cada oído, grabadas con una cabeza
artificial, con la fuente ubicada a 60° respecto a la horizontal y 0° de elevación. El
eje horizontal corresponde al tiempo y el vertical a la amplitud. En esta imagen
podemos apreciar claramente todo lo comentado con anterioridad (que un oído
escucha lo del otro oído, pero con un retardo y una atenuación de la señal).
Introducción
- 11 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Figura 3: Respuestas a un impulso, registradas con una cabeza artificial, para pata θ=60° y φ=0°
En este momento entra la posibilidad de continuar con la idea crossfeed o
cambiar a intentar conseguir una reproducción de los sonidos como si fueran
captados con micrófonos binaurales, es decir, reproducir la función de
transferencia de la cabeza reconocida con la sigla HRTF (Head Related Transfer
Functions), ya que hay similitudes con el crossfeed, (el conseguir una respuesta
más natural a la hora de escuchar música), pero la idea es desechada rápidamente,
ya que en los archivos de sonido estéreo falta mucha información de
posicionamiento para poder realizar el proyecto de esta manera.
Así que, retomando el tema del crossfeed con los auriculares, en pocas
palabras: el sonido en el canal derecho sólo se oye en el oído derecho y el sonido
en el canal izquierdo sólo se oye en el oído izquierdo. Lo que falta en los
auriculares es el sonido que va desde cada canal al oído contrario, con un poco de
retraso por la distancia adicional recorrida, y con una pequeña atenuación de las
altas frecuencias por el efecto de sombra de la cabeza. Se contempla un ejemplo
gráfico en la Figura 4[EIER__].
Introducción
- 12 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Figura 4: Esquema de la percepción de las señales a través de los oídos
La Figura 5 y la Figura 6 nos darán una idea más concreta, general y amplia de
cómo modifica la señal el crossfeed:
Figura 5: Esquema general analógico para conseguir una señal crossfeed
La Figura 5 sería el esquema analógico básico del que se habla con
anterioridad, como podemos ver se aplica un filtro paso bajo a la señal de entrada
de cada canal, y posteriormente se añade en el cruce la atenuación del canal
contrario antes de la salida de cada canal.
Introducción
- 13 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Figura 6: Esquema de la modificación de una señal por el crossfeed
En la Figura 6, se aprecia con bastante facilidad lo que hace el crossfeed con la
señal estéreo original, viendo que la amplitud de la señal directa del canal se ve
ligeramente atenuada y ligeramente atrasada para comodidad del oyente por la
recreación de dicho altavoz a unos 60 grados (el ángulo varía según el retardo con
que el sonido llega al otro oído).
Sabiendo ya una idea básica general de lo que es un crossfeed, se aclarará que
no solo se hace un filtro paso bajo y un retardo a las frecuencias del canal que
queremos sumar a la señal original, sino que estudios posteriores muestran que
además también se tiene que aplicar un filtro que refuerce las altas frecuencias a la
señal directa, así la unión de ambas señales será más natural, en la Figura 7 se
puede ver dicha explicación gráficamente.
Introducción
- 14 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Figura 7: Esquema digital crossfeed
Como se observa en la Figura 7, la señal de audio de cada canal se ve sometida
a un paso bajo y un filtro que refuerza las altas frecuencias (consiguiéndose con la
suma de un filtro paso alto a la señal original). A continuación se suma a esta
señal un retardo de la salida del paso bajo del canal anterior, y siendo la suma de
estas dos señales la salida del sistema, que sería la salida de audio que nosotros
escucharíamos a través de nuestros altavoces.
1.4 CONTEXTO HISTÓRICO
Refiriéndonos un poco al contexto histórico, todo surge por la década de 1950,
un ingeniero llamado Ben Bauer [BEN61] que sabía de estos problemas con los
auriculares se dio cuenta de que podía utilizar un filtro analógico que le simularía
bastante bien el retardo que sentimos de la señal auditiva por la distancia entre los
Introducción
- 15 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
oídos y usaría un ecualizador para alimentar un poco cada canal a través del canal
opuesto.
Su esperanza era que el sonido de los auriculares pareciera que viene fuera de
la cabeza. Por desgracia, los auriculares no eran tan buenos en aquella época, y la
electrónica no era tan sofisticada como lo es ahora; aunque su circuito hizo que
con los auriculares se escuchara un sonido más natural, pero no hizo una mejora
lo suficientemente grande como para compensar las desventajas comercialmente.
Su circuito era también bastante costoso debido al número de condensadores de
grandes valores y bobinas. El producto que salió de su trabajo nunca se vendió
bien y, finalmente, desapareció del mercado.
Ben Bauer no era la única persona que trabaja con esta tecnología, en estos
años. Otros investigadores intentaron conseguir mejorar el sonido de los
auriculares. Como el ruso Siegfried Linkwitz [LINK71], en cuyo estudio incluye un
refuerzo de los bajos, para compensar la cancelación de las bajas frecuencias,
además su versión no usa bobinas, y es menos sensible a la impedancia de carga.
Desafortunadamente, los resultados fueron los mismos que para Ben Bauer, ya
que los auriculares no se vendían en esa época como se venden en la actualidad,
por lo tanto no tenía prometedores beneficios para continuar con el estudio del
crossfeed en aquellos tiempos.
Avanzando ya unos años, todo va cambiando significativamente. En 1980, los
auriculares ya se están utilizando en gran número de equipos portátiles, circuitos
integrados hechos con la construcción de filtros analógicos mucho más simples y
menos costosos, y gracias a todo esto la calidad de los auriculares empezó a
mejorar significativamente.
A partir de este momento, diferentes ingenieros como Tyll Hertsens
continuaron trabajando con esta idea del crossfeed para poder mejorarla. Tyll
construyó un prototipo de procesador psicoacústico y amplificador de auriculares
que logró los cambios de ecualización propuestos por los circuitos de Bauer. Aun
así, hasta pasados unos años no empezaría a tomar una forma más afianzada y
comercial la idea del crossfeed.
Introducción
- 16 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Más o menos, en esta última década, diferentes estudios han ido mejorando
esta idea, como los realizados por Chu Moy [MOY01], Jan Meier [MEIE__] o por Boris
Mikhaylov [MIKH05]; cada uno de ellos ha introducido diferentes mejoras o
aportaciones a dicha idea, como el retraso de la señal de audio, modificaciones de
la ganancia entre los filtros de un mismo canal, o cambiando la frecuencia de
corte de los filtros; pero todos basados a partir de la ampliación del estudio de
Bauer.
1.5 MOTIVACIÓN
Ahora sí que es una buena idea invertir en la idea del crossfeed ya que todo ha
cambiado: el increíble crecimiento en el uso de reproductores portátiles, la gran
cantidad de personas que utilizan auriculares con ordenadores o teléfonos
inteligentes, la gran movilidad de la música y la cantidad de aficionados a las
películas, ha hecho de los auriculares un área importante para investigaciones
serias y por lo tanto una buena inversión de dinero para su desarrollo.
Todo esto se ve aumentado por la continua evolución de la gente al trabajar,
estudiar o hacer sus trabajos diarios con la música, por lo tanto, el papel de los
auriculares coge cada vez más importancia en un mundo donde cada persona tiene
diferentes gustos musicales, y no todos quieren escuchar las mismas canciones en
los mismos momentos. Por esta razón, su utilización está en auge, ya que es la
mejor forma para poder reproducir la música que se quiere en cada momento, sin
molestar a la gente que pueda haber alrededor.
También las grandes mejoras en el rendimiento de la calidad de sonido de los
auriculares es otra gran razón tecnológica que ha hecho florecer la investigación
del crossfeed; gracias a esta, se pueden reproducir sonidos mucho más limpios y
sin tanto ruido, donde podemos diferenciar mejor los distintos instrumentos que
intervienen en las canciones, por esta razón, casi se ve obligada la implantación de
un sistema crossfeed, al mejorar de forma continua los altavoces de reproducción
Introducción
- 17 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
de la música, hay que mejorar también la forma de escuchar la música a través de
ellos.
1.6 OBJETIVOS
El proyecto está formado por tres objetivos principales y uno secundario, el
secundario se realizará si se dispone de tiempo suficiente.
Objetivos principales:
Estudio de los algoritmos ya existentes, este objetivo se basa en la
búsqueda de información de los trabajos y/o proyectos ya existentes
sobre el tema en internet y otras fuentes, es decir, la búsqueda de los
diferentes avances históricos sobre el tema con su recopilación de
diferentes algoritmos con sus parámetros de funcionamiento y
diferencias entre ellos.
Implementación del circuito en Matlab, este objetivo se basa en la
prueba del estudio de información del primer objetivo. Una vez
recopilada la información necesaria, sabiendo los algoritmos usados en
los diferentes estudios, se tendrá que comprobar la respuesta de dichos
algoritmos y ver cual se asemeja más a los requisitos necesarios,
procediendo a hacer diferentes modificaciones en caso de ser
necesarias.
Implementar el algoritmo en un chip XMOS, en este objetivo
tendremos la programación del microchip para implantar el sistema
optimo desarrollado en el punto anterior. Se usará una placa de
evaluación adquirida del fabricante.
Objetivo secundario:
Hacer una tarjeta con el chip y un convertidor D/A, y por último,
en este objetivo, se diseñará una tarjeta definitiva con el chip XMOS,
añadiéndole una etapa de conversión digital-analógica.
Introducción
- 18 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
1.7 RECURSOS / HERRAMIENTAS EMPLEADAS
Para la realización de este proyecto, se utilizaron las siguientes herramientas:
Internet: para la búsqueda de información y estudio de los diferentes
proyectos existentes hasta el momento
Matlab: para la implementación del circuito crossfeed que se codificara
en el microchip de XMOS
Simulink: usado para comprobaciones de la respuesta a una señal del
filtro crossfeed, cambiando el orden de los filtros FIR.
USB Audio 2.0 Reference Design: tarjeta a utilizar en el proyecto
xSOFTip explorer: programa necesario para el funcionamiento del
microchip a utilizar.
xTIMEcomposer studio: compilador de XMOS en lenguaje XC
Estudios Previos
- 19 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Capítulo 2 ESTUDIOS PREVIOS
Ahora que ya sabemos en profundidad todo sobre el crossfeed, continuaremos
con el análisis de las diferentes características, opciones y modificaciones de los
diferentes estudios sobre el crossfeed a lo largo de su historia.
Solamente nos centraremos en las características de la respuesta de los filtros,
ya que para este proyecto no interesa el circuito analógico usado para dichos
filtros.
2.1 BENJAMIN BEN BAUER
Todo comenzó con Ben Bauer [BEN61], que en 1961 estableció el método
directo para la reproducción de una señal con crossfeed: tomar la señal estéreo
original y atenuar su amplitud. Después, cruzar los dos canales y añadir las
señales procesadas a la señal estéreo original. Todo realizado de forma analógica.
Representándolo con una fórmula matemática seria:
Estudios Previos
- 20 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
2.2 SIEGFRIED LINKWITZ
La versión de Linkwitz [LINK71] no tardó mucho en salir, una década después, en
1971, su versión no usa bobinas y es menos sensible a la impedancia de carga. El
propuso la idea de no solo mezclar las señales estéreo, sino también usar filtros
simples de primer orden RC, paso bajo para la señal crossfeed, y paso alto para la
señal directa, a una frecuencia de corte de 700Hz, como se puede contemplar en la
Figura 8, creando una imagen de sonido más realista en los auriculares, todo a
través de electrónica analógica, consiguiendo imitar la “sombra de la cabeza” con
el crossfeed.
Figura 8: Gráfica de la respuesta en frecuencia de la amplitud del filtro de Linkwitz
Linkwitz planteo descender 3dB los graves de la señal del canal derecho frente
al izquierdo antes de aplicar el filtro paso bajo al canal derecho (lo que quiere
decir, reducir en 3dB los bajos de la señal crossfeed, antes de aplicarle el filtro
paso bajo a 700Hz). Además que también impuso el incremento de las altas
Estudios Previos
- 21 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
frecuencias del canal izquierdo en 2dB (lo que quiere decir, el incremento en 2dB
de los altos en la señal directa después de los 700Hz).
Este juego con los filtros paso alto y paso bajo mejora bastante la unión de las
señales después de aplicar el crossfeed, y por lo tanto, supone un gran incremento
en la naturalización de la señal de audio, este juego se realiza, ya que nuestro
oído, en percepción directa (se definirá como percepción directa, al oído que está
más cerca de la fuente de sonido) además de sentir los bajos de la señal, sentirá
sin modificaciones y con bastante intensidad las frecuencias altas de la señal; por
el contrario, el oído en percepción indirecta (definido como el oído más alejado de
la fuente de sonido) recibirá principalmente las frecuencias bajas de la señal; por
lo tanto es de bastante interés, y de gran ayuda, aplicar filtros paso alto y paso
bajo a la señal original para poder tener en cuenta estos aspectos.
Linkwitz también estableció un descenso de 16 dB a la señal directa del canal,
pero se verá más adelante, que es un descenso de intensidad de sonido un poco
excesivo.
En la Figura 8 también se observa la respuesta del filtro de Linkwitz en el caso
de que tanto el canal izquierdo, como el canal derecho reciban la misma señal de
audio, este caso se ve contemplado con la línea discontinua horizontal.
2.3 JAN MEIER
El estudio de Jan Meier [MEIE__] se produjo entre 1998 y 2001, cuando el uso de
los auriculares, el “boom” de los “discman” y el inicio de la música CD en los
jóvenes como medio de reproducción de música empezó a coger auge,
añadiéndose a todas estas oportunidades el desarrollo de la música en MP3.
Usa también filtros paso bajo y paso alto simples de primer orden RC. En su
estudio aumentó la separación a frecuencias bajas de los filtros de 3dB ( lo usado
Estudios Previos
- 22 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
por Linkwitz ) a 9,5dB, como se puede ver en la Figura 9, y redujo la frecuencia
de corte a 650Hz.
Figura 9: Gráfica de la respuesta en frecuencia de la amplitud del filtro de Meier
Además, Jan Meier estableció el retraso relativo a bajas frecuencias entre
señales de alimentación cruzada o crossfeed y la señal directa en la parte inferior
de las frecuencias. Este retraso que estableció fue de 320µs, retraso que imita el
retardo natural para un altavoz visto en un ángulo de aproximadamente 60º.
Esta característica añadida fue de gran importancia, ya que introdujo otro
factor muy importante para la naturalización de la música estéreo, la separación
real entre los oídos.
Estudios Previos
- 23 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Figura 10: Gráfica de la respuesta en frecuencia del retardo de las señales en el filtro de Meier
En la Figura 10, se puede ver el retraso relativo comentado que implemento el
filtro crossfeed de Jan Meier. Se ve que ejerce un adelanto de unos 80µs a la señal
directa, y atrasa unos 250µs la señal crossfeed antes de sumarla a la señal directa
del otro canal.
2.4 CHU MOY
Esta versión del 2001 incluye un refuerzo de bajos para compensar la
cancelación de bajas frecuencias. Su filtro también está formado por RCs de
primer orden.
Este trabajo realizó cambios más característicos, sobre todo en las frecuencias
altas, que fueron severamente atenuadas en comparación con la señal original, a
pesar del impulso incorporado en los agudos de cada canal.
Estudios Previos
- 24 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Figura 11: Respuesta en frecuencia del filtro de Chu Moy
En la Figura 11 se ve la respuesta en frecuencia del filtro de Chu Moy [MOY01],
donde vemos que él impuso una separación de 6dB entre el filtro de la señal
crossfeed y el filtro paso alto de la señal original.
Figura 12: Comparación de la respuesta en frecuencia entre el filtro de Jan Meier y Chu Moy
Es importante destacar lo que se ve en la Figura 12, la diferencia principal
entre los filtros de Jan Meier y Chu Moy, siendo que en el filtro de Chu Moy, el
filtro paso bajo de la señal crossfeed se ve alzado 3dB.
En conjunto, en la Figura 11, Figura 12, y Figura 13, se ve a simple vista que
además Chu Moy puso de nuevo la frecuencia de corte a 700Hz, y centrándonos
Estudios Previos
- 25 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
en la Figura 13, vemos que redujo el desfase relativo entre canales a 250µs.
Dejando un retraso casi nulo en la señal original, y aplicando todo el retardo a la
señal crossfeed.
Figura 13: Tiempo de retardo de las señales en el filtro de Chu Moy
Los trabajos de Chu Moy y Jan Meier se realizaron más o menos en la misma
época, observando que hay diferentes versiones de ambos trabajos, ya que cada
uno se apoyó en los estudios del otro para mejorar y actualizar su trabajo.
2.5 BORIS MIKHAYLOV
Por último, el estudio de Boris Mikhaylov [MIKH05], realizado en 2005, se basó
en la construcción de un crossfeed digital, cambiando los parámetros del filtro.
Dejando la frecuencia de corte a 700Hz, pero cambiando la separación de graves a
4,5dB.
Uso un filtro de un polo simple recursivo, usando la Ecuación 1 de
recursividad.
Estudios Previos
- 26 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Ecuación 1: Ecuación de Boris Mikhaylov
Donde a0, a1, y b1 son los coeficientes de recursividad, I[n] es la muestra de
entrada, y O[n] la muestra de salida.
Este fue un filtro creado por el, sacando los valores de a0, a1, y b1 a través de
diferentes algoritmos que uso en sus ecuaciones.
Dejó la frecuencia de corte a 700Hz, y el tiempo de desfase entre señales, el
establecido por Chu Moy, de 250µs, modificando la separación entre filtros,
estableciéndola a 4,5dB.
2.6 CONCLUSIONES
En la Figura 14 [MIKH05] se verá una comparación en magnitud de los filtros y
cómo reaccionan según la frecuencia, y en la Figura 15 del tiempo de retraso,
entre los filtros diseñados por Jan Meier, Chu Moy y Boris Mikhaylov, que fueron
los tres últimos estudios realizados, y por tanto, las tres últimas versiones con
mejores resultados.
Estudios Previos
- 27 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Figura 14: Comparación en frecuencia de la magnitud de los filtros diseñados por Jan Meier, Chu
Moy y Boris Mikhaylov
En la Figura 14 se puede apreciar muy bien la diferencia principal entre los
últimos tres métodos, la diferencia relativa en dB entre los dos filtros, ya que esta
diferencia, nos dará una intensidad mayor o menor en los bajos de la señal
crossfeed, y otra característica que podemos diferenciar, aunque más difícilmente,
es la frecuencia de corte de los filtros, viendo que tanto Chu Moy como Boris
Mikhaylov la establecen a 700Hz, y Meier a 650.
Estudios Previos
- 28 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Figura 15: Comparación de los tiempos de retardo en los filtros diseñados por Jan Meier, Chu
Moy y Boris Mikhaylov
En la Figura 15, se observa el retardo relativo a frecuencias bajas entre señales
de los tres últimos modelos, como se mencionó con anterioridad, en esta
característica no hay mucha diferencia, ya que, todos los estudios se basan en un
altavoz situado a 60º.
A partir de esta información, para sacar verdaderas conclusiones de qué filtro
es el mejor para el proyecto, se tendrá que comprobar la respuesta de los cuatro
filtros a una señal de audio establecida. Esto se realizará con Matlab, como se
explica a continuación.
Después de hacer estas comprobaciones se sabrá que filtro se amolda mejor a
las necesidades requeridas, y se podrán hacer los cambios necesarios.
Desarrollo de los filtros crossfeed
- 29 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Capítulo 3 DESARROLLO DE LOS FILTROS
CROSSFEED
Antes de empezar a programar con Matlab, se realiza un diagrama de bloques
para tener más clara la idea del crossfeed, y así comprender mejor cómo tendría
que ser la programación a realizar. Se dibujó el diagrama de bloques realizado en
la Figura 16.
Figura 16: Diagrama de bloques del crossfeed, usado para la programación en Matlab
Desarrollo de los filtros crossfeed
- 30 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
En el diagrama de bloques de la Figura 16 se añadieron los nombres de las
variables utilizadas en Matlab en las diferentes etapas del tratamiento de la señal
de audio, para facilitar la comprensión del código utilizado.
Una vez que se tiene claro qué hay que programar, empiezan a surgir los
diferentes caminos por los que podemos optar para hacer la programación.
La primera duda surge en los filtros, ya que es el primer bloque que nos
encontramos, se concluye que los filtros a utilizar tienen que ser sistemas LTI (se
explicará a continuación el porqué) y dentro de este tipo de sistemas, se
encuentran dos tipos de filtros digitales, los filtros IIR y FIR, que se detallaran en
los puntos 3.2 y 3.3.
Antes de comentar en detalle la explicación de los filtros, se definirá:
Respuesta en frecuencia: función compleja cuyo valor depende de la
pulsación normalizada, determina los cambios producidos en la
amplitud y la fase de una señal exponencial compleja aplicada a la
entrada de un sistema LTI.
3.1 SISTEMA LTI
Un sistema LTI (“Linear Time-Invariant” o Sistemas lineales invariantes en el
tiempo) es un sistema, que como su nombre indica, cumple dos propiedades, la
linealidad y la invarianza en el tiempo.
Linealidad
Un sistema es lineal si satisface el principio de superposición, que dice que si
la entrada es igual a la suma de dos o más señales, o una parte proporcional de
alguna de ellas, la salida será igual a la suma de la respuesta del sistema a cada
una de las señales.
Desarrollo de los filtros crossfeed
- 31 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Invariabilidad
Un sistema es invariante en el tiempo, si la respuesta producida por el sistema
es siempre la misma, independiente del instante de tiempo en que se produzca
dicha respuesta. Esto quiere decir, que una muestra especifica producirá la misma
respuesta al pasar por un sistema, independientemente de cuándo pase dicha
muestra.
Después de esta explicación, se puede concluir que el filtro usado para el
proyecto tiene que ser obligatoriamente un LTI.
3.2 FILTROS IIR
Los filtros IIR (Infinite Impulse Response) satisfacen las propiedades de
linealidad e invarianza en el tiempo, por lo que son sistemas LTI. Además, tienen
una respuesta al impulso unidad de duración infinita, es decir, la salida tendrá un
número infinito de términos no nulos, es decir, nunca vuelve al reposo.
La respuesta de estos sistemas no sólo depende de las muestras de entrada sino
también de las muestras de salida anteriores en el tiempo. Por tanto, los filtros IIR
son sistemas realimentados.
La ecuación de este tipo de filtros cuya salida es y[n] y entrada es u[n] se
representa en la Ecuación 2.
Ecuación 2: Filtros IIR
Los coeficientes ai se denominan de realimentación, mientras que bk se
denominan coeficientes directos. En este caso, se define N como el orden del
filtro.
Desarrollo de los filtros crossfeed
- 32 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Aplicando la transformada Z, obtendríamos la función de transferencia
representada en la Ecuación 3.
Ecuación 3: Transformada Z de los filtros IIR
Por último, una de las características que interesa para este proyecto es la
respuesta en frecuencia del filtro, esta está relacionada directamente con la
función de transferencia, obteniéndose al hacer la sustitución .
En la Figura 17 representamos con Matlab un ejemplo de filtro IIR, de esta
figura nos interesa observar la fase, ya que se puede distinguir claramente que no
es lineal.
Figura 17: Diagrama de Bode de un filtro IIR
Se ve en la Figura 17, que la fase del filtro IIR no es lineal, por lo tanto,
sacamos como conclusión que los filtros IIR tienen una respuesta en fase no
lineal.
Desarrollo de los filtros crossfeed
- 33 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
3.3 FILTROS FIR
Los filtros FIR (Finite Impulse Response) satisfacen las propiedades de los
sistemas LTI y son aquellos en los que cada muestra de salida es una suma ponderada
de un número finito de muestras de la secuencia de entrada ya recibida.
La ecuación que sigue este tipo de filtros se ve en la Ecuación 4.
Ecuación 4: Filtros FIR
Como podemos observar, es un caso particular de un filtro IIR, donde todos los
coeficientes ai=0.
Aplicando la transformada Z, obtendríamos la siguiente función de transferencia
de la Ecuación 5.
Ecuación 5: Transformada Z de los filtros FIR
Como ya se dijo para los filtros IIR, una de las características que más interesa
en este proyecto es la respuesta en frecuencia del filtro, y como sucede con los
filtros IIR, al ser el filtro FIR un caso particular, la respuesta en frecuencia del
filtro también está relacionada directamente con la función de transferencia,
obteniéndose al hacer la sustitución .
Desarrollo de los filtros crossfeed
- 34 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
En la Figura 18 representamos con Matlab un ejemplo de filtro FIR, como en
el caso anterior, observaremos la fase, viendo que es claramente lineal en los
márgenes del filtro que nos interesa.
Figura 18: Diagrama de Bode de un filtro FIR
Se contempla en la Figura 18, que la fase del filtro FIR es lineal, por lo tanto,
los filtros FIR tienen una respuesta en fase lineal, en contraposición a los filtros
IIR.
Después del estudio de las dos opciones de filtros digitales que tenemos,
optamos por usar un filtro FIR, por diferentes causas; porque son estables por
definición y porque su respuesta en frecuencia es lineal, ya que un filtro con una
Desarrollo de los filtros crossfeed
- 35 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
característica de fase no lineal originará una distorsión de fase, esto, a las
componentes de distinta frecuencia al ser procesadas por el filtro las afectará en
un retraso que no será proporcional a la frecuencia y por lo tanto se alterará la
relación original entre los distintos armónicos que la formen, y al estar tratando
con señales de audio, interesa que dichas señales no se desfasen unas de otras en
el tiempo al aplicar los diferentes filtros, sino, al hacer el sumatorio de las señales
representado en la Figura 16, dichas señales estarán desfasadas entre sí, y se
producirá una deformación de la onda.
3.4 IMPLANTACIÓN DE LOS FILTROS CROSSFEED
Para comenzar a programar, primero se comenzó con un par de pruebas de los
filtros. Se generó una señal senoidal de dos frecuencias, a 50 y 120 Hz, y se
añadió ruido a la señal. A esta señal se le aplico el filtro FIR a una frecuencia de
corte de 100Hz, cuyos resultados se muestran en la Figura 19.
Figura 19: Señal generada a 50 y 120 Hz con ruido
Desarrollo de los filtros crossfeed
- 36 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
La señal representada en la Figura 19, es la señal de prueba, se generó con
ruido para comprobar la eficacia del filtro FIR a utilizar, y las amplitudes de las
frecuencias fueron de 0,8V para 50Hz y 1V para 120Hz, se generaron de
diferentes amplitudes con el mismo propósito por el que se metió el ruido, para
ver la eficacia del filtro FIR.
Figura 20: Filtro FIR de prueba, aplicado a 100Hz
En la Figura 20 se ve la gráfica del filtro FIR utilizado, hemos generado la
señal de prueba a una frecuencia de muestreo:
Por lo tanto, por el criterio de Nyquist, la frecuencia de muestreo de dicha
señal tiene que ser como mínimo el doble de la frecuencia de la señal, por lo tanto,
la frecuencia de Nyquist será:
Desarrollo de los filtros crossfeed
- 37 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Como hemos normalizado las gráficas de los filtros, los 100Hz de nuestro filtro
en frecuencia normalizada serán:
Ecuación 6: Frecuencia normalizada del filtro de prueba
Como bien se observa en la gráfica, la frecuencia de corte del filtro es a una
frecuencia normalizada igual al resultado de la Ecuación 6.
Aplicando el filtro a la señal, se obtiene la Figura 21.
Figura 21: Filtro FIR de prueba, aplicado a 100Hz
Desarrollo de los filtros crossfeed
- 38 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Como muestra la Figura 21, el filtro FIR digital de orden 50 es casi perfecto, no
tenemos los problemas que existen con los filtros analógicos, que
aproximadamente empiezan a filtrar una década antes y acaban una década
después (en dB), en estos filtros, al ser digitales, son más exactos, siendo este uno
de los atractivos para nuestro filtro crossfeed.
Una vez que ya se han realizado las comprobaciones pertinentes, se continúa
con la programación del código siguiendo el diagrama de bloques expuesto en la
Figura 16.
Antes de los comentarios de esta parte, se deja en conocimiento que todo tipo
de señales referidas de aquí en adelante estarán limitadas a 5 segundos, ya que
basta para el estudio de este proyecto con estudiar los primeros cinco segundos de
una canción.
Se puede saber con cuantas muestras estaremos trabajando, ya que para la
música se utiliza una frecuencia de muestreo de:
Por lo tanto, como se trabajará con 5 segundos, estaremos trabajando
continuamente con el número de muestras obtenidas en la Ecuación 7.
Ecuación 7: Muestras con las que se trabajará durante el estudio de los filtros
Como se puede diferenciar en la Figura 16, primero se separarán los canales
izquierdo y derecho de la señal, como podemos ver en la Figura 22 y en la Figura
23.
Desarrollo de los filtros crossfeed
- 39 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Figura 22: Señal de audio Lr
Figura 23: Señal de audio Rr
Se observan diferencias sobre todo entre los armónicos encontrados entre las
frecuencias de 0 a 1500Hz, donde se puede ver que para la señal del canal derecho
(Figura 23), hay más cantidad de armónicos, y su amplitud es mayor.
Pero como se puede ver en la Figura 22 y en la Figura 23, las diferencias entre
los canales no son muy apreciables, así que para no sobrecargar el proyecto con
demasiadas gráficas, solamente se pondrán las gráficas y las conclusiones
Desarrollo de los filtros crossfeed
- 40 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
correspondientes a uno de los dos canales (se eligió el canal “Left” o izquierdo),
suponiendo que las gráficas correspondientes al otro canal serán similares.
Aplicando al canal izquierdo los filtros correspondientes, se obtienen la Figura
24 y la Figura 25.
Figura 24: Filtro paso bajo a 700Hz de la señal de audio
Figura 25: Filtro paso alto a 700Hz de la señal de audio
Desarrollo de los filtros crossfeed
- 41 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Se estableció para este filtro un filtrado a 700Hz y no de 650Hz por la lectura
de un proyecto basado en la música binaural, del que se sacó la Figura 3, además
de por la influencia de los estudios anteriores sobre el tema.
Se impuso también un retraso de 320µs, basándonos en el mismo estudio
nombrado con anterioridad, los posibles retardos que se pueden percibir llegan
hasta 600µs, dependiendo del ángulo en que se encuentre la fuente de sonido,
aproximándolo para una fuente situada a 60º con 320µs de retardo.
Por último, experimentalmente se puso la diferencia relativa entre filtros,
estableciéndola a -5.25dB, ya que es con la que mejor resultados se obtienen para
todas las frecuencias auditivas.
3.5 RESULTADOS
Después de la aplicación del código de Matlab a todos los filtros anteriormente
nombrados, mejorándolos ya de por si un poco, ya que a todos se les aplica el
mismo filtro FIR (de orden 50) con el que se trabajará durante todo el proyecto, se
llega a las siguientes características para el filtro crossfeed:
Utilización de un filtro paso bajo para la señal crossfeed, y uno paso alto
para la señal directa. Ya que los sonidos por encima de una determinada
frecuencia (de 600 – 900 Hz, aproximadamente), cuya longitud de onda es
pequeña, sólo serán escuchados por uno de los dos oídos; ya que la cabeza
funciona como una pantalla, y evita que una parte del sonido alcance al
oído que está situado en el lado opuesto a la dirección del sonido.
Aplicación de la frecuencia de corte a 700 Hz, se planteó la posibilidad de
cambiar la frecuencia de corte entre el paso bajo y el paso alto, el
problema de hacer esto, es que cuando sumas la señal crossfeed a la señal
original la unión no es buena, ya que hay diferentes instrumentos (como
las guitarras) que pueden trabajar a frecuencias bajas y altas, y aplicando
esta posibilidad a estos instrumentos, da la sensación que el instrumento se
Desarrollo de los filtros crossfeed
- 42 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
va moviendo. Y después de gran cantidad de comprobaciones, se impuso
la frecuencia de 700Hz como la frecuencia de la que se habla en el punto
anterior.
Retardo de la señal de 320μs.
Una diferencia entre filtros de 5,25dB, ya que experimentalmente, se ha
llegado a la conclusión, que con esa diferencia entre filtros se cumple la
realidad en la que se basa todo el estudio, suponiendo la emisora de sonido
a una fuente situada a 60º.
Utilizando estas características nombradas con anterioridad, para generar el
filtro crossfeed, y para compararlo con los diferentes filtros de los estudios
realizados anteriormente, se recurre a la ayuda de la Figura 26.
Figura 26: Comparación de los diferentes filtros crossfeed en un escenario
Desarrollo de los filtros crossfeed
- 43 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
La Figura 26 es la escenografía de las plateas de un concierto, se usará la
figura para hacer las comparaciones necesarias entre los diferentes filtros
crossfeed, para comentar las diferencias observadas, y explicar mejor por qué la
selección de las características nombradas con anterioridad.
Los puntos de la Figura 26 se dibujaron de forma aproximada tras la escucha
experimental de los diferentes filtros nombrados en este capítulo.
Comentar que realmente el filtro de Linkwitz no está situado donde está el
punto negro. Su verdadera ubicación sería fuera del escenario, bastante lejos,
como si se escuchase el concierto desde la terraza de una casa cercana y centrada,
solo que incrementando el circuito de Linkwitz con el retraso de 320μs y
reduciendo los decibelios que establece Linkwitz en su estudio, se ha situado en
un punto donde se le puede comparar con el resto. Se redujo los decibelios de su
estudio ya que Linkwitz reduce la señal crossfeed 19dB, situándonos esta
reducción muy lejos del escenario. Se modificó su estudio de tal forma que solo
importasen los 3dB de diferencia entre filtros como el exponía en su trabajo.
Se puede ver en la Figura 26, que la separación entre los filtros es la que me
dará la lejanía del espectador en el escenario, suponiendo siempre que el
espectador se encontrará en un ángulo de 60º, aunque como se puede ver, la
diferencia de decibelios entre filtros afecta también un poco a esta magnitud.
Una característica muy importante que se tuvo en cuenta, es la relacionada con
instrumentos como la batería, instrumentos que tienen graves y agudos muy
notados. Se eligió la frecuencia de corte de 700Hz, ya que con una frecuencia de
corte de 650Hz cuando se escucha la batería, da la sensación que los altos y los
bajos del mismo instrumento están desplazados varios metros.
Por último, la mayor diferencia notada frente al filtro de Boris Mikhailov, el
más parecido al de este proyecto, es que experimentalmente, su filtro crossfeed
pone siempre en segundo plano los agudos más elevados, como serían los agudos
de una trompeta, da igual si esta trompeta originalmente esta en primer plano o de
fondo, su filtro siempre las pasa al segundo plano, junto a la batería. Una pena al
intentar escuchar gran cantidad de grupos que juegan con la música a altas
Desarrollo de los filtros crossfeed
- 44 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
frecuencias de diferentes instrumentos en ambos planos. Sin embargo, el filtro
crossfeed de este proyecto deja los instrumentos en sus posiciones originales, y
sin separar los sonidos de los instrumentos, además de aproximarse bastante bien
a los 60º en los que se basa el estudio, y conseguir una música bastante envolvente
y natural.
Información del microcontrolador utilizado
- 45 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Capítulo 4 INFORMACIÓN DEL
MICROCONTROLADOR UTILIZADO
Para este proyecto se utilizará un microcontrolador de Xmos [XMOS13],
compañía que trabaja con diferentes microcontroladores de diferentes capacidades
y características. Xmos es de las compañías de microcontroladores que más
trabajan con temas relacionados con el audio. Por esta razón se eligió un
microcontrolador suyo para este proyecto.
A continuación se detallaran las características más importantes de los
microcontroladores de Xmos. Los núcleos Xcore, los cuales pueden formar un
microcontrolador Xcore™ de multinúcleo, el software de audio, que es el que
interesa para este proyecto, y se adjunta en el Anexo el hardware del micro.
4.1 MICROPROCESADORES CON NÚCLEO XCORE
Este tipo de microcontrolador, el microcontrolador Xcore™ de multinúcleo, es
diferente a los microcontroladores estándar. Permite programar con exactitud y
con precisión las interfaces y las funciones necesarias para el programa a utilizar.
Los microcontroladores de Xmos proporcionan un rendimiento en tiempo real
bastante mejorado, ya que tienen que trabajar con señales de audio. Se recuerda
que la frecuencia de muestreo de las señales de audio comúnmente es de:
Información del microcontrolador utilizado
- 46 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Por lo tanto, se dispone de un tiempo de operaciones entre las muestras muy
pequeño, como se ha calculado en la Ecuación 8.
Ecuación 8: Tiempo de operaciones entre las muestras de audio
Por esta causa, los micros de Xmos[XMOS13] pueden disponer de diferentes
núcleos de procesadores lógicos de 32 bits, lo que permite realizar más de una
tarea en paralelo, gracias a lo cual, se podrían realizar gran cantidad de
operaciones.
Figura 27: Una familia Xcore™ formada por 8 hilos Xcore
Estos microcontroladores, como se puede ver en la Figura 27, están formados
de varios hilos Xcore, cada familia de microcontroladores Xcore™, o núcleo
Xcore, puede contener de 4 a 8 procesadores lógicos Xcore.
Cada procesador lógico es temporalmente independiente del resto, gracias a
que son controlados por el hardware Xtime. Cada hilo puede ejecutar código
computacional, software de control (incluyendo la toma de decisiones lógicas) o
Información del microcontrolador utilizado
- 47 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
el software encargado de las operaciones I/O (entrada y salida de datos a través de
los pins del micro).
Otra característica, y una de las más importantes de este microcontrolador, es
que se pueden personalizar los diferentes hilos Xcore, gracias al programa
xSOFTip, que proporciona una gran gama de periféricos para personalizar dichos
hilos. Dichos periféricos se pueden modificar, añadir, o incluso se pueden crear
periféricos nuevos para conseguir la personalización de los hilos Xcore.
Entre los ya programados, se pueden encontrar periféricos ofrecidos por la
compañía Xmos, como:
Un periférico (usado para este proyecto) que modifica la velocidad del
USB, permitiendo que el microcontrolador pueda soportar la velocidad de
un USB 2.0
En el caso de usar un multicanal, se puede descargar un bloque Ethernet
del programa xSOFTip, y usar uno de varios núcleos o familia Xcore™
para dicho multicanal.
Esto nos ofrece un microcontrolador flexible, con un software formado a través
de periféricos, y por lo tanto personalizado y adaptado a las necesidades de cada
proyecto.
Como se mencionó con anterioridad, en este proyecto se usará uno de estos
periféricos de xSOFTip, ya que se trabajará con un puerto de entrada de música
USB 2.0.
Lo que se quiere en conjunto con este microcontrolador, en resumen, es tener
un micro totalmente personalizado, y saber con exactitud cuál va a ser la respuesta
de nuestro programa.
Centrándonos de nuevo en su arquitectura, como se ha nombrado, cada núcleo
Xcore™ está formado por diferentes hilos Xcore, estos, según el microchip,
pueden estar almacenados en una cantidad de 4, 6, 8, 10, 12, 16 o 32 hilos Xcore
Información del microcontrolador utilizado
- 48 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
por bloque o núcleo, y después cada micro puede tener uno, dos o cuatro bloques
de familias Xcore™. En la Figura 27 se ve un núcleo o bloque Xcore™ de 8 hilos
Xcore. Para mejorar el rendimiento de estos hilos, cada Xcore incluye soporte
para operadores MAC, CRC y otros operadores DSP.
Cada hilo Xcore, es independiente del resto, son procesadores en paralelo,
capaces de funcionar sin problemas al mismo tiempo. El Xtime tiene un papel
muy importante en este momento, ya que es el encargado de que cada hilo Xcore
tenga una capacidad de respuesta en tiempo real.
Pero al mismo tiempo, tienen un sistema unificado de memoria, y pueden
pasarse información entre ellos. Los núcleos Xcore están “dormidos” mientras
que no exista una necesidad de utilización, por lo que se les despertará cuando el
código necesite de su funcionamiento para procesar alguna información. En el
caso de que tuviéramos un equipo muy sensible a la energía, o se quisiera una
precisión aun mayor, existen diferentes Xcore USB, como se puede ver en la
Figura 28, que combinan las características del Xcore ya nombradas con estos
núcleos Xcore USB, abordando aplicaciones más exigentes, incluyendo
periféricos de alto rendimiento, múltiples canales de audio USB, modos de espera,
o sueño profundo para aplicaciones sensibles a la energía.
Estos módulos Xcore USB, al comunicarse directamente con uno de los
núcleos Xcore™ del microprocesador, pueden transmitir toda la información
necesaria a todos los hilos Xcore que necesiten su utilización. Pero solamente se
pueden unir a núcleos Xcore™ con 8, 10, 12 o 16 hilos Xcore.
Información del microcontrolador utilizado
- 49 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Figura 28: Dos núcleos Xcore™ conectados a un núcleo Xcore USB
Otras características importantes que se tienen en cuenta de estos
microcontroladores, son:
Las entradas del micro responden mucho más rápido, por lo que se podrán
realizar tareas de audio a gran velocidad.
Se pueden añadir bloques de seguridad, e incluso contraseñas, para
garantizar que el código está protegido.
El tiempo de respuesta es más rápido que otros procesadores. Como se ve
en la Figura 29, el tiempo de respuesta de cada Xcore es independiente
del número de entradas. Al tener este micro una arquitectura en paralelo.
La arquitectura de los núcleos, hace que los hilos estén estrechamente
relacionados con los puertos I/O. Data transfiere los datos directamente
entre los núcleos y los puertos I/O.
Información del microcontrolador utilizado
- 50 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Figura 29: Tiempo de respuesta de un hilo Xcore
La característica representada en la Figura 29 es de las más importantes para
este proyecto, ya que como se ha hallado en la Ecuación 8, se dispone de muy
poco tiempo entre las diferentes muestras de audio.
Según la propia página de Xmos, este tipo de microchips son ideales para
equipos de sonido de alta gama, proporcionando comunicaciones en tiempo real, y
pudiendo hacer cambios de control al dispositivo en tiempo real. Se usan en
aplicaciones de sistemas de audio profesional, equipos de audio multicanal, y otra
gran cantidad de equipos que manejan el audio. En general, para cualquier tipo de
producto de audio digital.
Aparte, este microchip, por su modulador de ancho de pulso, flexible a causa
de los bloques de XSOFTip, Xcore se puede utilizar también para motores. Y
gracias a su rápida respuesta, y trabajo de núcleos paralelos, se encuentra en gran
cantidad de sistemas robóticos.
Como resumen, y como conclusión final, después de la lectura de toda la
información ofrecida de los microcontroladores de Xmos, se decidió utilizar uno
de estos microcontroladores para la realización de este proyecto. En la Figura 30
se ve como es un microcontrolador de un bloque Xcore™ con 8 hilos Xcore.
Información del microcontrolador utilizado
- 51 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Figura 30: Microcontrolador con un núcleo Xcore™ y 8 hilos Xcore
El microchip con el que se trabaja en este proyecto es exactamente el mismo
representado en la Figura 30, el microcontrolador “XS1-L8A-64” de 500MIPS,
microcontrolador con un solo núcleo Xcore™ y de 8 hilos lógicos Xcore.
Información del microcontrolador utilizado
- 52 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
4.2 SOFTWARE DEL AUDIO
Este tipo de microprocesadores usan una estructura de software de audio muy
especial, ya que como se explicará a continuación, dispone de varias
características, por las que se usan los diferentes hilos Xcore. Estas características
se basan en la comunicación continuada de los diferentes hilos, para establecer
una buena comunicación entre los módulos de tratamiento de la señal.
Figura 31: Estructura de bloques del software del audio
En la Figura 31, se ve la estructura de bloques general usada por los
microcontroladores de audio de Xmos, para el microcontrolador que se usará en
este proyecto, dicha estructura se simplifica un poco, ya que no tienen
entrada/salida MIDI. Pero el esquema es muy similar.
Información del microcontrolador utilizado
- 53 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Comentar que este esquema es válido tanto para la recepción de datos a través
del puerto USB, la posterior modificación de dichos datos de audio y salida hacia
unos altavoces, como para la recepción de datos del exterior (lo que sería a través
de un micrófono, o algún aparato similar), el tratamiento de dicha señal y salida a
través del puerto USB.
Para este proyecto se utilizara la comunicación USB-altavoces, utilizando
como altavoces unos auriculares de música estéreo.
Como se ve en la Figura 31, la interfaz USB del microchip es controlada por el
dispositivo XMOS USB (correspondiendo con el modulo USB XUD de la figura).
Dicha interfaz está relacionada muy estrechamente con otros tres módulos:
Endpoint(): este módulo controla las tareas de enumeración/configuración
del dispositivo USB
Endpoint Buffer: este módulo envía/recibe paquetes de datos de audio de
la biblioteca XUD de los CHANNELS (canales) de XC (lenguaje de
programación del microchip) y manda a la memoria del módulo Buffer.
Decoupler: este módulo lee/escribe paquetes a/desde el módulo Buffer, a
través de su memoria, y envía/recibe las muestras de los CHANNELS de
los componentes de audio de XC del software.
La frecuencia de muestreo a la que trabaja el microcontrolador está establecida
en 44,1 KHz, aunque se puede cambiar y modificar hasta un máximo de 48 KHz,
siempre y cuando tanto la entrada como la salida de audio estén habilitadas para
esta frecuencia de muestreo y se hayan realizado los pertinentes cambios en las
características del micro.
Información del microcontrolador utilizado
- 54 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
A continuación se profundizará un poco más en el funcionamiento de los tres
módulos comentados con anterioridad.
Endpoint(0): Management and Control
Este módulo controla las tareas de gestión del dispositivo USB, sus funciones
se pueden dividir en enumeración, reset, configuración de audio y actualización
de firmware.
Cuando el HOST (anfitrión, será el dispositivo externo que nos mande la señal
de audio, en el caso de este proyecto, el ordenador, que nos enviará las muestras
de la señal de audio) envía un paquete a “Endpoint(0)”, primero el módulo XUD
examina el paquete (mandando las correspondientes órdenes, como se explicará
más adelante, en el caso de que sea necesario un reset, por cambio de parámetros,
o por algún error, este módulo lo ejecuta), y después “Endpoint(0)” inspecciona el
paquete, y lo envía a uno de los siguientes subsistemas:
La interfaz “Audio class” (Aplication mode)
La interfaz “DFU”
o Start/Enumeración:
Esta función del “Endpoint(0)” se ejecuta cuando el dispositivo se une
directamente a un Host.
Cuando se ejecuta esta conexión, el dispositivo dispone de la información de la
frecuencia de la señal de audio con la que se va a trabajar, por lo tanto, se
conectara al modo “Aplication mode” cuando la frecuencia de muestreo de la
señal de audio es la misma que la frecuencia de muestreo del microcontrolador.
Por el contrario, si hay algún cambio en algún parámetro de trabajo del micro, se
recibirá un mensaje especial para conectarse en DFU, y desde esta interfaz, se
pueden realizar algunos cambios en los parámetros de arranque del dispositivo.
Información del microcontrolador utilizado
- 55 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
o Reset (si recibe esta solicitud, pueden ocurrir tres casos):
Dependiendo del estado DFU, el dispositivo puede ser que esté
conectado en modo DFU y necesita algún cambio en los parámetros de
arranque.
Se envía un mensaje al “audio driver” para alertar de un inminente
reset. En este momento la reproducción se detiene, y se espera a que se
reinicie el dispositivo.
Se llama al módulo “XUD” para realizar un reset del USB
o Configuración de audio (dispone de dos modificaciones, los ajustes de
frecuencia, y el control de volumen):
Ajuste de la frecuencia de muestreo: cuando el Host solicita un cambio
de la frecuencia de muestreo, se envía un comando a “Endpoint(0)”, y
el dispositivo inicia un reset para una autoconfiguración a la nueva
frecuencia de muestreo. Cuando el dispositivo se reinicia, ya se ha
registrado la nueva frecuencia de muestreo.
Control de volumen: cuando el Host solicita un cambio de volumen, se
envía una solicitud de cambio de volumen al interfaz de audio a través
de “Endpoint(0)”. El volumen será modificado a través del módulo
“Decoupler” o a través del módulo “Mixer component” (si se está
utilizando).
Audio endpoints (compuesto por el módulo “Endpoint buffer” y el
módulo “Decoupler”).
Endpoint Buffer:
Debe responder a las librerías de XUD, por lo tanto, solo recibe y transmite
buffers, que son pasados a este módulo a través de la memoria compartida de
“Decoupler”. Este módulo también es responsable de leer el puerto “counter”
(contador) siempre y cuando haya algún puerto conectado al “master clock” (reloj
maestro manejado por el Xtime del núcleo Xcore).
Información del microcontrolador utilizado
- 56 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Decoupler:
El desacoplador suministra al módulo “Buffer” las protecciones para
transmitir/recibir datos desde el Host. Este módulo también determina el tamaño
de cada paquete de audio enviado al Host, por lo tanto, comparando de nuevo la
igualdad de la frecuencia de muestreo para el tratamiento de la señal, con la
frecuencia de los paquetes del USB.
4.3 USB AUDIO 2.0 REFERENCE DESIGN (XS1-L1)
Con el software de audio descrito en el Apartado 4.2, hay dos dispositivos, el
“XS1-L1” y el “XS1-L2”. El usado para este proyecto es el XS1-L1, así que, a
continuación de detallará el funcionamiento del software más detalladamente
centrándose en el dispositivo XS1-L1.
Figura 32: Software dispositivo XS1-L1
Información del microcontrolador utilizado
- 57 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
La Figura 32 es el esquema usado como unión entre los módulos “Buffer”,
“Decoupler” y “XUD” del dispositivo utilizado para el proyecto. Los datos se
pueden transmitir de dos maneras, desde un dispositivo al Host (donde el
microcontrolador recogería las señales de audio de un dispositivo externo, como
un micrófono), o del Host a la maquina (que en este caso, sería la recepción de la
música desde el ordenador hacia nuestro dispositivo de audio).
Cuando los datos van del dispositivo al Host:
El módulo “Decoupler” recibe las muestras del módulo “Audio” y las
manda al FIFO. Este FIFO se divide en paquetes cuando los datos se
introducen en él.
Cuando el módulo “Buffer” ya ha enviado un buffer, y necesita otro buffer
para enviar al módulo “XUD”, en este momento se envía una señal a
“Decoupler”.
Después de esta señal del módulo “Buffer”, “Decoupler” pasa el siguiente
paquete de la FIFO a “Buffer”, y envía una señal al módulo “XUD”, para
decir que el módulo “Buffer” ya puede enviar un paquete.
Cuando “Buffer” ha enviado este buffer, se regresa al segundo paso
descrito, y así sucesivamente.
Cuando los datos van del Host a la maquina:
El módulo “Decoupler” pasa un puntero a “Buffer” que señala dentro de
los datos del FIFO, y al módulo “XUD”, y le dice que “Buffer” está listo
para recibir datos.
El módulo “Buffer” entonces lee un paquete del puerto USB dentro de la
información del FIFO, y envía una señal al módulo “Decoupler” para
decirle que el paquete fue leído.
Al recibir esta señal, “Decoupler” actualiza el puntero del FIFO y
proporciona un nuevo puntero a “Buffer” para recibir más información.
Por la petición del módulo “Audio”, el “Decoupler” envía las muestras de
audio mediante la lectura de las muestras del FIFO.
Información del microcontrolador utilizado
- 58 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Es importante destacar la interacción entre el “Decoupler” y el “Audio”. Ya
que el módulo “Decoupler” debe satisfacer los requisitos de tiempo del audio del
sistema (establecidos por el xTime del xCore™) para poder enviar/recibir
muestras. Para conseguir este acuerdo, se introduce un controlador de interrupción
“interrupt handler” (que se explicará más adelante con más detalle).
Generalmente, se puede decir que el sistema de audio envía una palabra sobre
un canal a “Decoupler” para solicitar el inicio de la transferencia de muestras
(utilizando la función “outuint()”, que también se explicará más adelante ).
La primera acción de este controlador, es devolver una palabra reconociendo la
petición, en el caso de que haya habido un cambio en la frecuencia de muestreo,
se enviará una señal de control, (el sistema de audio utiliza la función “testct()”
para comprobar este caso).
Una vez que todo está correcto, empieza la transferencia de datos, primero el
sistema de audio transfiere las muestras destinadas para el Host, después
“Decoupler” envía las muestras procedentes del Host al dispositivo.
Esta transferencia siempre se hace con el control de las variables de
contabilizador de tamaño (en el caso de este microprocesador, serían las variables:
NUM_USB_CHAN_OUT y la variable NUM_USB_CHAN_IN). Esto quiere
decir, que si el dispositivo dispone de 10 puertos de salida, y 8 de entrada, 10
muestras serán enviadas desde el “Decoupler” y 8 recibidas en cada interrupción.
Información del microcontrolador utilizado
- 59 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Figura 33: Software XS1-L1 con DSP
El dispositivo “USB Audio Desing” está formado por los bloques nombrados y
explicados con anterioridad, y un bloque de almacenamiento temporal de datos,
este bloque se encuentra entre el “Decoupler” y el módulo de salida de datos de
audio, como se ve en la Figura 33, es el llamado “DSP”.
El bloque de ejecución DSP está basado en la correcta mezcla de la música que
proviene del USB y los datos del buffer.
Este módulo se aplica a los dos canales recogidos desde el Host, por lo que hay
que tenerlo en cuenta cuando se aplique un filtro solamente a uno de los dos
canales, o solo se modifique una de las dos señales, ya que esto podría afectar al
“handshake” que se necesita realizar para su correcto funcionamiento.
Su funcionamiento es sencillo, el hilo de audio emite una palabra para indicar
que está listo para recibir/mandar muestras, y el hilo de hablar responde con una
de las siguientes dos opciones:
Con una señal de control, para indicar el cambio de la frecuencia de
muestreo.
Información del microcontrolador utilizado
- 60 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Con una palabra handshake (apretón de manos), que es la palabra de
apoyo para indicar que los datos de audio son normales, o están
modificados correctamente.
El hilo de audio a continuación envía una muestra por cada canal de entrada, y
recibe una muestra por cada canal de salida antes de realizar las operaciones de
I/O con los puertos.
Como el DSP se encuentra entre “Decoupler” y “Audio”, las muestras en cada
momento tienen que ser iguales entre ambos módulos para conectarse entre ellos.
En ese momento, se pide el movimiento de los datos, si es aceptada la solicitud
de enviar/recibir los datos de audio, esta solicitud pasa a “Decoupler”. A
continuación, si se cumple el protocolo de enlace de “handshake” de “Decoupler”,
la solicitud pasa de nuevo a “Audio”. Las muestras, a este punto pasan como se
hayan requerido al inicio (se recuerda, que el hilo hablar, puede responder
diciendo que se necesita un cambio de frecuencia), pasando una muestra por canal
a través del “Buffer”. El DSP se aplica a las muestras cuando se reciben de
“Decoupler”.
En el módulo DSP será donde se realizará todo el código para el tratamiento de
la señal.
En resumen, todo este proceso, se puede considerar como un único hilo de
mezclador de audio digital, el cual coge las muestras de salida de audio del
módulo “Decoupler” (outgoing, o muestras de salida del ordenador a través del
USB) y las muestras de audio del módulo “Audio driver” (incoming, o muestras
de entrada a nuestro dispositivo). En este momento de aplica una modificación de
volumen a cada canal, si fue solicitada, y pasan las muestras del “incoming audio”
al “Decoupler” y las muestras del “outgoing audio” al módulo “audio driver”.
El mezclador puede recoger los inputs (entradas) de:
Los outputs (salidas) del USB proveniente del Host (las muestras
provenientes del “Decoupler”).
Los inputs provenientes de un dispositivo de audio (estas muestras
provienen del módulo “Audio driver”).
Información del microcontrolador utilizado
- 61 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Después de la mezcla de canales, y tratamiento de la señal, se crean los
productos finales, que pueden tener dos tipos diferentes de salidas:
Los inputs del USB al Host (estas muestras son enviadas al “Decoupler”).
Los outputs al dispositivo de audio (estas muestras son enviadas al módulo
“Audio driver”).
Por último, cabe destacar la importancia del “the main program”, ya que, no
solo tiene una declaración de todos los puertos usados en el diseño, sino que una
de sus principales funciones es declarar los “channels” y poder ejecutar los
subprocesos necesarios en paralelo (los diferentes hilos xCore que se necesite
usar).
4.4 CONOCIMIENTOS IMPORTANTES PARA LA
IMPLANTACIÓN DE CÓDIGO
Por la flexibilidad de este microcontrolador, se puede modificar cualquier parte
del software a excepción de la biblioteca XUD. Además de modificar, también se
pueden crear nuevas funciones y cambiar las características del micro. Por esta
razón, conviene mencionar el funcionamiento de varias funciones ya incorporadas
en el micro, y de diferentes variables que usa este microprocesador.
Salida de datos:
Un pequeño ejemplo para comprender como se realiza la salida de datos en
este micro:
# include <xs1.h> out port p = XS1_PORT_1A ; int main ( void ) p <: 1; p <: 0;
Información del microcontrolador utilizado
- 62 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
La declaración:
out port p = XS1_PORT_1A;
declara un puerto de salida llamado p, que manda bit a bit la información al puerto
1A.
La declaración:
p<:1
emite el valor 1 para el puerto p, causando en la salida del puerto el
correspondiente cambio de tensión. El puerto mantiene dicho valor hasta la
ejecución de la siguiente orden:
p<:0
En este momento se emite el valor 0 para el puerto p, causando que la salida
del puerto se quede sin tensión. En la Figura 34 se ve el cambio producido.
Figura 34: Salida del puerto XS1_PORT_1ª
Recogida de datos:
Para comprenderlo mejor, se comenzará con un ejemplo, y se explicará:
# include <xs1.h> in port inP = XS1_PORT_4A ; out port outP = XS1_PORT_1A ; int main ( void ) int x; while (1) inP :> x; if (x > 9) outP <: 1; else outP <: 0;
Información del microcontrolador utilizado
- 63 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
La declaración del código:
in port inP = XS1_PORT_4A ;
declara un puerto de entrada llamado inP, de 4-bit y está identificado con el
puerto 4A del micro.
El código
inP :> x ;
transfiere las muestras del puerto inP a la variable x. En la Figura 35 se muestra
un ejemplo de la salida del código de este programa:
Figura 35: Ejemplo de salida del XS1_PORT_4ª
Comunicación Channel
La variable chanend proporciona una conexión síncrona, una conexión punto a
punto entre dos hilos de datos, sobre el cual se irán comunicando los datos.
Un sencillo ejemplo, es el siguiente:
# include <platform .h> on stdcore [0] : out port tx = XS1_PORT_1A ; on stdcore [1] : in port keys = XS1_PORT_8B ; void uartTX ( chanend dataIn , port tx) char data ; while (1) dataIn :> data ; transmitByte (tx , data );
Información del microcontrolador utilizado
- 64 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
void kbListen ( chanend c, port keys ) char data ; while (1) data = waitForKeyStroke ( keys ); c <: data ; int main ( void ) chan c; par on stdcore [0] : uartTX (c, tx); // Thread X on stdcore [1] : kbListen (c, keys ); // Thread Y
Las declaraciones:
void uartTX (chanend dataIn, port tx)
void kbListen (chanend c, port keys)
declaran uartTX y kbListen a ser funciones que cogen la parte final del channel y
un puerto como sus argumentos.
En la función main, la declaración
chan c ;
declara un channel. Este channel es usado en dos hilos, donde con este programa
crea una relación entre el hilo X en XCore 0, y el hilo Y en el XCore 1.
Void AudioStreamStart (void)
Se llama a esta función cuando se inicia el flujo de audio que va desde el
dispositivo al Host.
Void AudioStreamStop (void)
Se llama a esta función cuando se para el flujo de audio que va desde el
dispositivo al Host.
Información del microcontrolador utilizado
- 65 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Void output (chanend c, unsigned val)
Manda fuera el valor de un unsigned int al extreme de un chanend.
c: extremo del chanend a transmitir el dato de entrada.
val: valor del output.
Unsigned inuit (chanend c)
Recoge un unsigned int del extremo de un chanend.
Si la palabra siguiente en los datos del chanend es una muestra de control, se
aplica una excepción.
c: extremo del chanend a recoger el dato de entrada.
Returns: el valor recibido.
Void outct (chanend c, unsigned char val)
Pone una muestra de control del final de un chanend.
c: extremo del chanend a transmitir el dato de entrada.
val: el valor de la muestra de control output.
Unsigned char inct (chanend c)
Coge una muestra de control al final de un chanend.
Si el siguiente byte en el chanend no es una muestra de control, se aplica una
excepción, sino, regresa el valor de la muestra de control.
c: extremo del chanend a recoger el dato de entrada.
Returns: la señal de control recibida.
Información del microcontrolador utilizado
- 66 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Int testct (chanend c)
Comprueba si el byte siguiente en un extremo del chanend es una muestra de
control.
La muestra no se borrará del chanend y todavía está disponible para el input.
c: el extremo del canal para realizar la prueba “on”.
Returns: 1 si el siguiente byte es una muestra de control,0 cualquier otra
cosa.
Void chkct (chanend c, unsigned char val)
Comprueba una señal de control de un valor dado.
Si el siguiente byte en el chanend es una muestra de control que coincide con
el valor esperado, entonces este es introducido y descartado. De lo contrario, se
produce una excepción.
val: valor esperado de la muestra de control.
Void giveSamplesToDevice (chanend c, const int samples[])
Deja las muestras en el Host, con esta función dentro del hilo DSP se pueden
dejar las muestras de audio, ya tratadas y modificadas en el Host, muestras
provenientes del dispositivo que este introduciendo las muestras al micro.
c: canal para transmitir los datos de salida.
samples[]: vector con las dos muestras de cada canal.
Void getSamplesFromDevice (chanend c, int samples[])
Coge las muestras del dispositivo que está introduciendo la señal de audio en el
microchip.
c: canal a través del cual se cogen las muestras de audio.
samples[]: vector donde se almacenan las dos muestras de audio, una por
cada canal.
Información del microcontrolador utilizado
- 67 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Void giveSamplesToHost (chanend c, const int samples[])
Deja las muestras en el dispositivo de audio, con esta función dentro del hilo
DSP se pueden dejar las muestras de audio, ya tratadas y modificadas en el
dispositivo de audio, lo que sería el reproductor. Las muestras provienen del Host,
o en el caso de este proyecto, del ordenador.
c: canal para transmitir los datos de salida.
samples[]: vector con las dos muestras de cada canal.
Void getSamplesFromHost (chanend c, int samples[])
Coge las muestras del Host que está introduciendo la señal de audio en el
microchip.
c: canal a través del cual se cogen las muestras de audio.
samples[]: vector donde se almacenan las dos muestras de audio, una por
cada canal.
La descripción de las anteriores variables, y funciones es la descripción de las
variables y funciones de más importancia para el proyecto, pero para la
realización del mismo, se han usado otras muchas más funciones del
microcontrolador. Además se ha tenido que programar todo en lenguaje XC, un
lenguaje similar al C, pero con algunas modificaciones.
Para poder completar la comprensión de todas las funciones que utiliza el
micro, y como se programa en XC, se puede encontrar toda la información en los
siguientes archivos obtenidos de la página de Xmos:
Información del microcontrolador utilizado
- 68 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Adding-DSP-to-the-USB-Audio-2.0-L1-Reference-Design
USB-Audio-Software-Design-Guide(X6299C)
XC-Programming-Guide(X1009A)
De estos archivos es de donde se ha sacado el resumen de las partes más
importantes de toda la información escrita anteriormente.
Implantación del código en el microcontrolador
- 69 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Capítulo 5 IMPLANTACIÓN DEL CÓDIGO EN EL
MICROCONTROLADOR
La implantación del código en el microcontrolador supuso la comprensión de
cómo trabajaban los diferentes módulos explicados en el Capítulo 4, y como se
accede a ellos a través de la programación.
Para esta comprensión fue de gran ayuda la lectura de:
Adding-DSP-to-the-USB-Audio-2.0-L1-Reference-Design
Ya que gracias a ese documento, con un pequeño ejemplo, explican cómo se
puede crear el módulo DSP, como se cogen las muestras y en que variables son
guardadas.
5.1 PROBLEMAS CON LOS NÚMEROS DECIMALES
Con los controladores no se puede trabajar directamente con números
fraccionarios, ya que cuando se realizan cálculos matemáticos, estos números son
más complejos de operar.
Esto es debido a que cuando se realicen las multiplicaciones en el microchip,
no solo se tiene que multiplicar números enteros, sino que también se multiplican
números fraccionarios, es decir, se multiplicaran todo tipo de números racionales.
Esto causa un problema originalmente, ya que hay que tener cuidado cuando se
multiplican los números fraccionarios, ya que estos necesitan la coma en
diferentes posiciones, dependiendo de cómo sean los multiplicandos.
Implantación del código en el microcontrolador
- 70 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Para resolver este problema, se plantean dos soluciones:
Coma Flotante:
En inglés “floating point”, este tipo de representación se usa para representar y
multiplicar números reales muy grandes o muy pequeños.
El problema, es que un valor real puede ser inmensamente grande, y la coma
flotante lo que permite es poder representar una cantidad limitada de cifras de este
número. Para resolver esta situación, la coma flotante coge la parte más
representativa de los números, y por esta razón, según en qué aplicaciones se use
este método, dicha cantidad de números limitada es más que suficiente, por lo
tanto, se llega a la conclusión de que las aproximaciones que pueda acarrear este
método son despreciables.
Este método está basado en la forma de representación de los números con
notación científica, donde los números son representados de tal forma que están
formados por un coeficiente (a), una base (b, que para este tipo de representación,
b = 2, ya que se trabaja en digital) y un exponente (e), como se expresa en la
Ecuación 9.
Ecuación 9: Representación de números en notación científica
La mejor forma de comprender como se representan los números con coma
flotante, es un ejemplo. En el siguiente ejemplo, se dispone de la representación
de dos números en coma flotante:
Signo Exponente Parte significativa del número
1 100011 011101100 = 0xC6EC
0 011011 111001101 = 0x37CD
Tabla 1: Ejemplo de la estructura de la coma flotante
Implantación del código en el microcontrolador
- 71 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
El signo, como se ve en la Tabla 1, es representado por el bit que está más a la
izquierda. Representado con un 0 si el número es positivo, o con un 1 si el número
es negativo.
El exponente representa cuanto se tiene que trasladar la coma, ya sea hacia la
izquierda, o hacia la derecha. En el ejemplo de la Tabla 1, como el exponente es
de 6 bits, se dispone de una cantidad de movimientos de:
Números
De estos 64 números, corresponderán 31 desplazamientos de dígitos binarios
hacia la izquierda, y 32 desplazamientos hacia la derecha.
De esta forma, se multiplican los números de forma binaria, y al final, se
obtiene un numero con un signo, un exponente y una parte significativa, y de esta
forma, es muy sencillo saber qué cifras son dígitos enteros, y cuales decimales, ya
que el número del exponente simboliza cuantas cifras decimales se tiene que
correr la coma, como se ve en la Ecuación 10.
Ecuación 10: Ejemplo de dos números en coma flotante
Este método suele necesitar una gran capacidad de procesamiento, a causa de
esto, para este proyecto no se puede utilizar esta forma de representación de
números para su multiplicación, ya que el tiempo del que se dispone de operación
entre muestras es muy pequeño, y el microcontroador no dispone de hardware
específico para realizar estas operaciones.
Implantación del código en el microcontrolador
- 72 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Coma fija:
La representación en coma fija consiste en establecer una cantidad fija de
dígitos para la parte entera, y otra para la parte fraccionaria.
Lo que se consigue con este método, es que un número fraccionario, es el
mismo que ese mismo número fraccionario multiplicado por un número fijo (un
factor de escala) y dividido después por ese mismo número.
Un ejemplo se ve a continuación:
Como se observa en el ejemplo, con esta manera se trunca el número, y nos
quedamos solamente con la parte decimal más importante, por lo tanto, según para
que se quiera emplear este método, se tendrá que utilizar un factor de escala
mayor o menor.
Este es el método que finalmente se optó por implantar en los coeficientes del
filtro FIR obtenidos a través de Matlab, ya que, partiendo de la Ecuación 5, y
usando un factor de escala de 1000 como ejemplo:
Implantación del código en el microcontrolador
- 73 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Por lo tanto, los coeficientes del filtro FIR obtenidos con Matlab, se
multiplicaron con un factor de escala de , obteniéndose los siguientes valores
para usar como coeficientes en la programación del microchip:
Para una k = 51:
k = 51 Paso Alto
Coef. Matlab Coef.con factor Paso Bajo
Coef. Matlab Coef.con factor
0,00041582 6976 -0,000462836 -7766
0,000304345 5106 -3,39E-04 -5684
0,000176472 2960 -0,000196425 -3296
-1,16E-05 -195 1,29E-05 216
-0,000309418 -5192 0,000344403 5778
-0,000769582 -12912 0,000856597 14371
-0,001444279 -24231 0,00160758 26970
-0,002381903 -39962 0,00265122 44480
-0,003623567 -60794 0,004033276 67667
-0,005199838 -87239 0,005787773 97102
-0,007127892 -119587 0,007933828 133107
-0,009409263 -157862 0,010473149 175710
-0,012028352 -201803 0,013388374 224619
-0,014951805 -250850 0,016642376 279212
-0,018128827 -304152 0,020178618 338541
-0,021492459 -360584 0,023922569 401354
-0,024961761 -418789 0,027784138 466140
-0,028444829 -477226 0,03166103 531183
-0,03184249 -534229 0,035442857 594632
-0,035052499 -588084 0,039015815 654576
-0,037974026 -637099 0,042267674 709133
-0,040512199 -679682 0,045092833 756532
-0,042582455 -714416 0,047397169 795192
-0,044114482 -740119 0,049102419 823801
-0,045055529 -755907 0,050149868 841375
0,955099582 16023911 0,050503126 847301
-0,045055529 -755907 0,050149868 841375
-0,044114482 -740119 0,049102419 823801
-0,042582455 -714416 0,047397169 795192
-0,040512199 -679682 0,045092833 756532
-0,037974026 -637099 0,042267674 709133
-0,035052499 -588084 0,039015815 654576
-0,03184249 -534229 0,035442857 594632
Implantación del código en el microcontrolador
- 74 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
-0,028444829 -477226 0,03166103 531183
-0,024961761 -418789 0,027784138 466140
-0,021492459 -360584 0,023922569 401354
-0,018128827 -304152 0,020178618 338541
-0,014951805 -250850 0,016642376 279212
-0,012028352 -201803 0,013388374 224619
-0,009409263 -157862 0,010473149 175710
-0,007127892 -119587 0,007933828 133107
-0,005199838 -87239 0,005787773 97102
-0,003623567 -60794 0,004033276 67667
-0,002381903 -39962 0,00265122 44480
-0,001444279 -24231 0,00160758 26970
-0,000769582 -12912 8,57E-04 14371
-0,000309418 -5192 0,000344403 5778
-1,16E-05 -195 1,29E-05 216
0,000176472 2960 -0,000196425 -3296
0,000304345 5106 -0,000338757 -5684
0,00041582 6976 -0,000462836 -7766
Tabla 2: Coeficientes para k=51
Para una k = 13:
K = 13 Paso Alto
Coef. Matlab Coef.con factor Paso Bajo
Coef. Matlab Coef.con factor
-0,003212252 -53893 0,010989036 184365
-0,0059121 -99189 0,02022515 339321
-0,013352406 -224017 0,045678256 766353
-0,023826225 -399738 0,081508935 1367493
-0,034559248 -579808 0,118226344 1983508
-0,04254724 -713825 0,145553072 2441975
0,957676681 16067148 0,155638413 2611179
-0,04254724 -713825 0,145553072 2441975
-0,034559248 -579808 0,118226344 1983508
-0,023826225 -399738 0,081508935 1367493
-0,013352406 -224017 0,045678256 766353
-0,0059121 -99189 0,02022515 339321
-0,003212252 -53893 0,010989036 184365
Tabla 3: Coeficientes para k=13
Implantación del código en el microcontrolador
- 75 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Finalmente, en el proyecto se usaron los coeficientes para k = 13, a causa de
los problemas que se comentaran en la sección 5.2.
5.2 PROBLEMAS CON LIMITACIONES POR LA CANTIDAD DE
OPERACIONES
Uno de los problemas más grandes para este tipo de proyectos, es que todo
proyecto relacionado con el audio necesita de microchips bastante potentes, ya
que como se ve en la Ecuación 8, el tiempo de operaciones entre diversas
muestras es de , por lo que se dispone de un tiempo muy limitado para
poder realizar todo el código.
El microchip USB Audio 2.0 Reference Design es un microchip creado para su
uso en audio, por lo tanto, ya por esta causa es mucho más potente que una gran
cantidad de microchips.
La potencia de este microchip se ve ampliada gracias a la utilización de los
diferentes hilos xCore y los diferentes núcleos en paralelo, comunicados
internamente entre ellos.
Esta limitación es la más importante para este proyecto, ya que, por esta
limitación se debe optimizar el código lo máximo posible, reduciendo la cantidad
de operaciones.
Se necesita optimizar al máximo porque el proyecto consta de cuatro filtros
FIR, cuyo resultado es la suma de gran cantidad de productos. Por lo tanto, a más
sumandos tengan los filtros FIR, más tiempo necesitará el microcontrolador para
dar la muestra filtrada.
Inicialmente, con Matlab se han sacado los coeficientes para un filtro paso bajo
y otro paso alto con una cantidad de 51 sumandos.
Se recuerda la Figura 16 para comprender la utilización de los 4 filtros en la
Figura 36.
Implantación del código en el microcontrolador
- 76 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Figura 36: Diagrama de bloques del crossfeed
Como se ve en la Figura 36, se tiene que usar 4 filtros FIR para generar el
crossfeed, por lo tanto, se multiplicará por 4 la cantidad de operaciones que tenga
que hacer el micro por cada muestra recibida.
Después de varias pruebas, se llegó a la conclusión de que 51 coeficientes son
muchos coeficientes para este microcontrolador de un solo núcleo, por lo tanto,
para poder estar dentro del tiempo máximo entre muestras, se tuvo que reducir la
cantidad de coeficientes a 13 coeficientes.
Se realizó una comprobación en Matlab, para comprobar teóricamente si el
cambio de 51 a 13 coeficientes era significativo en la idea crossfeed, para saber si
una misma señal experimentaba un cambio grande o no.
Implantación del código en el microcontrolador
- 77 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Gráficamente las señales obtenidas fueron muy parecidas, por lo que se pasó a
comprobar experimentalmente, si esta naturalización de la música aún continuaba,
o por el contrario, se escuchaba muy diferente.
Después de aplicar varias canciones, se dedujo que el efecto crossfeed aún se
mantenía con 13 coeficientes, pero que se reducía un poco la naturalización de la
señal al reducir tan significativamente los coeficientes, ya que de esa forma, el
filtro FIR dejaba de ser tan exacto.
Implantación del código en el microcontrolador
- 78 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Conclusiones
- 79 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Capítulo 6 CONCLUSIONES
El objetivo de este proyecto era mejorar la idea de crossfeed que se tiene hasta
ahora, consiguiendo una naturalización mucho mejor de una señal de audio,
usando medios digitales.
Inicialmente, se buscó información sobre el proyecto, y se implanto en Matlab
el código necesario para poder sacar conclusiones experimentales sobre el
crossfeed.
Se implantaron los diferentes filtros de los diferentes estudios previos para
sacar conclusiones sobre ellos, como se explica en detalle en el subcapítulo 3.5.
Gracias a esta información y a estudios recientes sobre el tema, se llegaron a
las siguientes conclusiones como características del filtro crossfeed:
Frecuencia de corte de los filtros FIR a 700Hz
Retraso entre los canales de audio de 320μs
Diferencia de 5,25 dB entre el filtro paso bajo, y paso alto
Valor de los coeficientes del filtro FIR, obtenidos con Matlab
De esta forma se cumplieron dos de los tres objetivos principales del proyecto,
pero aun no el más importante.
Después de tener estas características del filtro crossfeed, se comenzó a
trabajar con el microchip de XMOS, consiguiendo un primer contacto con la
implantación de un filtro ejemplo gracias a la documentación leída sobre el
microchip.
Una vez que se tuvo un manejo sobre cómo trabaja el microchip de XMOS, se
procedió a la implantación de nuestro código, surgiendo dos problemas
importantes:
Problemas con los números decimales de los coeficientes del filtro FIR,
problema resuelto usando coma fija.
Conclusiones
- 80 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Problemas con la limitación en la cantidad de operaciones, por el poco
tiempo de operación disponible entre muestras. A causa de esto, se
tuvieron que reducir los coeficientes del filtro FIR a 13.
Una vez resueltos estos dos problemas, se hizo que si tocabas un botón, se
aplicara el filtro crossfeed, y si tocabas otro se desactivara dicho filtro.
De esta manera se completó el objetivo principal del proyecto, y se comprobó
que usando este filtro se mejoraba bastante la naturalización de la música estéreo.
Y gracias a poder aplicar el filtro si se quiere, por los botones, se comprueba
experimentalmente, que aunque solamente se usen 13 coeficientes, estos son
suficientes para sentir el efecto deseado.
Futuros desarrollos
- 81 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Capítulo 7 FUTUROS DESARROLLOS
En este capítulo se describirán futuros desarrollos que podrían tener como base
este proyecto.
7.1 CROSSFEED EN ORDENADORES
Hoy día casi todo el trabajo se realiza a través de los ordenadores, el implantar
una aplicación que pueda realizar las funciones de crossfeed y pueda ofrecer esta
opción cuando se escuche música no incrementaría mucho el precio del
ordenador, y con la importancia que tiene hoy día la música, sería un añadido
bastante valorado.
Sobre todo para los fanáticos de la música, o gente que tenga que trabajar con
ella.
7.2 CROSSFEED EN MÓVILES
A día de hoy, los móviles se han convertido en los reproductores de música
portátil, gran parte de la población cuando se traslada de casa a algún lado
escucha música a través del móvil.
La implantación de este filtro en una aplicación móvil, para Android, Apple o
alguna de las distintas plataformas para móvil, para poder poner la opción
crossfeed al reproductor de música es muy interesante, ya que el desarrollo de la
importancia de la música en los móviles está en continuo crecimiento.
Futuros desarrollos
- 82 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Según un estudio de la industria musical en dispositivos móviles [ANGEL13]:
Existen 1,3 billones de descargas digitales vía móviles.
El 56% de las descargas de música a nivel mundial fueron vía dispositivos
móviles.
Las expectativas reflejan un incremento del 41% en los ingresos
musicales móviles para el 2014.
Las aplicaciones musicales son las segundas con mayor crecimiento entre
todos los dispositivos, teniendo en cuenta que en 2012 se descargaron 73
billones de aplicaciones.
Por lo tanto, esta importancia, incrementa las posibilidades para este posible
futuro proyecto, y lo convierte en muy atractivo, ya que el filtro crossfeed añadiría
una buena ventaja competitiva a los móviles a los que se le incorpore.
7.3 CROSSFEED EN LOS AURICULARES
Los auriculares, a día de hoy, se han convertido en una moda, y por esta causa
es una buena idea explotar todo lo relacionado con ello, para conseguir una
mejora, y así diferentes ventajas competitivas.
Estos aparatos han seguido una evolución en continuo crecimiento desde el
2003 [BEAT12], llegando a nuestros días con auriculares mejorados, incluso que se
comunican inalámbricamente con el reproductor de música.
A causa de esto, implantar un filtro crossfeed en los auriculares, donde puedas
activar o desactivar dicho filtro con un botón tiene bastante atractivo. Se proponen
dos formas para abordar esta idea:
Con un aparato externo, que se pueda comunicar entre el dispositivo de
música y el reproductor. Este aparato estaría formado por el microchip con
el filtro crossfeed y un convertidor D/A que mejore la conversión de la
música.
Futuros desarrollos
- 83 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
En uno de los dos auriculares, ya que de esta manera, nos da igual el
aparato reproductor de música, siempre podremos optar a tener una música
más natural, con un sonido envolvente gracias al filtro incorporado en los
auriculares.
7.4 MEJORAS
Para los tres posibles futuros desarrollos propuestos con anterioridad, se
propondrían con una mejora frente al filtro creado en este proyecto.
Dicha mejora consiste en realizar el filtro crossfeed con un microchip un poco
más potente, se propone el XS1-L8-128 de XMOS, ya que este micro es igual que
el usado en este proyecto, de 8 hilos xCore, pero de dos núcleos en lugar de uno.
A parte, también se aconsejaría mejorar el convertidor D/A, en las mejoras
propuestas en el 7.1 y 7.2. Para la propuesta 7.3 no haría falta, ya que de ello se
encargaría el auricular.
- 84 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Bibliografía
- 85 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
BIBLIOGRAFÍA
[1] [EIER__] http://www.meier-audio.homepage.t-online.de/
[2] [TAV__] http://www.tav.net/audio/espacializacion_psicoacustica.pdf
[3] [BEN61] http://www.aes.org/
[4] [LINK71] http://www.linkwitzlab.com/headphone-xfeed.htm
[5] [MOY01] http://headwize.com/projects/cmoy1_prj.htm
[6] [MEIE__] http://headwize.com/projects/meier_prj.htm
[7] [Mikh05] http://bs2b.sourceforge.net/
[8] [XMOS13] http://www.xmos.com/
[9] [ANGEL13] http://blog.muwom.com/infografia-sobre-el-estado-de-la-industria-
musical-movil/
[10] [BEAT12] http://www.ticbeat.com/tecnologias/historia-auriculares-infografia/
Bibliografía
- 86 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Bibliografía
- 87 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Parte II ESTUDIO
ECONÓMICO
Bibliografía
- 88 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Estudio económico
- 89 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Capítulo 1 ESTUDIO ECONÓMICO
En esta parte, se realizarán diferentes justificaciones para la realización del
proyecto Amplificador de auriculares con interfaz USB y “crossfeed” digital.
Viabilidad del proyecto
En el mundo de la reproducción de audio, la perfección para conseguir un
sonido mucho más puro está cobrando mucha importancia, lo que esto conlleva
conseguir un sonido más natural y envolvente.
Esta razón hace bastante viable el proyecto, sobre todo en aparatos móviles,
donde está evolucionando muy positivamente todo lo relacionado con la música,
utilizándose tanto para trabajar, o estudiar.
Este proyecto cogería su fuerza en este punto, ya que se podría implantar
fácilmente en diferentes aparatos para mejorar las prestaciones de éstos a un coste
bajo, ofreciendo una mejora de las características de los aparatos bastante elevada.
Rentabilidad del proyecto
El proyecto es muy rentable, ya que después de la ejecución de este proyecto,
solamente habría que realizar algunas mejoras, si se quiere tener mucha más
calidad, pero incluso tal cual está ahora ya se podría realizar un estudio para
implantarlo en algún aparato de música.
La rentabilidad de este proyecto se basa en la cantidad de unidades que se
vendan, ya que lo bueno de este filtro, es que se puedan incrementar en los
aparatos de música, ya sean reproductores, o altavoces, y no incremente mucho su
precio en comparación con el precio original.
También se puede usar en amplificadores de auriculares.
Estudio económico
- 90 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Interés económico del proyecto
Como se ha explicado en el Capítulo 7, con el futuro desarrollo propuesto en el
punto 7.2, el interés económico a día de hoy es bastante elevado, ya que la
evolución de la importancia de la música está cogiendo mucha fuerza.
Además que vendría bien aprovechar la moda que hay ahora por la
reproducción de música de calidad, ya que ahora, es uno de los mejores momentos
para lanzar este producto.
Lo bueno de este proyecto, es que no se habla mucho de la idea crossfeed, por
lo que ayudada por la moda de la reproducción de música de calidad, podría coger
mucha fuerza en muy poco tiempo, y crear una necesidad de naturalización de la
música en la sociedad con bastante velocidad.
Estudio económico
- 91 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Parte III MANUAL DE
USUARIO
Estudio económico
- 92 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Manual de usuario
- 93 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Capítulo 1 MANUAL DE USUARIO
La utilización de este michochip es muy sencilla, solamente se necesita de:
Un aparato reproductor de música con acceso USB.
Auriculares
El microchip ya está programado, y con todas las modificaciones necesarias
para su uso directo. Solamente se tienen que seguir unos sencillos pasos para
poder escuchar la música a través del microchip, y poder aplicar el filtro crossfeed
si queremos.
Se conectará la tarjeta del micro al aparato reproductor a través del puerto
USB
Se dará alimentación a la tarjeta
Se debe establecer en el aparato reproductor (normalmente un ordenador)
que la salida de audio la reproduzca a través de nuestro microchip.
Se conectan los auriculares en la salida de audio de la tarjeta del
microchip.
Se comienza con la reproducción de música.
Si durante la reproducción de música se presiona el pulsador A, se
escuchará la música en forma estéreo.
Si durante la reproducción de música se presiona el pulsador B, se
escuchará la música aplicándole el filtro crossfeed.
Manual de usuario
- 94 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Manual de usuario
- 95 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Parte IV CÓDIGO FUENTE
Manual de usuario
- 96 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Código fuente
- 97 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Capítulo 1 CÓDIGO FUENTE
A continuación se detallará el código fuente utilizado para este proyecto, con
sus diferentes funciones.
1.1 MAIN
#include <syscall.h>
#include <platform.h>
#include <xs1.h>
#include <xclib.h>
#include <print.h>
#include "xud.h" /* XMOS USB Device Layer defines
and functions */
#include "usb.h" /* Defines from the USB 2.0
Specification */
#include "devicedefines.h" /* Device specific defines */
#include "endpoint0.h"
#include "usb_buffer.h"
#include "port32A.h"
#include "usb_midi.h"
#include "dsp.h"
void audio(chanend c_mix_out, chanend?, chanend?) ;
/* Audio I/O */
on stdcore[0] : buffered out port:32 p_i2s_dac[1] = XS1_PORT_1D;
on stdcore[0] : buffered in port:32 p_i2s_adc[1] = XS1_PORT_1I;
on stdcore[0] : buffered out port:32 p_lrclk = XS1_PORT_1C;
on stdcore[0] : buffered out port:32 p_bclk = XS1_PORT_1A;
on stdcore[0] : port p_mclk = XS1_PORT_1M;
on stdcore[0] : buffered out port:32 p_spdif_tx = XS1_PORT_1L;
on stdcore[0] :in port p_for_mclk_count = XS1_PORT_1E;
/* USB Reset port */
on stdcore[0] : out port p_usb_rst = XS1_PORT_32A;
on stdcore[0] : in port p_button_a = XS1_PORT_1J;
on stdcore[0] : in port p_button_b = XS1_PORT_1K;
Código fuente
- 98 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
/* Clock blocks */
on stdcore[0] : clock clk_midi = XS1_CLKBLK_1;
on stdcore[0] : clock clk_audio_mclk = XS1_CLKBLK_2;
/* Master clock */
on stdcore[0] : clock clk_audio_bclk = XS1_CLKBLK_3;
/* Bit clock */
on stdcore[0] : clock clk = XS1_CLKBLK_4;
/* USB clock */
on stdcore[0] : clock clk_mst_spd = XS1_CLKBLK_5;
void decouple(chanend, chanend?, chanend?);
void mixer(chanend, chanend, chanend );
void spdif_transmitter(buffered out port:32 p, chanend c_in);
/* Endpoint type tables for XUD */
XUD_EpType epTypeTableOut[NUM_EP_OUT] = XUD_EPTYPE_CTL |
XUD_STATUS_ENABLE,
XUD_EPTYPE_ISO,
XUD_EPTYPE_BUL,
XUD_EPTYPE_DIS;
XUD_EpType epTypeTableIn[NUM_EP_IN] = XUD_EPTYPE_CTL |
XUD_STATUS_ENABLE,
XUD_EPTYPE_ISO,
XUD_EPTYPE_ISO,
XUD_EPTYPE_BUL,
XUD_EPTYPE_BUL;
#define FAST_MODE 0
void thread_speed()
#if (FAST_MODE)
set_thread_fast_mode_on();
#else
set_thread_fast_mode_off();
#endif
int main()
chan c_sof;
chan c_xud_out[NUM_EP_OUT]; /* Endpoint channels
for XUD */
chan c_xud_in[NUM_EP_IN];
chan c_aud_ctl;
chan c_aud_out;
chan c_mix_out;
#ifdef MIDI
chan c_midi;
#endif
set_port_clock(p_for_mclk_count, clk_audio_mclk);
par
Código fuente
- 99 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
/* USB Interface */
#if (AUDIO_CLASS==2)
XUD_Manager(c_xud_out, NUM_EP_OUT, c_xud_in, NUM_EP_IN,
c_sof, epTypeTableOut, epTypeTableIn, p_usb_rst,
clk, 1, XUD_SPEED_HS, null);
#else
XUD_Manager(c_xud_out, NUM_EP_OUT, c_xud_in, NUM_EP_IN,
c_sof, epTypeTableOut, epTypeTableIn, p_usb_rst,
clk, 1, XUD_SPEED_FS, null);
#endif
/* Endpoint 0 */
thread_speed();
Endpoint0( c_xud_out[0], c_xud_in[0], c_aud_ctl, null,
null);
/* Buffer / EP Man */
thread_speed();
buffer(c_xud_out[1], c_xud_in[2], c_xud_in[1],
c_xud_out[2], c_xud_in[3], c_xud_in[4],
c_sof, c_aud_ctl, p_for_mclk_count);
thread_speed();
decouple(c_mix_out,
#ifdef MIDI
c_midi,
#else
null,
#endif
null);
set_thread_fast_mode_on();
dsp(c_mix_out, c_aud_out, p_button_a, p_button_b);
thread_speed();
/* Audio I/O (pars additional S/PDIF TX thread) */
audio(c_aud_out, null, null);
#ifdef MIDI
thread_speed();
usb_midi(p_midi_rx, p_midi_tx, clk_midi, c_midi, 0);
#endif
Código fuente
- 100 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
return 0;
1.2 VOID DSP ( )
En este modulo, como ya se ha explicado, es donde se realizará todo el código
para el filtro crossfeed. Las variables p_button_a y p_button_b, son las variables
de dos botones externos, para aplicar o no el filtro crossfeed.
El “.h” de esta función será el que se muestra a continuación.
void dsp ( chanend c_aud_in, chanend c_aud_out, in port
p_button_a, in port p_button_b);
El código será el siguiente:
// Hilo DSP.
#include <xs1.h>
#include "devicedefines.h"
#include <print.h>
#include "fir.h"
#pragma unsafe arrays
void giveSamplesToHost(chanend c, const int samples[])
#pragma loop unroll
for (int i=0;i<NUM_USB_CHAN_IN;i++)
int sample;
sample = samples[i + NUM_USB_CHAN_OUT];
outuint(c,sample);
int statei[13];
int stated[13];
extern int coeff[];
extern int coeffa[];
int filtro[2]; //0=PB,1=PA
int stateia[13];
int stateda[13];
Código fuente
- 101 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
int salidad;
int salidai;
int a=13326616; // -2dB=0.7943; 0.7943*2^24=13326616
int b=7281483; // -2+5.25 = -7.25dB
#pragma unsafe arrays
static void getSamplesFromHost(chanend c, int samples[], int n)
if(n)
for (int i=0;i<NUM_USB_CHAN_OUT;i++)
samples[i] = inuint(c);
else
#pragma loop unroll
for (int i=0;i<NUM_USB_CHAN_OUT;i++)
/* Coge las muestras desde decouple */
samples[i] = inuint(c);
if(i)
//1=derecho
filtro[0]= fir(samples[i], coeff, stated, 13);
filtro[1]= fir(samples[i], coeffa, stateda, 13);
filtro[0]= (b*filtro[0]) >> 24
filtro[1]= (a*filtro[1]) >> 24;
salidad = samples[i] + filtro[1] +statei[12];
samples[i] = salidad;
else
//0=izquierdo
filtro1[0]= fir(samples[i], coeff, statei, 13);
filtro1[1]=fir(samples[i], coeffa, stateia, 13);
filtro1[0]= (b*filtro1[0]) >> 24;
filtro1[1]= (a*filtro1[1]) >> 24;
salidai = samples[i] + filtro[1] +stated[12];
samples[i] = salidai;
#pragma unsafe arrays
void giveSamplesToDevice(chanend c, const int samples[])
#pragma loop unroll
for (int i=0;i<NUM_USB_CHAN_OUT;i++)
int sample;
sample = samples[i];
outuint(c, sample);
#pragma unsafe arrays
void getSamplesFromDevice(chanend c, int samples[])
#pragma loop unroll
Código fuente
- 102 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
for (int i=0;i<NUM_USB_CHAN_IN;i++)
int sample;
sample = inuint(c);
samples[NUM_USB_CHAN_OUT+i] = sample;
void dsp ( chanend c_aud_in, chanend c_aud_out, in port
p_button_a, in port p_button_b)
unsigned button_a_val = 1, normal = 1;
unsigned button_b_val = 1;
int cross;
int samples[NUM_USB_CHAN_OUT + NUM_USB_CHAN_IN + MAX_MIX_COUNT
+ 1];
for (int i=0;i<NUM_USB_CHAN_OUT + NUM_USB_CHAN_IN +
MAX_MIX_COUNT;i++)
samples[i] = 0;
while (1)
inuint(c_aud_out);
/* Request data from decouple thread */
outuint(c_aud_in, 0);
if (testct(c_aud_in))
int sampFreq;
// sample frequency change.
inct(c_aud_in);
sampFreq = inuint(c_aud_in);
// Send SF change to audio thread.
outct(c_aud_out, XS1_CT_END);
outuint(c_aud_out, sampFreq);
// wait for handshake and send back
chkct(c_aud_out, XS1_CT_END);
outct(c_aud_in, XS1_CT_END);
else
inuint(c_aud_in);
outuint(c_aud_out, 0);
giveSamplesToDevice(c_aud_out, samples);
getSamplesFromDevice(c_aud_out, samples);
giveSamplesToHost(c_aud_in, samples);
getSamplesFromHost(c_aud_in, samples, cross);
p_button_a :> button_a_val;
p_button_b :> button_b_val;
if(button_a_val == 0)
cross=1;
Código fuente
- 103 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
else
if(button_b_val == 0)
cross=0;
1.3 INT FIR ( )
#include <print.h>
#include <xs1.h>
#include "fir.h"
#pragma unsafe arrays
int fir(int xn, int coeffs[], int state[], int ELEMENTS)
unsigned int ynl;
int ynh;
ynl = (1<<23); // 0.5, for rounding, could be
triangular noise
ynh = 0;
for(int j=ELEMENTS-1; j!=0; j--)
state[j] = state[j-1];
ynh, ynl = macs(coeffs[j], state[j], ynh, ynl);
state[0] = xn;
ynh, ynl = macs(coeffs[0], xn, ynh, ynl);
if (sext(ynh,24) == ynh)
ynh = (ynh << 8) | (((unsigned) ynl) >> 24);
else if (ynh < 0)
ynh = 0x80000000;
else
ynh = 0x7fffffff;
return ynh;
Código fuente
- 104 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
1.4 COEFFS.XC
int coeff[13] = 184365, 339321, 766353, 1367493, 1983508,
2441975, 2611179, 2441975, 1983508, 1367493, 766353, 339321,
184365;
int coeffa[13] = -53892, -99188, -224016, -399737, -579807, -
713824, 16067148, -713824, -579807, -399737, -224016, -99188, -
53892;
Código fuente
- 105 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Parte V ANEXO
Código fuente
- 106 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Anexo
- 107 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Capítulo 1 ANEXO
En esta sección se añadirá el hardware del microcontrolador XS1-L1,
documentación recogida directamente de la página de XMOS. El anexo es
importante para comprender más a fondo el microcontrolador.
USB Audio 2.0 Reference Design, XS1-L1 EditionHardware Manual
Version 1.0
Publication Date: 2009/10/05
Copyright © 2009 XMOS Ltd. All Rights Reserved.
USB Audio 2.0 Reference Design, XS1-L1 Edition Hardware Manual (1.0) 2/18
1 Introduction
The USB Audio 2.0 Reference Design, XS1-L1 Edition (hereafter "the board") is ahardware reference design for a USB audio interface using the XMOS XS1-L1 event-driven processor. It contains a single XS1-L1 device enabling implementation of acomplete USB 2.0 high-speed device compliant with release 2.0 of the audio USBdevice class.
A block diagram of the design is shown below:
XMOSXS1-L1-128
XSYSDebug
24 bit 192kHzStereo Audio
CODEC
CS4270
USBTranscieverUSB3318
13MHzOscillator
1MbitFLASH
USBSeries B
Receptacle
3.3V LDO
1.8V LDO
1.0V DC-DC
4.3V LDO
UserLEDs
Push-ButtonSwitches Audio Master
Clock Oscillator
Produces24.576MHz
or11.2896MHz
PassiveLPF
PassiveLPF
3.5mmStereo
TRS Jack
3.5mmStereo
TRS Jack
OpticalDigital AudioTransmitter
USBHigh Speed
480Mb/s ULPI
+5V VBus
CODEC Analogue
Supply
L1 CoreSupply
+3V3D
I2S
Analog Out1Vrms at Full Scale
Analog In2Vrms for Full Scale
SPIJTAG
Resync
MCLK
S/PDIF
The XS1-L1 event-driven processor communicates with the USB host via a ULPI USBtransceiver at the 480Mb/s high-speed rate. The XS1-L1 controls the streaming ofaudio data over the USB connection and direct I2S interface to the audio CODEC. Multi-ple additional functions (e.g. Mixers/DSP etc.) can be implemented by modificationsto the standard software.
Some key features of the board are listed below:
• USB bus-powered. No external power supply required
• Streams bit perfect audio data up to 24-bit @ 192kHz
• Supports standard sample rates - 44.1kHz, 48kHz, 88.2kHz, 96kHz, 192kHz
www.xmos.com
USB Audio 2.0 Reference Design, XS1-L1 Edition Hardware Manual (1.0) 3/18
• USB endpoints use the asynchronous synchronisation mode to allow an externallow jitter audio master clock to be used
• Optical digital audio output (S/PDIF)
• Stereo line level audio input and output
• XMOS XSYS debug header for easy programming/debug from the host using theXMOS XTAG2 debug adapter
• Two push-button switches and two LEDs for programmable use
The diagram below shows the layout of the main components on the board:
H
B
M
N
B
J
L
I
I
K C
F
E
E
DH
G
A
A XS1-L1 Device H Push-Button Switch
B USB Connector/Transceiver I Green User LED
C Audio CODEC J USB Power LED
D Optical digital output K Audio Clocking
E 3.5mm Stereo Jack L 1V0 Core Supply
F SPI FLASH M 4V3 Analogue Supply
G XSYS Debug Interface N 13MHz Oscillator
The rest of this document provides a detailed description of each of the main circuitcomponents.
www.xmos.com
USB Audio 2.0 Reference Design, XS1-L1 Edition Hardware Manual (1.0) 4/18
2 XS1-L1 Device [A]
The board is based on a single XS1-L1 device in a 128 pin TQFP package.
The XS1-L1 consists of a single XCore, which comprises an event-driven multi-threaded processor with tightly integrated general purpose I/O pins and 64 KBytesof on-chip RAM and 8 KBytes of OTP (One Time Programmable) memory.
The processor has time-aware ports that are directly connected to the I/O pins.Examples of how to write software that interfaces over these ports is provided inProgramming XC on XMOS Devices.
2.1 Clocking
A discrete 13MHz oscillator is used to feed the XS1-L1 reference clock input andalso the USB3318 USB transceiver. The L1 has the MODE1 and MODE0 pins wiredto ground which sets the internal XS1-L1 PLL multiplication factor to 30.75. Thisresults in a core clock frequency of 399.75MHz and an I/O reference clock frequencyof 99.9375MHz.
2.2 Reset
A supply voltage supervisor connected to the 1V0 core supply is used to provide areset to the L1. This ensures the device will be reset at power on and also providespredictable behaviour under brownout conditions. The device can also be reset overthe XSYS debug interface.
2.3 Boot
The boot mode of the device is set by the MODE3 and MODE2 pins which areconnected together on the board. With MODE3 and MODE2 both high (default), thedevice will boot from the 1Mb SPI FLASH on the board. With MODE3 and MODE2 bothlow, the device will not boot from SPI FLASH allowing boot instead via JTAG over theXSYS debug link.
Without anything connected to the XSYS interface, the board will boot from SPI FLASH.With the XTAG2 connected to the XSYS interface, the host can control the boot modeof the device by way of the TRST_N line.
www.xmos.com
USB Audio 2.0 Reference Design, XS1-L1 Edition Hardware Manual (1.0) 5/18
3 USB Connector and Transceiver [B]
The board uses a standard USB series B receptacle as its USB connector. Thehigh-speed USB signals are connected to an SMSC® USB3318 USB transceiver whichprovides a ULPI connection to the XS1-L1.
On power-up, a pulldown resistor holds the transceiver in reset until the XS1-L1 isready to begin accepting USB traffic. The USB transceiver reset pin is connected tobit zero of port 32A so this can be controlled by software.
The transceiver uses the 13MHz clock provided by a discrete oscillator on the boardwhich doubles as the reference clock for the XS1-L1.
The I/O pins for the USB transceiver are mapped to ports on the XS1-L processor asdescribed in the port map shown later in this document.
4 Audio CODEC [C]
The board uses a 24 bit, 192kHz stereo audio CODEC (Cirrus Logic® CS4270).
The CODEC is configured to operate in stand-alone mode meaning that no serialconfiguration interface is required. The digital audio interface is set to I2S mode withall clocks being inputs (slave mode).
The CODEC has three internal modes depending on the sampling rate used. Thesechange the oversampling ratio used internally in the CODEC. The three modes areshown below:
CODEC mode CODEC sample rate range
Single speed 4-54kHz
Double speed 50-108kHz
Quad speed 100-216kHz
In stand-alone mode, the CODEC automatically determines which mode to operate inbased on the input clock rates.
The internal master clock dividers are set using the MDIV pins. MDIV1 is tied lowand MDIV2 is controlled by the L1 on bit 2 of port 32A.
With MDIV2 low, the master clock must be 256Fs in single speed mode, 128Fs indouble speed mode and 64Fs in quad speed mode. This allows an 11.2896MHzmaster clock to be used for sample rates of 44.1, 88.2 and 176.4kHz.
With MDIV2 high, the master clock must be 512Fs in single speed mode, 256Fsin double speed mode and 128Fs in quad speed mode. This allows a 24.576MHzmaster clock to be used for sample rates of 48, 96 and 192kHz.
www.xmos.com
USB Audio 2.0 Reference Design, XS1-L1 Edition Hardware Manual (1.0) 6/18
These master clock frequencies were chosen due to the easy availability of crystalsat these frequencies.
The reset pin on the CODEC is mapped to bit 1 of port 32A on the processor.
4.1 Audio IO
Two 3.5mm Tip Ring Sleeve (TRS) audio jacks are provided for stereo audio inputand output. The layout of the audio jacks is displayed below:
OUT
IN
A simple passive ac-coupling and low pass filter circuit is used on input and output.The circuit is configured so that the audio output will produce approximately 1VRMS(0dBV) for a digital full scale signal. Due to the output coupling capacitors, theoutput impedance falls with frequency and is approximately 1kΩ @ 35Hz falling to576Ω @ 1kHz.
The input circuit contains an attenuator such that a 2VRMS (+6dBV) signal will producea full scale digital output. The input impedance is approximately 8kΩ.
www.xmos.com
USB Audio 2.0 Reference Design, XS1-L1 Edition Hardware Manual (1.0) 7/18
5 Optical digital output [D]
An optical digital audio transmitter is used to provide a digital audio output inIEC60958 consumer mode (S/PDIF) format. The S/PDIF signal is generated from a1-bit port on the processor as defined in the port map. The data stream from the L1is reclocked using the external master clock to synchronise the data into the audioclock domain. This is achieved using a simple external D-type flip-flop.
6 SPI Flash Memory [F]
The board contains a 1Mbit FLASH memory device which is connected via a standardSerial Peripheral Interface (SPI).
The FLASH is connected to four 1-bit ports as shown in the port map. These are thestandard ports the processor will try to boot from in boot from SPI mode.
Three of these ports are shared with I2S digital audio signals therefore the FLASHcannot be accessed at the same time as digital audio is playing. When accessing theSPI FLASH, the CODEC is held in reset and it ignores the three inputs shared with SPIsignals. When digital audio is playing, the FLASH is deselected by holding its chipselect (slave select) line inactive. In this mode, the FLASH will ignore other inputsignals and set its output high impedance therefore it does not affect the sharedsignals. The slave select signal is only active when booting the device therefore andis held inactive while audio is playing.
The XMOS development tools include the XFLASH utility for programming compiledprograms into the flash memory. Software may also access the FLASH memory atrun-time by interfacing with the above ports. Note that, as mentioned, this can nothappen simultaneously with audio IO.
www.xmos.com
USB Audio 2.0 Reference Design, XS1-L1 Edition Hardware Manual (1.0) 8/18
7 XSYS Interface [G]
A standard XMOS XSYS interface is provided to allow host debug of the board viaJTAG.
An XTAG2 USB debug adapter can be plugged into this port to allow running/debug-ging code, programming the FLASH memory and selection of boot mode. A 20-wayIDC header is used as the physical connector and the pinout of this is shown below:
Signal Pin Description
TRST_N 3 JTAG Test Reset. Active low.
TMS 7 JTAG Test Mode Select.
TCK 9 JTAG Test Clock.
TD1 5 JTAG Test Data. From debug adapter to XS1-L1.
TD2 13 JTAG Test Data. From XS1-L1 to debug adapter.
SRST_N 15 System Reset. Active low. Resets XS1-L1 device.
DEBUG 11 XS1-L1 DEBUG Interrupt line.
GND 4, 8, 12, 16, 20 Ground.
NC 1, 2, 6, 10, 14, 17, 18, 19 These pins are not connected.
On power on, the XS1-L1 boots from the on-board flash memory. With the XTAG2connected, the XS1-L1 can be reset and then booted from a program on the host PC.
www.xmos.com
USB Audio 2.0 Reference Design, XS1-L1 Edition Hardware Manual (1.0) 9/18
8 Push-Button Switches [H]
The board provides two push-button switches whose states can be sampled at anytime by software. The layout of these switches is shown below:
A
B
The switches are connected to two 1-bit ports, the mapping of which can be seen inthe port map.
The port will go logic low when the button is pressed.
9 User LEDs [I]
The board provides two user LEDs that can be driven by software. The layout ofthese LEDs is shown below:
B
A
The LEDs are connected to two bits of port 32A as shown in the port map. Settingthe relevant bit high will turn the LED on.
www.xmos.com
USB Audio 2.0 Reference Design, XS1-L1 Edition Hardware Manual (1.0) 10/18
10 Power
The board is a high-power bus-powered USB device. This means all the power usedby the board is derived from the nominally +5V VBus supply from the USB connectorand that the device will use more than 100mA from the VBus line when configured.The board will use approximately 150mA when fully configured and operating.
Simple Low drop out (LDO) linear regulators are used to generate the global 3.3Vsupply and the 1.8V supply required by the USB3318 USB transceiver.
A low noise LDO regulator is used to generate the analogue supply for the AudioCODEC. The CODEC offers higher audio performance at higher supply voltages so thevoltage for this supply is set at 4.3V. This allows some headroom between the 4.5Vminimum VBus voltage and the approx 100mV dropout of the LDO + RC pre-filter.
A low cost buck switching regulator is used to generate the 1.0V core supply forthe XS1-L1. A ferrite bead is used on the +5V VBus input to prevent switching noisepropagating down the USB cable.
When the board is correctly connected to a USB source the USB Power LED is illumi-nated.
www.xmos.com
USB Audio 2.0 Reference Design, XS1-L1 Edition Hardware Manual (1.0) 11/18
11 Audio Clocking [K]
The audio USB endpoints are configured in asynchronous mode. This means that theboard acts as the audio clock master and the host as the slave. This has the benefitthat a simple crystal oscillator can be used to generate the audio master clock whichtypically results in lower jitter and consequently higher quality audio.
Two crystal oscillators are used on the board to support the two standard sample ratebase frequencies (44.1 and 48kHz). The crystal oscillators are built using discretecomponents for low cost and easy availability however standard canned oscillatorscould also be used. The oscillator design is a simple Pierce oscillator using anunbuffered inverter as the amplifying component. The MCLK_SEL signal selects whichof the two oscillators is enabled, only one is enabled at any one time to avoid anyinterference from the unused clock.
The behaviour of this select signal is shown below:
MCLK_SEL Audio master clock frequency
0 11.2896MHz
1 24.576MHz
The audio master clock is connected to a 1-bit port of the XS1-L1 so that all of the I2Soutputs are synchronised with it. This also allows the S/PDIF output to be generatedfrom a buffered 1-bit port clocked by the audio master clock input.
The MCLK_SEL signal is mapped to bit 2 of port 32A on the processor as shown inthe port map.
www.xmos.com
USB Audio 2.0 Reference Design, XS1-L1 Edition Hardware Manual (1.0) 12/18
12 Test Points
The board provides 18 through-hole test points as defined in the table below:
Test Point Port Signal
1 P1I0 CODEC_ADC_DATA
2 P1D0 SPI_MOSI / CODEC_DAC_DATA
3 P1A0 SPI_MISO / CODEC_SCLK
4 P1C0 SPI_CLK / CODEC_LRCK
5 NA CODEC_MCLK
6 P32A2 MCLK_SEL
7 P32A1 CODEC_RST_N
8 NA GND
9 P1L0 SPDIF_TX
10 NA SPDIF_OUT
11 P32A6 XD55
12 P32A7 XD56
13 P32A8 XD57
14 P32A9 XD58
15 P32A10 XD61
16 NA 3V3
17 NA 5V
18 NA 4V3A
13 Printed Circuit Board
The PCB is a two layer design in a credit card form factor with dimensions of 86 x54mm. The mounting holes are 3.2mm in diameter.
www.xmos.com
USB Audio 2.0 Reference Design, XS1-L1 Edition Hardware Manual (1.0) 13/18
14 Port Map
The table below provides a full description of the port to signal mappings used onthe board.
Pin Port Processor
1b 4b 8b 32b
XD0 P1A0 SPI_MISO / CODEC_SCLK
XD1 P1B0 SPI_SS
XD10 P1C0 SPI_CLK / CODEC_LRCK
XD11 P1D0 SPI_MOSI / CODEC_DAC_DATA
XD12 P1E0 ULPI_STP
XD13 P1F0 ULPI_NXT
XD14 P4C0 P8B0
ULPI_DATA[0:7]
XD15 P4C1 P8B1
XD16 P4D0 P8B2
XD17 P4D1 P8B3
XD18 P4D2 P8B4
XD19 P4D3 P8B5
XD20 P4C2 P8B6
XD21 P4C3 P8B7
XD22 P1G0 ULPI_DIR
XD23 P1H0 ULPI_CLK
XD24 P1I0 CODEC_ADC_DATA
XD25 P1J0 SWITCH_A
XD34 P1K0 SWITCH_B
XD35 P1L0 SPDIF_TX
XD36 P1M0 MCLK_IN
XD49 P32A0 USB_PHY_RST_N
XD50 P32A1 CODEC_RST_N
XD51 P32A2 MCLK_SEL
XD52 P32A3 LED_A
XD53 P32A4 LED_B
XD55 P32A6 TESTPOINT
XD56 P32A7 TESTPOINT
XD57 P32A8 TESTPOINT
XD58 P32A9 TESTPOINT
XD61 P32A10 TESTPOINT
www.xmos.com
USB Audio 2.0 Reference Design, XS1-L1 Edition Hardware Manual (1.0) 14/18
15 Schematics
A
XC-6 USB AUDIO
SEPT 14 2009
TOP_LEVEL
11
A3
SHEET NAME
PROJECT NAME
REV
DATE
SIZE
OF
SHEET
Copyright (c) 2009 XMOS Ltd.
PTH_M3
MTH1
MTH2
PTH_M3
PTH_M3
MTH3
MTH4
PTH_M3
FM1
FM2
FM3
L1_128_USB
X0D55
X0D54
X0D53
X0D52
X0D51
X0D50
X0D36
X0D35
X0D25
X0D34
X0D24
X0D11
X0D10
X0D0
CLK
X0D63
X0D62
X0D61
X0D58
X0D57
X0D56
X0D66
X0D65
X0D64
1 BIT
PORTS
32 BIT
PORT TOTX147PL
J2
32 1GND
VCC
IN
KSC421J
SWA
1B
2B
2A
1A
10K
R3+3V3
R4
10K
+3V3
KSC421J
SWB
1B
2B
2A
1A
TP1
TP2
TP3
TP4
CLOCK_GEN
CLK_13M
MCLK_SEL
MCLK
MCLK_BUF1
MCLK_BUF2
CODEC
SDOUT
MDIV2
RST_N
SDIN
SCLK
LRCK
MCLK
NC7SZ175
U1
2456 13D CP
C_N
VCC Q
GND
DQ
C
+3V3
+3V3
+3V3
C1
100N
TP5
TP6
LEDB
GREEN
+3V3
R1
1K
100N
C2
+3V3
33R
R5
TP7
TP8
TP9
TP10
TP11
1K
R2
GREEN
LEDA
TP12
TP13
TP14
TP15
TP16
+3V3
TP17
+5V
+4V3A
TP18
SWITCHB
SWITCHB
NC
NC
NC
NC
NC
NC
NC
NC
SWITCHA
SWITCHA
SPDIF_OUT
SPDIF_MCLK
SPDIF_MCLK
DAC_DATA
DAC_DATA
CLK_13M
SCLK
SCLK
LRCK
LRCK
CODEC_RST_N
CODEC_RST_N
SPDIF_TX
SPDIF_TX
ADC_DATA
ADC_DATA
MCLK_SEL
MCLK_SEL
MCLK_SEL
MCLK_SEL
CODEC_MCLK
CODEC_MCLK
CODEC_MCLK
XCORE_MCLK
XCORE_MCLK
LEDA
LEDA
LEDB
LEDB
X0D66
X0D65
X0D64
X0D63
X0D62
X0D61
X0D58
X0D57
NC
X0D55
X0D56
www.xmos.com
USB Audio 2.0 Reference Design, XS1-L1 Edition Hardware Manual (1.0) 15/18
A
XC-6 USB AUDIO
SEPT 14 2009
11
L1_128_USB
SHEET NAME
PROJECT NAME
REV
DATE
SIZE
OF
SHEET
A2
Copyright (c) 2009 XMOS Ltd.
XS1_L1_128TQFP
U3
18
56
58
6362
61
21
55535251
42
25CLK
DEBUG
MODE0
MODE1
MODE2
MODE3
RST_N
TCK
TDI
TDO
TMS
TRST_N
RESERVED
CONFIG
+1V0
C7
1N
NCP303LSN09
U8
4
2 3
1
5CD
RST_OUT
GND
INPUT
NC
47K
R8
X0D50
X0D51
X0D52
X0D53
GREEND3
X0D54
X0D55
1K
R11
100N
C9
C10
100N
C11
100N
100N
C12
C13
100N
C14
100N
100N
C15
C16
100N
C17
100N
100N
C18
100N
C19
+3V3
+1V0
C20
100N
XS1_L1_128TQFP
U3
24
46
45
2219
2023
108
101
123
120
93797364
103
111
116
9992918880787166656057544341403917
129
3226151
4450
77746859492912
83
48
47
PLL_AGND
PLL_AVDD
VDD_83
VDD_12
VDD_29
VDD_49
VDD_59
VDD_68
VDD_74
VDD_77
VDDIO_50
VDDIO_44
VDDIO_1
VDDIO_15
VDDIO_26
VDDIO_32
GND_PAD
GND_17
GND_39
GND_40
GND_41
GND_43
GND_54
GND_57
GND_60
GND_65
GND_66
GND_71
GND_78
GND_80
GND_88
GND_91
GND_92
GND_99
GND_116
VDDIO_111
VDDIO_103
VDDIO_64
VDDIO_73
VDDIO_79
VDDIO_93
VDDIO_120
VDD_123
VDD_101
VDD_108
PCU_GATE
PCU_WAKE
PCU_VDD
PCU_VDDIO
OTP_VDDIO
OTP_VPP
PCU_CLK
POWER
4R7
R18+1V0 1U
C3
+3V3
+1V0
+3V3
+1V0
+3V3
XS1_L1_128TQFP
U3
67
112
114
117
119
121
122
124
125
127
33835333113119864959798100
75768182
697072102
104
105
109
8485868789949096106
107
110
113
115
118
126
128
257101416272830343637
X0D0
X0D1
X0D2
X0D3
X0D4
X0D5
X0D6
X0D7
X0D8
X0D9
X0D10
X0D11
X0D12
X0D13
X0D14
X0D15
X0D16
X0D17
X0D18
X0D19
X0D20
X0D21
X0D22
X0D23
X0D24
X0D25
X0D26
X0D27
X0D28
X0D29
X0D30
X0D31
X0D32
X0D33
X0D34
X0D36
X0D37
X0D38
X0D39
X0D40
X0D41
X0D42
X0D43
X0D49
X0D50
X0D51
X0D52
X0D53
X0D54
X0D55
X0D56
X0D57
X0D58
X0D61
X0D62
X0D63
X0D64
X0D65
X0D66
X0D67
X0D68
X0D69
X0D70
X0D35
IO
HEADER_RA
J4
2018
19
171
161412
11
13
153 5 7 9
2 4 6 8 10
+3V3
+5V
CLK
X0D0
X0D10
X0D11
X0D24
X0D34
1MBIT
AT25FS010
U4
162
5
48
3 7HOLD_N
WP_N
VCC
GND
SI
SO
SCK
CS_N
+3V3
+3V3
R12
10K
+3V3
+3V3 100N
C21
+5V
R9
47K
+3V3
X0D66
X0D65
X0D64
X0D63
X0D62
X0D61
X0D58
X0D57
X0D56
4U7
C4+5V
2U2
C26
+3V3
NCP699SN33
U6
451 3
2GND
EN
VIN
VOUT
NC
10K
R13
U7NCP1521B
451 3
2GND
EN
VIN
LX
FB
6K8
R7
330P
C6
L1
2U2
C8
10U
+1V0
100N
C22
X0D25
X0D35
X0D36
100N
C23
+3V3
U2USB3318
19
891011131415
17
21
12
1 7
22
23
16
2018
4 23 5 6
25
24
RBIAS
GND
DPDM
VBAT
VBUS
VDD33
NXT
STP
DATA0
REFCLK
RESETB
CPEN
ID
CLKOUT
VDD18
VDDIO
DATA1
DATA2
DATA3
DATA4
DATA5
DATA6
DATA7
DIR
DNP
R17
10N
C5
8K06
R6
+1V8
+3V3
C24
100N
USB_B
J3
64 521 3DP
VBUSDM
S1
GND
S2
100N
C25
NCP699SN18
U5
451 3
2GND
EN
VIN
VOUT
NC
2U2
C27
10K
R14
+1V8
+5V
1700mA
330R
FB1
+5V
1K
R10
TRST_N
TRST_N
TD2
TD2
TD1
TD1
TMS
TMS
TCK
TCK
NC
PHY_RST_N
PHY_RST_N
NCNC
NCNCNCNCNC
NC
NCNCNCNCNCNCNC
NCNC
NCNC
NC
NC
NCNC
ULPI_DATA0
ULPI_DATA0
ULPI_DIR
ULPI_DIR
NC
NC
ULPI_DATA7
ULPI_DATA7
ULPI_DATA6
ULPI_DATA6
ULPI_DATA5
ULPI_DATA5
ULPI_DATA4
ULPI_DATA4
ULPI_DATA3
ULPI_DATA3
ULPI_DATA2
ULPI_DATA2
ULPI_DATA1
ULPI_DATA1
NC
X0D1
X0D1
NC
NCNC
USB_DM
USB_DP
ULPI_NXT
ULPI_NXT
ULPI_STP
ULPI_STP
ULPI_CLK
ULPI_CLK
X0D0
X0D0
X0D10
X0D10
X0D11
X0D11
NCNC
CLK
CLK
CLK
SRST_N
SRST_N
SRST_N
DEBUG
DEBUG
NCNCNCNC
NC
NC
NC
NC
NCNCNCNC
XSYS2
SPI FLASH
USB_VBUS
USB PHY
ALL MODE PINS HAVE INTERNAL PULLUPS
MODE[3:2] = 11 ==> BOOT FROM SPI
MODE[1:0] = 00 ==> PLL_MULT = 30.75 ==> 13MHZ REFCLK
MODE[3:2] = 00 ==> BOOT FROM JTAG (DON'T BOOT)
www.xmos.com
USB Audio 2.0 Reference Design, XS1-L1 Edition Hardware Manual (1.0) 16/18
XC-6 USB AUDIO
SEPT 14 2009
CLOCK_GEN
11
AA3
SHEET NAME
PROJECT NAME
REV
DATE
SIZE
OF
SHEET
Copyright (c) 2009 XMOS Ltd.
+3V3
NC7WZU04
U10
34
NC7WZU04
U10
251
6
C30
100N
100N
C31
+3V3
+3V3
MCLK
Q1
BSS138
21
3D
G
SR23
10K
33P
C32
R19
2M2
R28
470R
C33
33P
Q2
BSS138
21
3D
G
SR24
10K
C34
33P
2M2
R20
X2
24M576
HC49US
33P
C35
BSS138
Q3
21
3D
G
S
10K
R25
11M2896
HC49US
X3
1K
R22
+3V3
MCLK_SEL
NC7SZ157
U11
2456 13I0
I1
SVCC Q
GND
0 1
U9
NC7SZU04
352
4
+3V3
13M
ABLS2
X1
2M2
R21
470R
R29
C36
33P
C37
33P
CLK_13M
1700mA
330R
FB2
MECH1
CRYSTAL_INSULATOR
R26
33R
NC7WZ17
U12
1
46 25
3A2
VCC
GND
Y1
Y2
A1
+3V3
33R
R27
MCLK_BUF1
MCLK_BUF2
C29
100N
1U
C28
CRYSTAL_INSULATOR
MECH2
24M576
24M576
11M2896
11M2896
CLK_13M
www.xmos.com
USB Audio 2.0 Reference Design, XS1-L1 Edition Hardware Manual (1.0) 17/18
A
XC-6 USB AUDIO
SEPT 14 2009CODEC
11
A3
SHEET NAME
PROJECT NAME
REV
DATE
SIZE
OF
SHEET
Copyright (c) 2009 XMOS Ltd.
C54
100N
C43
10U
+4V3A
100N
C55
+3V3
SDOUT
MDIV2
RST_N
SDIN
SCLK
LRCK
+3V3
10K
R37
C41
10U
10K
R35
2N2
C49
R36
10K
C50
2N2
R42
470R
10U
C42
C44
10U
R39
4K7
R32
3K3
C46
220P
3K3
R33
4K7
R40
470R
R41
220P
C45
10U
C39
10U
C40
C51
100N
100N
C52
47U
C48
+3V3
47K
R34
+4V3A
1R
R30
CS4270
U13
7 910
11
14
16
15
19
18
21
24
8522
23
17
20
6
1231
134 2LRCK
SCLK
MDIV2
SDIN
MCLK
MDIV1
DGND
AGND
VQ
AOUTB
AOUTA
VD
VLC
MUTEB_N
MUTEA_N
FILTP
VA
AINA
AINB
RST_N
I2S/LJ_N
M0
M1
SDOUT
MCLK
100P
C47
6K8
R31
2K7
R38
100N
C53
+4V3A
TPS73001
U14
5
24
16
3EN
OUT
IN
NR
GND
FB
2U2
C56
4U7
C38
+5V
SJ-3523-SMT
J5
32 1
J6
SJ-3523-SMT
32 1
NC
NC
MDIV PINS SELECT CLOCK RATIOS. SEE PAGE 23 OF DATASHEET.
I2S/LJ_N PULLED HIGH : I2S INTERFACE FORMAT.
M1 = 0 : NOT USED IN STAND ALONE SLAVE MODE
M0 = 0 : DE-EMPHASIS OFF
SDOUT PULLED LOW BY 47K - SLAVE MODE
CODEC DEFAULTS TO STAND ALONE MODE
4V3A LDO REGULATOR
VOUT = 1.225 * (1 + 6K8/2K7) = 4.31V
VREF = 1.225V
www.xmos.com
USB Audio 2.0 Reference Design, XS1-L1 Edition Hardware Manual (1.0) 18/18
16 Related Documents
The following documents provide more information on designing with the USB Audio2.0 Reference Design, XS1-L1 Edition:
• Programming XC on XMOS Devices: explains how to program XMOS event-drivenprocessor devices using the XC language.
• XCore XS1 Architecture Tutorial: provides an overview of the XS1 instructionset architecture.
• XS1 XSystem-L: provides an introduction on how to boot the XS1-L devices.
• XMOS Tools User Guide: explains how to use the XMOS Tools to program XMOSevent-driven processor devices.
The most up-to-date information on the board, including schematics and productdatasheets, is available from:
• http://www.xmos.com/usbaudio2/
Disclaimer
XMOS Ltd. is the owner or licensee of this design, code, or Information (collectively,the “Information”) and is providing it to you “AS IS” with no warranty of any kind,express or implied and shall have no liability in relation to its use. XMOS Ltd. makesno representation that the Information, or any particular implementation thereof, isor will be free from any claims of infringement and again, shall have no liability inrelation to any such claims.
www.xmos.com
Documento II.
Presupuesto
ÍNDICE DE LA MEMORIA
I
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Índice de la memoria
Capítulo 1 Mediciones ...................................................................................... 2
1.1 Hardware ......................................................................................................... 2
1.2 Software ............................................................................................................ 2
1.3 Mano de obra directa ...................................................................................... 3
Capítulo 2 Precios unitarios ............................................................................. 4
2.1 Precio de los componentes principales .......................................................... 4
2.2 Software ............................................................................................................ 4
2.3 Mano de obra directa ...................................................................................... 5
Capítulo 3 Sumas parciales .............................................................................. 6
3.1 Componentes principales ................................................................................ 6
3.2 Software ............................................................................................................ 7
3.3 Mano de obra directa ...................................................................................... 7
3.4 Costes indirectos .............................................................................................. 8
Capítulo 4 Presupuesto general ....................................................................... 9
ÍNDICE DE TABLAS
- 1 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Índice de tablas
Tabla 1: Hardware usados ....................................................................................... 2
Tabla 2: Sofware usados .......................................................................................... 2
Tabla 3: Horas utilizadas de mano de obra directa ................................................. 3
Tabla 4: Precio de los componentes utilizados ....................................................... 4
Tabla 5: Precio de los software usados ................................................................... 4
Tabla 6: Precio de las actividades de mano de obra directa .................................... 5
Tabla 7: Coste por los componentes principales ..................................................... 6
Tabla 8: Coste por los software usados ................................................................... 7
Tabla 9: Coste por la mano de obra directa ............................................................. 7
Tabla 10: Costes indirectos ..................................................................................... 8
Tabla 11: Presupuesto general del proyecto ............................................................ 9
Mediciones
- 2 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Capítulo 1 MEDICIONES
En este capítulo se detallaran las unidades de los componentes y los equipos
utilizados. Se nombraran los software usados, y la cantidad de horas que se
utilizaron de mano de obra directa.
1.1 HARDWARE
Componentes Cantidad Medida
Placa USB Audio 2.0 Reference Design 1 und
Cable de alimentación USB 1 und
Ordenador 1 und
Tabla 1: Hardware usados
1.2 SOFTWARE
Programas Cantidad Medida
xTIMEcomposer audio 1 und
xSOFTip explorer 1 und
Simulink 1 und
Matlab 1 und
Mozilla 1 und
Microsoft Office® 1 und
Tabla 2: Sofware usados
Mediciones
- 3 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
1.3 MANO DE OBRA DIRECTA
Actividad Horas
Recopilación de información 180
Programación 240
Trabajo de revisión y corrección 80
Documentación 150
Horas totales 650
Tabla 3: Horas utilizadas de mano de obra directa
Precios unitarios
- 4 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Capítulo 2 PRECIOS UNITARIOS
En este capítulo se detallaran los precios unitarios de cada componente, el
precio de los software usados y los costes de mano de obra.
2.1 PRECIO DE LOS COMPONENTES PRINCIPALES
Componentes Precio (€/und)
Placa USB Audio 2.0 Reference Design 149
Cable de alimentación USB 3.67
Ordenador 850
Tabla 4: Precio de los componentes utilizados
2.2 SOFTWARE
Programas Precio (€/und)
xTIMEcomposer audio Software libre
xSOFTip explorer Software libre
Matlab y Simulink (versión estudiantes) 75
Mozilla Software libre
Microsoft Office® 103
Tabla 5: Precio de los software usados
Precios unitarios
- 5 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
2.3 MANO DE OBRA DIRECTA
Actividad Precio (€/hora)
Recopilación de información 25
Programación 35
Trabajo de revisión y corrección 30
Documentación 30
Tabla 6: Precio de las actividades de mano de obra directa
Sumas parciales
- 6 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Capítulo 3 SUMAS PARCIALES
En este capítulo se calcularan las sumas parciales de los costes de cada
elemento. Calculándose usando los capítulos anteriores, y con el incremento de
los costes indirectos.
3.1 COMPONENTES PRINCIPALES
Componentes Cantidad Precio
(€/und)
Amortización Coste
Placa USB Audio 2.0 Reference
Design
1 149 - 149
Cable de alimentación USB 1 3.67 - 3.67
Ordenador 1 850 5 años 170
Total 322.67
Tabla 7: Coste por los componentes principales
Sumas parciales
- 7 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
3.2 SOFTWARE
Programas Cantidad Precio
(€/und)
Amortización Coste
xTIMEcomposer audio 1 Soft.libre - 0
xSOFTip explorer 1 Soft.libre - 0
Matlab y Simulink 1 75 5 años 15
Mozilla 1 Soft.libre - 0
Microsoft Office® 1 103 5 años 20.6
Total 35.6
Tabla 8: Coste por los software usados
3.3 MANO DE OBRA DIRECTA
Actividad Horas Precio (€/hora) Coste total (€)
Recopilación de información 180 25 4500
Programación 240 35 8400
Trabajo de revisión y corrección 80 30 2400
Documentación 150 30 4500
Total 19800
Tabla 9: Coste por la mano de obra directa
Sumas parciales
- 8 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
3.4 COSTES INDIRECTOS
Concepto Coste Total (€)
Gasto de luz y equipos 42
Gastos de comunicación 38
Gastos de transporte 100
Total 180
Tabla 10: Costes indirectos
Presupuesto general
- 9 -
UNIVERSIDAD PONTIFICIA COMILLAS
ESCUELA TÉCNICA SUPERIOR DE INGENIERÍA (ICAI)
INGENIERO INDUSTRIAL
Capítulo 4 PRESUPUESTO GENERAL
Sumando las aportaciones de todos los capítulos anteriores, se puede concluir
que el coste del proyecto será lo representado en la Tabla 11.
Concepto Coste (€)
Componentes principales 322.67
Software 35.6
Mano de obra directa 19800
Costes indirectos 180
Total 20338.27
Tabla 11: Presupuesto general del proyecto
Top Related