You are on page 1of 4

Concurso de Papers Estudiantiles 2010 1

IEEE Región 9

Implementación de efectos de audio en un


ADuc7026. Codificación de punto fijo.

C.A. Fuoco, Student member IEEE,S.F. Maudet Student member IEEE.

Resumen—Este documento es una adaptación de un informe activos, amplificadores, limitadores, adaptadores de


de proyecto realizado para la materia Medidas Electrónicas 1, en impedancia ) que acondicionen la señal analógica. A
4to año de la carrera de Ingeniería en Electrónica de UTN FRBA, continuación se da un diagrama en bloques en la figura 1. [2]
Argentina.
El proyecto esta orientado a dar los primeros pasos en
procesamiento de señales digitales, como también aprender a
llevar a cabo un proyecto desde las etapas de prototipo y prueba
hasta su etapa final de ensamble y presentación. El Procesador de
efectos para guitarra “GM-FM-09” fue la oportunidad de
plasmar en forma práctica los conocimientos adquiridos en Fig. 1. Diagrama teórico DSP
Análisis de Señales y Sistemas ( para el procesamiento digital ), de
Teoría de Circuitos ( para diseñar los filtros analógicos de El sistema se va a implementar con el Microcontrolador
entrada y salida ), de Técnicas Digitales ( para el uso del
ADuc7026 para el procesamiento digital y para el
Microcontrolador que realizara los algoritmos de procesamiento
), y de Medidas Electrónicas 1 para realizar las mediciones en procesamiento lineal en los circuitos de entrada y salida se
forma correcta de cada una de las partes que conformaran al utilizará el Amplificador Operacional AD8605.
procesador.
Si bien el proyecto no es solo de carácter investigativo, sino
que incluye el armado y ensamble del procesador, el paper se El circuito esta diseñado para micrófonos y guitarras pasivas
orientara más a los algoritmos hechos en C y a la teoría de y trabaja con 3.3V DC con la meta de reducir el consumo. El
procesamiento digital de Audio. procesador de efectos se puede alimentar con una batería de
9V DC y podrá ser utilizado por el operador
Abstract—The following paper is based on a main convenientemente sin depender de cables de alimentación.
documentation made in a classroom project of the subject
Electronic Measurement 1, 4th grade of Electronic Engineering at
II. DESARROLLO
the UTN FRBA, Argentina.
The project was planned to bring the first steps in Digital
A. Conociendo la señal a procesar
Signal Processing as well as learning how to accomplish the whole
task from scratch, until the last periods of assembling, testing , En todo tratamiento de audio, debemos conocer la
and presentation. The guitar-processor “GM-FM-09” gave us the frecuencias de trabajo y la amplitud en volts que debemos
chance to use the knowledge of many subjects as: Systems & procesar. Para esto se midió una guitarra eléctrica Texas
Signals ( for DSP ), Circuit Theory( Active filters design ) , convencional con un Osciloscopio Tektronix TDS 1012B . La
Digital Techniques ( how to use a 32bit microcontroller ) , and figura 1 muestra la 1era cuerda en el ultimo traste con
Electronics Measurement ( for multiple measures ) . frecuencia fundamental 1136 Hz. La figura 2 muestra la 6ta
This paper focus on the algorithms in C and the theory of
cuerda al aire con frecuencia fundamental 83.33 Hz. El
DSP for audio application.
contenido frecuencial se conoce como armónicos por simpatía
( una tónica genera una octava, una 5ta, una 2nda octava y así
siguiendo.) La figura 4 es la FFT respectiva. Las armónicas
I. INTRODUCCIÓN
superiores a los 5 KHz caen notoriamente. ( -30 dB respecto a

E L esquema típico para procesamiento incluye conversores


A/D y D/A, la CPU para los algoritmos de procesamiento
de señal digital, y circuitos de entrada y salida ( filtros
la tónica )

El proyecto fue apoyado por la Universidad Tecnológica Nacional,


Facultad Regional Buenos Aires , con la compra de los componentes
electrónicos, como así tambien facilitar el instrumental y un kit de desarrollo Fig. 2. Fig. 3 Fig. 4
para realizar las diferentes mediciones y pruebas.
2

B. Consideraciones para el muestreo digital


Según el teorema de Nyquist [3] debemos muestrear la señal nº ciclos por muestra = ts / tc = 682 ciclos.
de audio al doble, o más de su ancho de banda. Con lo cual
teóricamente podemos muestrear a partir de los 40 KHz, (si De acuerdo al lenguaje de programación, al tipo de
consideramos el ancho de banda teórico del audio desde los 20 instrucciones y cuantos ciclos de maquina le tomen ,
Hz hasta los 20 KHz.). Pero como vimos en las mediciones de tendremos mas o menos operaciones de procesamiento.
frecuencia el instrumento no alcanza los 20 KHz como fuente Si aumentamos la frecuencia de muestreo , por ejemplo a 96
de sonido,( si bien teóricamente lo alcanza, practimente la KSPS, el espacio entre muestra y muestra quedará reducido a
relación en dB respecto a la tónica es despreciable al oído la mitad, por lo que dispondremos también de la mitad de
humano! ) por lo cual no tendrá sentido considerar el Ancho ciclos de reloj.
de Banda ideal del audio. Esta observación pone de manifiesto que la frecuencia de
muestreo condiciona la capacidad de procesado, que tiene una
Para CD la frecuencia de muestreo es de 44.1 KSPS, y en relación muy directa con el número de efectos que podemos
sistemas de Audio modernos se utiliza 96 KSPS y 128 KSPS. introducir.
En este proyecto la frecuencia de muestreo se fijo en 48KSPS. Respecto al filtro, cuanto mas bajo es el orden del filtro
Un conversor A/D 12 bits tiene una relación señal a activo de entrada mas alta debe ser la frecuencia de sampleo.
ruido+distorsión teórica de : En nuestro caso se utilizó un filtro antialias con transferencia
plana en la banda pasante y una atenuación de 18 dB/octava,
(6.02N+1.76)dB=74dB. ( 6dB por bit apróx. ) con una frecuencia de corte en 24 KHz. [2]
C. Codificación de las muestras
Para nuestro Micro, El fabricante informa una S/N práctica
La señal provista por el ADC [4] esta codificada en
de 69dB. Esto se conoce como rango dinámico. Al muestrear a
magnitudes binarias debido a la utilización del modo single-
48Khz, el limite de Nyquist esta en 24Khz, con lo cual el filtro
ended, es decir, las palabras que ingresan tienen un rango que
antialias debería tener 0dB hasta los 20Khz del audio y atenuar
va desde 0x0000 a 0xFFF0. Esto genera un problema para la
en 24Khz en -69dB . El paso de atenuación se toma
señal de audio que se desea procesar, debido a que se está
arbitrariamente y puede ser 1/10 Octavas o 1/5 Octavas. [1]
incluyendo un valor medio que la señal analógica original no
incluía, por este motivo, se procede a restar a la muestra de
Para entenderlo mejor, en términos de tensión, trabajamos la
entrada ese valor de continua, en este caso, el valor 0x0800
señal en “single ended” [4]
quedando codificada en complemento a 2. Una vez finalizado
el procesamiento se debe sumar nuevamente ese valor a la
1 LSB = FS/4096, o
muestra a sacar por el DAC por el mismo motivo que le fue
2.5 V/4096 = 0.61 mV, o
restada a la muestra provista por el ADC.
610 uV cuando VREF = 2.5 V
En este proyecto se trato de aprovechar las técnicas de
suponemos una señal a máxima escala de 2.5V. El filtro debe
procesamiento de señales para optimizar el código y reducir al
atenuar la señal hasta 610uV en 24Khz.
mínimo el tiempo de procesamiento debido a las
Esto seria el filtro ideal teórico para evitar frecuencias alias
características de procesamiento en tiempo real.
(repetidas) en el espectro muestreado, para un ancho de banda
Para la implementación de los efectos mencionados se requiere
de 20 KHz.
el uso de coeficientes menores que la unidad, estos son usados
Conseguir tal atenuación requiere de un filtro de orden alto
para atenuar las diversas señales generadas en cada uno de
(N>10 ) con muchos polos, que , colocando etapas en cascada
estos bloques.
de 2 o 3 polos, tiene como desventaja que el sistema , cuanto
Existen diversas formas de implementar operaciones con este
mas polos agregamos mas inestable se vuelve.
tipo de números. Una de ellas es trabajar con una arquitectura
Aumentar la fs no mejora la resolución del audio, sino que
de punto flotante. Este no es el caso ya que el ADuC7026 no
nos permite utilizar un filtro anti-alias de menor orden.
cuenta con ese tipo de hardware, por este motivo el IDE de
Para poder aumentra la fs, debemos hacer previamente un
desarrollo utilizado brinda una solución a través de la
calculo de tiempos que relacionen el espacio entre muestras y
simulación de una arquitectura de punto flotante en la cual se
el tiempo de cada rutina.
utilizan varias instrucciones para que el manejo sea
Si llamamos tc al tiempo de clock del micro, ts al tiempo
transparente para el programador.
entre muestras (48 KSPS => 20useg ) y te al tiempo que
Por ultimo, existe una técnica denominada Fixed-Point en la
demora cada rutina de efecto debemos cumplir en todo
cual se emulan números menores que uno utilizando una
momento que :
palabra binaria común en la que se establece la posición de un
te<ts
punto o coma decimal en forma ficticia.
En este proyecto todos los datos están codificados en formato
Para nuestro caso , tendremos un limite de instrucciones por
Fixed Point 1.15 (figura 5) es decir, un bit para la parte entera
rutina de:
y dos bits para la parte decimal. Se utilizan variables de 16 bits
ts = 1 / 48000 Hz = 20,83 x 10e-6 seg.
para cada muestra recibida.
tc = 1 / 32.798 MHz = 30,51 x 10e-9 seg.
3

//me quedo con la palabra más


significativa
out = (muestra + mult);
if(out > overflowpos) //para evitar desborde, chequeo los limites y
saturo
Fig. 5. {
out=0x00007FFF;
}
Para las operaciones de multiplicación y sumas acumulativas if (out < overflowneg)
se suelen utilizar bits de guarda para evitar desbordes, en este {
caso se utilizaron para las operaciones mencionadas variables out=0xFFFF8000;
de 64 bits que luego de procesar la muestra son truncadas para }
buffer[index] = out;
obtener nuevamente un dato codificado en 1.15. DAC2DAT = ((buffer[index]+0x8000 )<<12);
D. Simulación de los efectos //Convierto la señal signada en no signada y la saco por el DAC
}
Matlab permite emular cualquier efecto de audio tomando la }
señal de la placa de sonido de la PC y retornándola luego de
procesar. En la figura 6 vemos la transferencia de un eco: Como se observa en el código, trabajar con lógica saturada,
implica verificar que las muestras codificadas en Q15 se
mantengan entre los valores máximos y mínimos posibles.

