diseÑo e implementaciÓn de un mezclador de...
TRANSCRIPT
DISEÑO E IMPLEMENTACIÓN DE UN MEZCLADOR DE AUDIO BASADO
EN DISPOSITIVOS LÓGICOS PROGRAMABLES
DESIGN AND IMPLEMENTATION OF AN AUDIO MIXER BASED
PROGRAMMABLE LOGIC DEVICES
Edwar Jacinto G. Jairo Y. Rodríguez G.** Wilmer R. Briceño Camacho.***
RESUMEN
En este documento se describe el proceso para la creación de un dispositivo de procesamiento
digital de audio, capaz de mezclar dos canales y aplicar cuatro efectos de sonido a la mezcla
realizada, mediante la implementación sobre la tarjeta de desarrollo de XILINX "Spartan 3AN".
Se describe el desarrollo realizado sobre algunos módulos que contiene la tarjeta y otros
externos que se diseñaron como el acondicionamiento de la señal y acople hacia la tarjeta de
desarrollo incluyendo el manejo de PMOD’s externos como el AD1 y el AMP1.
Palabras clave: Efectos de Audio, FPGA, Procesamiento Digital de Señales.
ABSTRACT
This document describes the process for creating a device of digital audio processing, capable
of mixing two channels and apply four sound effects to the mix done by implementing on the
development board XILINX "Spartan 3AN” described. Development performed on some
Ing. Control, Maestría en Ciencias de la Información y Comunicaciones. Universidad Distrital Francisco José de Caldas. Correo electrónico e-mail: [email protected] ** Universidad Distrital Francisco José de Caldas. Correo electrónico e-mail: [email protected]
*** Universidad Distrital Francisco José de Caldas. Correo electrónico e-mail: [email protected]
modules containing the card and other external were designed as signal conditioning and attach
to the card management development including PMOD’s external AD1 and as described AMP1.
Key words: Sound Effects, FPGA, digital signal processing
INTRODUCCIÓN
En la actualidad el diseño y desarrollo de procesamiento digital de señales de Audio es hecho
por los procesadores Digitales de Señales; este tipo de procesamiento es muy escaso en las
tecnologías FPGA, por este motivo se planteó diseñar e implementar un dispositivo que logre
procesar señales de audio con dos canales de entrada, capaz de mezclar y aplicar 4 efectos
de sonido, Con base en lo anterior, este proyecto se desarrolló en cuatro fases, una respectiva
investigación sobre el desarrollo de FPGA en el procesamiento de audio, una etapa enfocada
en la implementación y conversión de señales de audio, un bloque de programación en VHDL
para el procesamiento de las señales de sonido y finalmente una etapa de muestra de
resultados.
3. ESTADO DEL ARTE
3.1 Efectos de audio
Más allá de las aplicaciones con filtros digitales, el procesamiento digital de señales de audio
con dispositivos FPGA, ha abarcado los algoritmos para efectos en señales de audio, de esta
forma se ofrece esta tecnología como una vía para el desarrollo en las tendencias musicales,
además de ser usados para la industria del cine [1]; en la industria de producción musical se
ha buscado innovar en tecnologías para crear nuevas formas de expresar la identidad
musical[2]. En la actualidad es muy común el uso de efectos de sonido, esto se debe al avance
del procesamiento digital de audio, comúnmente se aplican los efectos sonoros por medio de
computadoras, pedaleras o mesas de efectos que se encuentran en el mercado[2][3]. En ese
contexto la aplicación de efectos de sonido por parte de las FPGA’s ha venido en constante
crecimiento debido a la búsqueda de otras alternativas de procesamiento digital diferentes al
DSP tradicional[4].
Los algoritmos para efectos sonoros más usados varían en tres dominios de procesamiento,
en dinámico, frecuencia y el uso de retardos[5]. Se han encontrado algoritmos de efectos
sonoros que son aplicados a instrumentos de viento por medio de una pedalera, lo que
presenta una nueva forma de aplicación de efectos ya que normalmente se usan las pedaleras
para instrumentos de cuerda (cordófonos), en este caso aplicaron 4 efectos, delay, chorus ,
reverberación y flanger [3] estos efectos pertenecen al dominio de procesamiento por retardo
que consisten en desfasar una señal y sumarla a la señal original, la magnitud del desfase y la
cantidad de desfases define el tipo de efecto[5] en las figuras 1,2,3 y 4 se muestra el diagrama
de bloques de cada efecto respectivamente.
Figura 1. Diagrama de bloques efecto delay [6].
Figura 2. Diagrama de bloques efecto chorus [6].
Figura 3. Diagrama de bloques efecto reberveracion [6].
Figura 4. Diagrama de bloques efecto Flanger [6].
También se han desarrollado sintetizadores, estos son dispositivos que generan el sonido de
un instrumento artificial dando la ventaja de tener varios instrumentos en un solo equipo, en
ese caso se usó un algoritmo de síntesis aditiva que usa los parámetros de amplitud,
frecuencia y fase basados en el teorema de FOURIER para suma de señales sinusoidales de
diferentes amplitudes y fases [7]. En la figura 5 podemos ver el desarrollo del método de
síntesis aditiva.
Figura 5. Síntesis auditiva [7].
Se han logrado desarrollos en procesadores de efectos en las tecnologías FPGA aplicando
varios efectos, este prototipo se realiza con el fin de crear un dispositivo que permita eficiencia
para la interpretación de un instrumento, con el fin de que el músico pueda ser más expresivo
al aplicar esta tendencia de audio digital, en este diseño se usan los efectos de dominio por
retardo delay, delay cruzado, reverberación y flanger[2].
3. METODOLOGÍA
Actualmente el uso de tecnologías de procesamiento de audio se desarrolla en plataformas
DSP, con el fin de crear bases de conocimiento y avance sobre la tecnología que brinda un
FPGA, se requiere implementar un dispositivo capaz de procesar audio de acuerdo a las
características de la tarjeta de desarrollo, así mismo cumpliendo con los requisitos básicos que
esto implica como la fidelidad, eliminación de ruidos y calidad que el usuario final desea
cumpliendo con estándares y requisitos que faciliten su labor.
Este proyecto se dividió en cuatro etapas que permiten facilitar su ejecución. La figura 6
muestra un bloque de ejecución y la figura 7 un diagrama de bloques del hardware.
Investigación de FPGA como
tecnologia en el prosesamiento de
audio
Pre-procesamiento y conversion ADC
Figura 6. Bloque de ejecución para desarrollo del mezclador
Figura 7. Diagrama de bloques Hardware implementado
3.1 ACONDICIONAMIENTO Y CONVERSIÓN DIGITAL
Se desarrolló esta etapa con base a una entrada de audio estéreo, este proceso se efectuó de
forma independiente para los dos canales pero con el mismo acondicionamiento de señal hasta
la conversión análogo digital, a continuación se describe el proceso desarrollado para no
afectar la calidad de la conversión:
PREAMPLIFICADOR
Se desarrolló con el objetivo de poder adquirir señales provenientes de un micrófono,
instrumento musical, etc. Ya que estas tienen salidas de voltaje muy bajas y la etapa de filtrado
no logra obtener una señal adecuada para el pre-procesamiento hacia la FPGA, se implementó
Acondicionamiento de señal
conversion Analogo-Digital
Efectos de audio VHDL
Conversion Analogo digital y amplificacion de potencia AMP1
con OPAMs en configuración de amplificador inversor con ganancia de 50 respecto a la señal
de entrada[8].
FILTRADO
Se implementaron dos filtros, un pasa altas con frecuencia de corte a 100 Hz con el propósito
de eliminar fuentes de ruido proporcionadas por la red y un pasa bajos con frecuencia de corte
a 15KHz para eliminar señales no deseadas y no utilizadas en el rango de frecuencias audibles,
estos se diseñaron con OPAMs con ganancia de 2 para el pasa altos y ganancia de 1 para el
pasa bajos respecto a su entrada, su salida va hacia un seguidor para acople de impedancias.
OFFSET
Dadas las características de entrada del conversor se hace necesaria la implementación de un
circuito de offset sobre la señal de entrada, este nivel corresponde a la mitad de la alimentación
de la tarjeta de desarrollo para este caso 1.65 V, esta etapa se desarrolló por medio de un
circuito sumador donde la señal de entrada es aplicada a un divisor resistivo obteniendo una
señal de salida deseada[8].
3.1.1 CONVERSOR ANALOGO DIGITAL
Para obtener un resultado óptimo en el procesamiento Digital de señales, el proceso de
codificación es de suma importancia a la hora de procesar y realizar muestreos de las señales
a obtener. El PMOD AD1 posee las siguientes características [10],[11]: protocolo de
comunicación SPI, posee doble canal de operación con una tasa máxima de muestreo de
1MHz por cada canal con un voltaje de operación desde 0.4 V hasta 3.3 V, cada proceso de
conversión se representa digitalmente con 12 bits por cada canal y un periodo de reloj de hasta
50 MHz. Desde el momento en que el dato es cargado desde el preamplificador, el conversor
captura la señal y espera un pulso de activación (AD_conv), el cual es activado por tan solo un
instante de tiempo. La salida digital de este conversor está representada en complemento A2,
representando el bit más significativo de los 12 bits como el signo del dato, y sabiendo que el
nivel de señal aplicado en etapas anteriores de 1.65 V en este caso sería 0x00 [9],[8],[10].
Figura 8. PMOD AD1 de Digilent [12].
El dato de salida según la conversión se puede representar por la ecuación 1, incluyendo
valores desde -2^11 hasta 2^11= 2048, este maneja un protocolo de comunicación SPI.
𝐷[13: 0] = 𝐺𝐴𝐼𝑁(𝑉𝐼𝑁−1.65𝑉)
1.25× 2048 (1)
Figura 9. Trama e intervalo de comunicación por muestra [9].
3.2 BLOQUE DE PROGRAMACION CON LA FPGA
En esta etapa se muestra el proceso desarrollado después de adquirir la señal en símbolos
digitales de la etapa anterior. El usuario tiene la posibilidad de seleccionar con los switchs de
la tarjeta que efecto desea aplicar a la mezcla de audio y con el encoder de la tarjeta puede
variar un parámetro en cada efecto, para ello se desarrolló el siguiente algoritmo:
Figura 10. Diagrama de bloques del proyecto
3.2.1 Efectos de audio en dominio dinámico
Los efectos de procesado en el dominio dinámico efectúan el proceso de dinámica de la señal
en procesos no lineales [3], [5]. Este tipo de efectos se basan en la amplitud de la señal a
tratar, los efectos diseñados son: Distorsión y Noside-Gate.
Distorsión
La ecuación de transferencia característica de este efecto se representa mediante la ecuación
2:
𝑌 = {𝑋, |𝑥| < 𝑢𝑚𝑏𝑟𝑎𝑙
𝑢𝑚𝑏𝑟𝑎𝑙, |𝑥| > 𝑢𝑚𝑏𝑟𝑎𝑙} (2)
Para la implementación de este efecto se usó el diagrama presentado en la figura 11.
Figura 11. Diagrama de bloques implementado efecto Distorsión.
Para implementar la ecuación 2 se desarrolló un bloque en VHDL para convertir la señal de
complemento a2 a una señal sin signo, esa señal entra a un bloque de valor absoluto, luego
esta señal es enviada a un bloque de comparación el cual se encarga de enviar un bit a un
multiplexor 2 a 1 el cual toma como señal de control el valor del comparador y entradas la
señal que sale del bloque de conversión y la señal de umbral, cuando la entrada del
comparador es 1 la salida es el valor de saturación es la señal de umbral, si la salida del
comparador es 0, la salida es la señal de del bloque de conversión.
Noise gate
La ecuación de transferencia característica de este efecto se representa mediante la ecuación
3:
𝑦 = {𝑋, |𝑥| > 𝑢𝑚𝑏𝑟𝑎𝑙0, |𝑥| < 𝑢𝑚𝑏𝑟𝑎𝑙
} (3)
Para la implementación de este efecto se usó el diagrama presentado en la figura 12.
Figura 12. Diagrama de bloques implementado efecto Noside-Gate.
Este efecto es muy similar al Distorsión, la diferencia radica en el valor de salida del multiplexor,
cuando la señal del comparador es menor al umbral, la salida es 0, si la señal es mayor al
umbral la salida será la que proviene del bloque de conversión.
3.2.2 Efectos basados en retardos
Los efectos basados en el uso de retardos se consideran muestras de la señal de audio original
retardadas un número de unidades de tiempo, Este tipo de efectos se basan en una serie de
muestreos para generar una salida actual, por ello su implementación digital requiere del uso
de memorias entre otras características [3], [5], los efectos diseñados fueron delay y chorus.
Delay
El delay se representa mediante la ecuación 4 y el diagrama de implementación representado
por la figura 13.
𝑦(𝑛) = 𝑥(𝑛) + 𝑥(𝑛 + 𝑑𝑒𝑙) (4)
Figura 13. Diagrama de bloques implementado efecto Delay.
Este efecto de audio se desarrolló mediante la implementación de una memoria RAM de doble
puerto con un tamaño de 12799 posiciones (esta es una RAM virtual), un puerto de escritura
el cual se direcciona con la salida de un contador ascendente, y un puerto de lectura que se
direcciona con un bloque de retardo el cual depende de las señales del contador de lectura y
el valor de retardo en milisegundos del bloque Encod, después de almacenar muestras de la
señal se desarrolló un bloque de suma el cual toma la señal de audio original y le suma el
respectivo retardo entregado por la memoria RAM, los valores del retardo varían entre 70 y
100ms.
Chorus
El chorus se representa mediante la ecuación 5 y el diagrama de implementación representado
por la figura 14.
𝑌(𝑛) = 𝑥(𝑛) + 𝑔𝑥(𝑛 + 𝑑𝑒𝑙) (5)
Donde del es un retardo aleatorio y g es una atenuación.
Figura 14. Diagrama de bloques implementado efecto Chorus.
Este efecto tiene una estructura similar a Delay, su diferencia radica en la salida del retardo
dada por la RAM que tiene un tamaño de 6399 posiciones, ya que este retardo es atenuado
para posteriormente ser sumado con la señal original. Esta atenuación es aleatoria y se
desarrolló mediante un generador de números aleatorios LFSR (linear feedback shift register).
Los tiempos de retardo para este efecto varían entre 20ms y 50ms.
3.3. CONVERSIÓN DIGITAL-ANÁLOGA, AMPLIFICACIÓN DE SALIDA
En esta etapa se estructura la salida del procesamiento con el conversor DAC que también
utiliza la comunicación SPI, con cuatro canales de salida.
3.3.1. Conversor digital-análogo
El LTC2624 tiene una resolución de 12 bits sin signo por cada canal y puede trabajar a una
frecuencia de reloj hasta de 50 MHz con cuatro canales de conversión configurados por
dirección, dos canales por cada referencia de voltaje y un nivel de operación de hasta 3V. El
pulso de habilitación SPI, llamado (DAC CS), espera ser puesto en nivel bajo para operar
durante 32 ciclos de reloj SCK. Este conversor cuenta con un manejo de datos bajo el protocolo
SPI, la figura 15 muestra la conexión esquemática y el voltaje de salida es determinado por la
ecuación 6 [9], [13].
𝑉𝑜𝑢𝑡 =𝐷[11:0]
4096∗ 𝑉𝑅𝐸𝐹𝐸𝑅𝐸𝑁𝐶𝐸 (6)
Figura 15. Interfaz de salida conversión Análoga-Digital [9].
3.3.2 Amplificación de salida
Esta etapa se implementó con el PMOD AMP1, el cual trae un amplificador de potencia
LM4838 y un conector de audio de 2 salidas configurables de tipo mono o estéreo para
conexión a parlantes [14].
4 RESULTADOS
4.2 Efectos de audio
Para comprobar el correcto funcionamiento de este algoritmo se usó una señal de 2KHz con
una amplitud de 800mvpp como resultado se obtienen las siguientes Figuras.
4.2.1 Distorsión
Este efecto le da una cuadratura a la señal de entrada, de manera que al sonido que entra se
le agrega una saturación. En las figuras 16 se muestran las señales de entrada (Azul) y las de
salida (Amarillo) con cada valor de umbral.
Figura 16. Efecto distorsión
4.2.2 Noise-gate
Este efecto solo permite el paso de la señal cuando la entrada es superior al umbral, como
resultado se obtienen la figura 17, la señal de entrada (Azul) y la señal de salida (Amarilla).
Figura 17. Efecto Noise-Gate
4.3.2 Delay
Este efecto basado en retardos es la suma de la señal original con su señal retardada,
generando un pequeño eco en la señal, el resultado se puede ver en la siguiente figura, la
señal de entrada (Azul) y la señal de salida (Amarilla).
Figura 18. Efecto Delay
4.2.3 Chorus
Este efecto tiene un resultado muy parecido a Delay la diferencia consta en el valor del retardo
y la ganancia psdoaleatoria que se le da a la señal retardada, como resultado se obtienen las
siguientes señales de salida, la señal de entrada (Azul) y la señal de salida (Amarilla).
Figura 19. Efecto Chorus
En la tabla 1 se presenta los recursos de hardware usados por cada efecto de audio:
Tabla 1. Recursos de hardware usados
Logic Elements
Combinational functions
RAMB 16 BWEs
Embedded multipler 9-bit-elements
Distorsión 61 152 0 0
Noise-gate 49 115 0 0
Delay 91 167 12 0
Chorus 160 126 6 0
total 361 560 18 0
Total en % 3% 4% 90% 0%
5. CONCLUSIONES
Las plataformas de desarrollo FPGA, son versátiles en el diseño de sistemas de procesamiento
de sonido debido a que manejan una alta velocidad de procesamiento gracias a su hardware
robusto.
El procesamiento digital de señales en plataformas de desarrollo FPGA requiere de una
adecuada captura y pre procesamiento de la señal a tratar, cumpliendo con las características
de acople hacia el dispositivo y logrando de este modo un eficiente muestreo de la señal tratada
y la correcta conversión a símbolos digitales.
El manejo de módulos requiere sincronización con los protocolos de comunicación de la
plataforma de desarrollo para el correcto funcionamiento de sistemas robustos manteniendo
eficiencia y calidad del procesamiento digital de señales.
Para este algoritmo el uso de recursos fue del 3%, lo que nos presenta una excelente
alternativa para desarrollar un algoritmo más robusto en cuanto a efectos de sonido,
permitiendo agregar más algoritmos en cualquiera de los dominios del procesamiento digital;
respecto al dominio basado en retardos, este algoritmo sería más eficiente si se usa la memoria
RAM de 512M MT47H32M16 que la tarjeta ofrece, de esta manera los tiempos para guardar
sonido se vuelven mucho más grandes.
6. REFERENCIAS
[1] M. Psarakis, A. Pikrakis, and G. Dendrinos, “FPGA-based acceleration for tracking
audio effects in movies,” Proc. 2012 IEEE 20th Int. Symp. Field-Programmable Cust.
Comput. Mach. FCCM 2012, pp. 85–92, 2012.
[2] C. C. Reconocimiento-no, “Tesis pucp,” Test, pp. 1–125, 2006.
[3] I. J. V, L. Miguel, C. Valbuena, and F. Garc, “Diseño e implementación de un pedal de
efectos para flauta traversa sobre FPGA,” 2012.
[4] U. P. D. E. Valencia and T. D. E. Master, “Implementación de un procesador digital de
audio basado en FPGA,” 2013.
[5] P. P. Liévano-Torres, J. M. Espinosa-Durán, and J. Velasco-Medina, “Implementación
de algoritmos para efectos de audio digital con alta fidelidad usando hardware
programable,” Ingenieria y Universidad, vol. 17, no. 1. pp. 93–108, 2013.
[6] A. . Fallis, “Implementacion en hardware de algoritmos de audio usando FPGA,” J.
Chem. Inf. Model., vol. 53, no. 9, pp. 1689–1699, 2013.
[7] U. P. D. E. Valencia, “‘Síntesis de música con dispositivos FPGA,’” 2013.
[8] O. D. Wdumhwd, G. H. Ghvduuroor, D. Lw, and G. Wkh, “Diseño e implementación de
un codec digital de audio con FPGA , en formato PCM , de 2 canales con interfaz para
usuario.” pp. 56–68, 2010.
[9] Xilinx, “Xilinx UG334 Spartan-3A/3AN FPGA Starter Kit Board User Guide,” vol. 334, p.
140, 2008.
[10] L. T. Corporation, “ADCs with Shutdown ORDER INFORMATION,” pp. 1–24.
[11] “Datos tècnicos PMOD AD1 Digilent.” [Online]. Available:
http://store.digilentinc.com/pmodad1-two-12-bit-a-d-inputs/.
[12] S. S. Kit and K. Chapman, “Initial Design,” no. February, 2006.
[13] L. T. Corporation, “Dac Ltc2604/Ltc2614/Ltc2624,” pp. 1–16.
[14] “Datos Tècnicos PMOD AMP1 Digilent.” [Online]. Available:
http://store.digilentinc.com/pmodamp1-speaker-headphone-amplifier-retired/.