A continuación se muestra la rutina del compresor de 3 tramos


como muestra la figura 7. Este efecto solo evalúa en que nivel
se encuentra la señal , toma una decisión y saca una señal de
Fig. 6. Eco
salida, por lo tanto, como no hay realimentaciones , ni sumas ,
A continuación veremos un script para Matlab del eco: la señal nunca desborda por lo que no se corre riesgo de
saturación.
Ain = wavread ('audio.wav') ;vector de muestras
D=15000 ;tamaño del Buffer de Retardo
Buffer=zeros(D,1) ;defino buffer de retardo
N=length(Ain);
Aout=zeros(N,1) ;vector de salida
n=1;

for j = 1:N ;loop


Aout(j)= Ain(j)+0.8*Buffer(n)
Buffer(n)=Aout(j)
n=n+1;
if(n==D)
n=1;
end

wavplay(Aout,11025);

Una vez obtenida las constantes de atenuación y los tamaños Fig. 7. Ley de compresión en 3 tramos.
de los buffers de retardo se empezó a migrar cada algoritmo al
void compresor (void)
lenguaje C. A continuación veremos la rutina del eco para el {
AduC7026: signed short aux;
signed short muestra=0;
void eco (void) signed short nivelneginf=0xE666;
{ signed short nivelnegsup=0xB333;
signed int out; //vector de salida signed short nivelposinf=0x199A;
signed int overflowpos=0x00007FFF; //excursion positiva max. signed short nivelpossup=0x4CCD;
signed int overflowneg=0xFFFF8000; //excursion negativa max
muestra = (ADCDAT>>12)-0x8000; //resto el valor medio
signed short buffer[3250]={0x0000}; //buffer de retardo
signed short coef = 0x4FFF; //Coeficiente de atenuacion codificado en if( muestra>nivelpossup)// si es mayor a 0.6(Q15) atenua
1.15 {
signed short muestra=0; aux=((muestra*0x4000)>>15)+0x4000;
signed short mult; DAC2DAT = ((aux+0x8000)<<12);
unsigned int index=0; }

for(index=0;index<3000;index++) //loop if( muestra>nivelposinf && muestra<nivelpossup)// si esta entre 0,2 y 0.6
{ lineal
muestra = (ADCDAT>>12)-0x8000; //resto el valor medio {
mult=(buffer[index]*coef)>>15; //La mult. esta en 2.30 la paso a 1.31 aux=muestra+0x199A;
//Trunco el dato DAC2DAT = ((aux+0x8000)<<12);
}
4

AGRADECIMIENTOS
if( muestra>nivelneginf && muestra<nivelposinf)// entre 0,2 y -0,2 amplifico
{ Los autores agradecen el espacio para trabajar y realizar las
aux=muestra+muestra; // muestra x2 mediciones y los PCB en el Laboratorio abierto de la UTN
DAC2DAT = ((aux+0x8000)<<12);
FRBA. Agradecemos al Ing. Julián Bruno, docente de la materia
}
DSP RT perteneciente al grupo de Procesamiento Digital de la
if( muestra<nivelneginf && muestra>nivelnegsup)// entre -0,2 y -0.6 lineal facultad quien nos dio la teoría y bases necesarias para llevar
{ adelante cada etapa del proyecto.
aux=muestra-0x199A;
DAC2DAT = ((aux+0x8000)<<12); Finalmente agradecer a Federico DiVruno, vicepresidente de
} la rama y compañero en la carrera, quien nos motivo a redactar
este paper.
if( muestra<nivelnegsup)// si es menor a -0.6(Q15) atenua
{
aux=((muestra*0x4000)>>15)-0x4000; REFERENCIAS
DAC2DAT = ((aux+0x8000)<<12);
}
[1] Walt Kester “Analog-Digital Conversion”, U.S.A. 2004.
}
[2] Darius Mostowfir “Digital Signal Processing with the PIC16C74”,
AN616 Aplication note, U.S.A,1997.
[3] Richard G. Lyons “Understanding Digital Signal Processing” Prentice
III. CONCLUSIONES Hall, 2001.
[4] ADuc 7026 Datasheets, Analog Devices.
No se considero un Ancho de banda de audio ideal de 20
KHz. El estudio del Ancho de Banda nos permitió ajustar la fc BIOGRAFIAS
del filtro y la fs de muestreo del ADC. El estudio de niveles de
tensión adecuó la ganancia del preamplificador de entrada para César A. Fuoco, nacido en Buenos Aires en el
poder aprovechar al máximo el rango dinámico del ADC. año 1984. En 2003 se recibió de Técnico
Trabajar con lógica de saturación provoca distorsión y en Electrónico. En el año 2004 comenzó sus
estudios de grado en Ingeniería Electrónica en
audio es un problema audible. Se debería acondicionar la señal
la Universidad Tecnológica Nacional, Facultad
con controles automáticos de ganancia de tal manera de evitar Regional Buenos Aires. Desde el 2007 trabaja
siempre la saturación. como becario en los laboratorios de electrónica
Es imprescindible un buen PCB y pocos cables de de la facultad dando soporte técnico, tutorías
conexionado en etapas de micrófono, utilizando cable de electrónica para alumnos ingresantes y
realizando proyectos propios del
blindado y en lo posible con señales balanceadas. Departamento de Electrónica.
Queda como pasos futuros, realizar efectos basados en filtros
digitales ,utilizando la instrucción MAC. Es miembro estudiantil del IEEE desde el 2006 , y colabora fuertemente en la
rama de la UTN FRBA . Participo en la RNR 2007 (Argentina), RRR 2007
(Chile) y RNR2008 (Argentina).
El equipo se diseño con un formato similar a los pedales de
Santiago F. Maudet, nacido en San Isidro,
efectos que se encuentran en el mercado. En la foto ( cuadro
Prov. Bs. As. Argentina, en 1985. Bachiller.
rojo ) se muestra la prueba del equipo realizada por alumnos Estudiante de grado de Ing. Electrónica a partir
de la facultad en el stand de la feria de proyectos 2010. del año 2003 en la Universidad tecnológica
Nacional Facultad regional buenos aires. Desde
2008 se desempeña como becario del dpto. de
Ing. Electrónica de la misma facultad y desde
2010 desempeña tareas como ayudante de
cátedra de la materia informática I . Miembro
IEEE y voluntario en la rama IEEE desde 2006
Actualmente desempeñando el cargo de
Vicepresidente

Participación en la Feria de Proyectos


Categoría: Trabajo Práctico. Junio 2010. UTN FRBA

You might also like