Página 1 de 33 FCEFyN Universidad Nacional de Cordoba Consola de audio digital con DSPB56371 y MCF51JM128 Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC Consola de audio digital con DSPB56371 y MCF51JM128 Por Ing. Manuel José Peirone Ing. Gustavo Parlanti Ing. Rodrigo Germán Molina Laboratorio de DSP Facultad de Ciencias Exactas, Físicas y Naturales Universidad Nacional De Córdoba 1 Introducción El sistema presentado en esta nota de aplicación es una consola de audio digital. La misma está basada en un DSPB56371 [1], [2] integrado en el kit de desarrollo SoundBite [3] Esta consola, conforme con la estructura planteada, permite procesar hasta 8 señales de audio en tiempo real (agrupadas en 4 canales estereo llamados J1, J3, J5 y J7). Además dispone de 4 salidas estéreo: J2, J4, J6 y J8. Para el control y configuración del equipo se emplea un microcontrolador MCF51JM128 [4] (integrado en el kit DEMOJM [5]), el cual comanda una pantalla LCD sensible al tacto. El DSP se vincula con el microcontrolador a través de una interfase de datos diseñada específicamente para esta aplicación (ver sección 5.1). Contenido 1 Introducción 2 Perspectiva general del equipo 3 Etapa de procesamiento de audio 3.1 Efectos de audio 3.2 Ruteo programable 3.3 Ecualización y filtrado 3.4 Ajuste del ecualizador 3.5 Ajuste de volumen 3.6 Control de efectos 4 Etapa de control y configuración 4.1 Microcontrolador MCF51JM128 4.2 Controlador del display 4.3. Pantalla LCD 4.4 Touchscreen 4.5 Controlador del touchscreen 5 Interfases 5.1 Interfase A: DSPB56371 MCF51JM128 5.2 Interfase B: MCF51JM128 Controlador del display 5.3 Interfase I 2 S: DSP Codecs 6 Referencias
33
Embed
Consola de audio digital con DSPB56371 y MCF51JM128 ... · estereo llamados J1, J3, J5 y J7). Además dispone de 4 salidas estéreo: J2, J4, J6 y J8. Para el control y configuración
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Página 1 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
Consola de audio digital con
DSPB56371 y MCF51JM128
Por Ing. Manuel José Peirone
Ing. Gustavo Parlanti Ing. Rodrigo Germán Molina
Laboratorio de DSP
Facultad de Ciencias Exactas, Físicas y Naturales
Universidad Nacional De Córdoba
1 Introducción
El sistema presentado en esta nota de
aplicación es una consola de audio digital. La
misma está basada en un DSPB56371 [1], [2]
integrado en el kit de desarrollo SoundBite [3]
Esta consola, conforme con la estructura
planteada, permite procesar hasta 8 señales de
audio en tiempo real (agrupadas en 4 canales
estereo llamados J1, J3, J5 y J7). Además
dispone de 4 salidas estéreo: J2, J4, J6 y J8.
Para el control y configuración del equipo se
emplea un microcontrolador MCF51JM128
[4] (integrado en el kit DEMOJM [5]), el cual
comanda una pantalla LCD sensible al tacto.
El DSP se vincula con el microcontrolador a
través de una interfase de datos diseñada
específicamente para esta aplicación (ver
sección 5.1).
Contenido
1 Introducción
2 Perspectiva general del equipo
3 Etapa de procesamiento de audio
3.1 Efectos de audio
3.2 Ruteo programable
3.3 Ecualización y filtrado
3.4 Ajuste del ecualizador
3.5 Ajuste de volumen
3.6 Control de efectos
4 Etapa de control y configuración
4.1 Microcontrolador MCF51JM128
4.2 Controlador del display
4.3. Pantalla LCD
4.4 Touchscreen
4.5 Controlador del touchscreen
5 Interfases
5.1 Interfase A: DSPB56371 � MCF51JM128
5.2 Interfase B: MCF51JM128 � Controlador
del display
5.3 Interfase I2S: DSP � Codecs
6 Referencias
Página 2 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
Como ya se mencionó, el núcleo del kit SoundBite es el DSPB56371 cuya arquitectura interna es de 24
bits. Su núcleo, perteneciente a la familia 56300 [6], está adaptado para trabajar específicamente con
señales de audio en tiempo real ya que incorpora periféricos diseñados con este propósito (DAX, EFCOP,
ESAI, etc.). Para la conversión A/D y D/A se utilizan 4 codecs de audio; 3 AK4556 [7] y 1 AK4584 [8].
Este kit permite la programación y debugging del DSP mediante una PC a través de una unidad JTAG
(por USB). De esta manera, se puede depurar el código en tiempo real utilizando el entorno de desarrollo
Symphony Studio 1.0.0 [9] de Eclipse Project.
Por otra parte, el microcontrolador MCF51JM128 pertenece a la familia Flexis. Integra un núcleo
Coldfire de 32 bits, en conjunto con una memoria Flash de 128KB y RAM de 16KB [4]. Al igual que el
kit Soundbite, el DEMOJM permite el debugging de todo el código en tiempo real utilizando una
interfase con la PC a través de un puerto USB. El entorno de programación utilizado fue Freescale
Codewarrior 5.9.0 utilizando el lenguaje C.
Esta nota de aplicación se centra en el hardware del equipo. Quien tenga interés sobre la implementación
en software de algoritmos de procesamiento digital puede recurrir a la referencia bibliográfica [10], [11],
[12], [13] y [14].
2 Perspectiva general del equipo La función del equipo es procesar varias señales de audio en tiempo real aplicando efectos, variando la
ecualización de cada canal estereo, etc. En esta consola se cuenta con 8 señales de entrada analógicas
agrupadas en 4 canales estereo J1, J3, J5 y J7) (son las que ofrece el kit SoundBite [3]). Asimismo, posee
8 salidas de audio, también agrupadas en 4 canales estereo J2, J4, J6 y J8. De esta manera, se tiene la
posibilidad de rutear a cada salida sólo las entradas que se deseen.
El sistema está dividido en 4 partes fundamentales (Figura 1):
1. Etapa de control
2. Fuente de alimentación y controlador del touchscreen
3. Etapa de procesamiento de audio
Página 3 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
4. Display LCD con touchscreen
Figura 1. Vista general del sistema
La Figura 2 resume en un diagrama en bloques la estructura de esta aplicación, donde las etapas más
destacadas son: la etapa de procesamiento de audio y la etapa de control. La primera está centrada en el
DSPB56371 y los codecs, mientras que la segunda agrupa el microcontrolador, el controlador del display,
la pantalla táctil LCD y el controlador del touchscreen, los cuales se irán describiendo a lo largo del texto.
Figura 2. Estructura del equipo
Página 4 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
Para vincular cada etapa se utilizan diferentes interfases de datos. Para comunicar el DSP con el
microcontrolador se utiliza la interfase A (sección 5.1) que, como se dijo anteriormente, fue
especificadamente diseñada para esta aplicación. Luego, para transferir datos entre el microcontrolador y
el controlador del display se hace uso de la interfase B (sección 5.2) compuesta por 17 bits de dirección
(es necesario mapear una memoria de 80KB), 6 bits de control y 8 bits de datos.
La interfase gráfica de usuario (GUI) presentada en el display LCD tiene una apariencia como la que se
muestra en la Figura 3. Con el objeto de simplificar la utilización del equipo, el mismo se divide en los
cuatro bloques indicados.
Figura 3. Apariencia del menú
3 Etapa de procesamiento de audio Como ya se comentó, el corazón del equipo es el DSPB56371, el cual se encargará de procesar todas las
muestras de audio provenientes de los conversores A/D, para devolverlas una vez procesadas a los
conversores D/A (integrados en los codecs; [7], [8]). La secuencia en que los distintos algoritmos son
aplicados sobre cada canal estereo de entrada se muestra en la Figura 4.
El DSP fue programado en assembler. Si bien el entorno de Symphony Studio también incorpora un
compilador de C, se optó por utilizar aquel otro lenguaje, el cual a pesar de ser más rudimentario permite
aprovechar mejor las características que ofrece el hardware del DSP. En otros términos, la velocidad de
ejecución de las rutinas en assembler es sensiblemente mayor que en C ya que sobre el primero el
programador tiene un control absoluto sobre las tareas que ejecuta el core del DSP.
Página 5 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
Los conversores A/D de los codecs son de tipo delta-sigma. Generan muestras de 24 bits a una frecuencia
de 48KHz (aunque es posible programar el AK4584 para alcanzar hasta 96KHz y el AK4556 hasta
192KHz). De forma análoga, los D/A reciben desde el DSP muestras, también de 24 bits, a la misma
frecuencia. La transferencia de estas muestras entre el DSP y los codecs se realiza utilizando una interfase
conocida como I2S desarrollada por Phillips, la cual se describe en la sección 5.3.
Figura 4. Esquema de procesamiento de los canales de audio
3.1 Efectos de audio Si bien el DSP utilizado permite implementar prácticamente cualquier efecto de audio, en esta aplicación
se optó por los siguientes:
Distorsión overdrive. Consiste en realizar un recorte simétrico o saturación de la señal de entrada (tal
como se ejemplifica en la Figura 5 para una onda senoidal pura). Lógicamente el valor de la constante a
es variable de acuerdo al nivel de distorsión deseado.
Página 6 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
Figura 5. Distorsión overdrive
La definición matemática de este efecto sería:
>
≤=
ax(t) sia
ax(t) sitxty
)()( Ec. 3.1
Implementación de la distorsión overdrive. La rutina de este efecto recibe como parámetro el nivel de
corte o umbral de saturación. Como el corte es simétrico, el umbral negativo será igual (en módulo) al
umbral positivo.
move X:CANALES_DIST,X0
brclr #0,X0,NO_SATURAR_J1_IZQ ; Si esta bandera no está seteada no se
; aplica distorsión al canal.
move X:MUESTRA_IZQ_J1,A ; Saturación aplicada al canal derecho de J1
move Y:UMBRAL_DIST_J1,X0 ; Umbral de saturación.
cmp X0,A
ble NO_SATURAR_SUP_IZQ_J1 ; Si la señal de entrada es menor que el
; umbral de saturación pasa limpia.
move Y:UMBRAL_DIST_J1,A ; Valor del recorte de la saturación.
move A,X:MUESTRA_IZQ_J1
NO_SATURAR_SUP_IZQ_J1
move #$800000,Y0 ; Se carga el valor (-1) en Y0.
mpy X0,Y0,A ; Se multiplica X0 por Y0 para cambiarle el
; signo al umbral de saturación.
move A,X0 ; Se salva el contenido de A.
move X:MUESTRA_IZQ_J1,A ; Se trae la muestra de audio al acumulador.
cmp X0,A ; Se compara el umbral de saturación con el
; la muestra de audio.
bge NO_SATURAR_J1_IZQ ; Si la muestra de audio es mayor no se
; satura, caso contrario, en la siguiente
; instrucción se fija el valor máximo de la
; señal al valor de la saturación.
move X0,X:MUESTRA_IZQ_J1
NO_SATURAR_J1_IZQ
Página 7 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
Figura 6. Diagrama de flujo de la rutina de distorsión overdrive
Distorsión fuzz. La distorsión fuzz es uno de los efectos más difundidos y populares entre los
guitarristas. Su sutileza y cuerpo lo ponen entre uno de los más utilizados independientemente del estilo
musical, aunque es imposible describir el sonido de una distorsión sin escucharlo personalmente.
Figura 7. Resultado del efecto fuzz
Página 8 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
Este efecto se basa en la generación de armónicos, para lo cual se emplean diferentes técnicas. Se
diferencia de la distorsión overdrive en que la agresividad o amplitud de estos armónicos es menor, con lo
que el efecto resultante es más sutil. Para lograrlo digitalmente se realiza una multiplicación de la señal
por si misma un número n de veces, donde n depende de la cantidad de armónicos que se quieran generar.
Esto quedará más claro con un ejemplo práctico. Se supone el siguiente tono senoidal:
)cos()( ttx ω= Ec. 3.2
Si ahora este tono es multiplicado por si mismo se obtiene el siguiente resultado:
( ) ( )2
2cos1)cos()( 2
1t
ttyω
ω+
== Ec. 3.3
que es el armónico de segundo orden más una componente de continua. Realizando una nueva
multiplicación resulta:
( ) ( ) ( )4
3cos
4
cos.3)cos()( 3
2tt
ttyωω
ω +== Ec. 3.4
donde se obtiene la componente fundamental sumada al 3er armónico. En este caso no hay componente de
continua y tampoco habrá para los casos en que la multiplicación se realice un número impar de veces.
En la Figura 7 se muestra gráficamente lo representado por las ecuaciones 3.2, 3.3 y 3.4 en el tiempo y en
la frecuencia. Se agrega el caso de la señal )(ty3 que corresponde a 15 multiplicaciones de la señal por sí
misma.
Implementación de la distorsión fuzz. La lógica de procesamiento empleada para este efecto se basa en
una multiplicación reiterada de la muestra de entrada por sí misma. Esto se realiza mediante un bucle por
hardware, tal como se observa en el siguiente bloque de código fuente.
Página 9 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
Figura 8. Diagrama de flujo de la rutina de distorsión fuzz
move X:CANALES_FUZZ,X0
brclr #0,X0,NO_FUZZ_J1_IZQ ; Si esta bandera no está seteada no se
; aplica fuzz al canal.
move X:CANAL_FUZZ_J1_IZQ,X0 ; El registro X:CANAL_FUZZ contiene la
; muestra de audio a procesar. El mismo fue
; cargado fuera de esta rutina.
move X0,Y0
move X:REPETIR,N ; Se genera un bucle por hardware que se repetirá N
; veces. El valor de N depende del grado de
; distorsión que se quiera aplicar y fue
; previamente configurado por el usuario.
do N,Loop
mpy X0,Y0,A ; N multiplicaciones de la muestra por sí misma.
move A,X0
Loop
move X0,X:CANAL_FUZZ ; Se almacena la muestra ya procesada.
NO_FUZZ_J1_IZQ
Trémolo. Este efecto se caracteriza por pequeñas variaciones en la intensidad de la señal de audio. Para
su implementación se requiere modular la amplitud de la señal utilizando un LFO (low frequency
oscilator, es decir, oscilador de baja frecuencia). La implementación práctica se expone en la Figura 9, de
donde se deduce que:
Página 10 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
)().()( tmtxtym = Ec. 3.5
donde:
( )tactm oo ωcos.)( += Ec. 3.6
El valor co determina el punto donde se centrará la moduladora cosenoidal, mientras que el parámetro a
determina su amplitud y por ende la profundidad de la modulación. La frecuencia 0ω varía típicamente
entre 1 y 10Hz. El parámetro a y la frecuencia son configurables a través de la pantalla táctil.
Figura 9. Implementación del trémolo (a); Señal del LFO (b)
(a) (b)
Página 11 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
Figura 10. Diagrama de flujo de la rutina del trémolo
Implementación del trémolo. Para la generación de este efecto se utiliza una señal senoidal almacenada
en un vector dentro de la memoria del DSP, la cual permite modular la amplitud de la señal de entrada. El
proceso consiste en ir cambiando cada cierto tiempo (acorde con la frecuencia del trémolo) el valor de la
señal senoidal para luego multiplicarlo por el valor de la señal de audio de entrada.
move X:CANAL_TREMOLO,X0
brclr #15,X0,NO_TREMOLO ; Si este bit no está seteado significa que no se
; debe aplicar trémolo.
Página 12 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
move X:TREMOLO_J1,A ; En este registro (existe uno para cada canal) se
; lleva la cuenta del tiempo que pasó desde la
; última vez que se cambió el valor de la señal
; senoidal.
add #1,A
move A,X:TREMOLO_J1 ; En el siguiente bloque ‘IF’ se pregunta si se
; alcanzó el momento de cambiar el factor de la
; señal senoidal.
.if A <EQ> X:LIMITE_TREM_J1 THEN ; Si la cuenta completó en que permanece
; aplicada la misma muestra de la senoidal,
; entonces se ingresa al bloque IF.
move #0,X0
move X0,X:TREMOLO_J1 ; Se reinicia el contador.
move X:PUNTERO_SENO_TREM,A ; Puntero a la próxima ganancia a aplicar.
add #1,A ; Se apunta a la próxima muestra de la
; senoidal.
cmp #$000010,A ; Se pregunta si se llegó al final del
; vector que contiene las muestras de la
; senoidal. De ser así se resetea.
beq RESET_TREM_J1
move A,X:PUNTERO_SENO_TREM ; Se memoriza el nuevo valor del puntero.
bra CONT_TREM_J1
RESET_TREM_J1
move X0,X:PUNTERO_SENO_TREM ; Reset del puntero.
move X0,A
CONT_TREM_J1
move #SENO_TREMOLO,X0 ; Dirección base de la senoidal.
add X0,A ; Se calcula la dirección de la próxima
; ganancia a aplicar.
move A,R0 ; R0 apunta a la siguiente ganancia.
move X:(R0),X0 ; Se carga en X0 la nueva ganancia.
move X0,X:GAN_TREM_J1
.endi
move X:GAN_TREM_J1,X0 ; Se carga en X0 la nueva ganancia.
move X:CANAL_TREMOLO,R0 ; Dirección del canal a aplicar trémolo.
move X:(R0),Y0 ; Se carga la muestra de audio del canal izquierdo
; en Y0.
mpy X0,Y0,A ; Se aplica la ganancia.
move A,X:(R0) ; Se retorna la muestra del canal izq. con trémolo.
move X:(R0+1),Y0 ; Muestra de audio del canal derecho.
mpy X0,Y0,A ; Se aplica la ganancia.
move A,X:(R0+1) ; Muestra del canal derecho con trémolo ./
NO_TREMOLO
Delay. Este efecto se basa en la generación de una réplica retrasada de la señal original (Figura 11).
Dependiendo de la distancia temporal (Tdelay) entre el sonido original y la réplica el oído percibirá
diferentes sensaciones.
Página 13 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
Figura 11. Delay aplicado a una señal de audio
Para retardos mayores a los 100mS se escucha un eco, mientras que para retardos menores los efectos son
muy variados de acuerdo al delay elegido. Lógicamente, la salida es la superposición de xa(t) con xb(t).
Para la implementación digital se utiliza el sistema de la Figura 12. El parámetro a es generalmente menor
a 1 ya que tiene como función simular las características acústicas de la sala donde se produce el eco
(habrá atenuación por dispersión del sonido y por disipación de energía en el medio).
Figura 12. Estructura del delay digital Implementación del delay. El DSPB56371 posee tres bloques de memoria interna diferentes:
• Memoria de programa (4K x 24)
• Memoria de datos X (36K x 24)
• Memoria de datos Y (48K x 24)
Cada memoria posee su propio bus de datos, lo cual permite la paralelización de muchas operaciones. El
mapa de memoria de la Figura 13 muestra con qué propósito ha sido asignado cada bloque de memoria
interna. En esta aplicación el bloque de memoria RAM X funciona como “almacén” de todas las muestras
Página 14 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
relacionadas con los canales izquierdos, mientras que el bloque de memoria RAM Y contiene las
muestras vinculadas al canal derecho.
Figura 13. Asignación de memoria
La implementación de un delay consiste fundamentalmente en la generación de un retardo temporal
(Figura 11). Esto implica almacenar en memoria muestras de audio pasadas e ir reinsertándolas a la salida
(Figura 12). El mapa de memoria de la Figura 13 muestra en qué región de memoria se almacenan estas
muestras pasadas para el delay.
El intervalo de memoria reservado para almacenar las muestras retardadas comprende las direcciones
$0C300 - $012000. Así, se dispone de casi 24000 registros para el canal izquierdo y la misma cantidad
para el canal derecho. El máximo retardo que se puede generar muestreando a 48KHz es de medio
segundo, dado que se almacenarán, como máximo, la mitad de las muestras tomadas por cada segundo.
Página 15 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
Debido a la limitación en la cantidad de memoria interna disponible, este efecto puede ser aplicado a un
solo canal estereo a la vez.
El código ejecutable listado a continuación se utiliza para generar el retardo temporal aplicado sobre el
canal izquierdo.
ECO_IZQ
move X:CANAL_ECO,X0
brclr #15,X0,NO_ECO_IZQ ; Si este bit no está seteado significa que no se
; de debe aplicar delay.
move X:CANAL_ECO,R5 ; Dirección del canal al que se le aplicará delay.
; Esta variable se carga cuando el usuario
; configura el efecto.
move X:DIRECCION_ECO,R6 ; Esta variable contiene la dirección de memoria
; donde se encuentra la próxima muestra a insertar
; en la salida.
move X:(R6),X0 ; Se carga en X0 la muestra retardada.
move X:(R5),Y0 ; Muestra de audio actual.
move Y0,A ; Se copia la muestra actual al acumulador para
; sumarle la muestra pasada ponderada por una
; cierta ganancia “a” menor que uno.
maci #$400000,X0,A ; Ponderación de la muestra pasada por “a = 0.5”.
move A,X:(R5) ; Muestra final con delay.
move Y0,X:(R6) ; Se almacena la entrada actual en memoria para el
; próximo delay.
move (R6)+N6 ; Se incrementa el puntero a la siguiente muestra
; almacenada en memoria (para la próxima
; intervención de este algoritmo).
.if R6 <EQ> X:TIEMPO_ECO then ; Este bloque IF tiene como función detectar
; si se alcanzó el final de la memoria
; reservada para las muestras. De ser así se
; reinicia el puntero.
move #>$C304,R6 ; Se reinicia el puntero cargando la
; dirección base.
.endi
move R6,X:DIRECCION_ECO ; Se salva el puntero a las muestras pasadas.
NO_ECO_IZQ
Página 16 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
Figura 14. Diagrama de flujo de la rutina
que genera el delay
Página 17 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
Reverberación. Físicamente, la reverberación es un fenómeno acústico natural que se produce en
recintos más o menos cerrados por el cual a la señal original se le van superponiendo las diferentes ondas
reflejadas en las paredes del recinto con un retardo o “delay” no mayor a 50mS generado por la distancia
entre la fuente de sonido original y las paredes del recinto. Para implementar una reverb digital existe una
gran cantidad de estructuras diferentes. En esta aplicación se optó por la que se muestra en la Figura 15.
Aquí también el parámetro a es siempre menor que la unidad. Como el sistema está realimentado, se
produce una respuesta al impulso infinita (en la práctica, la misma es audible hasta que el sonido
generado cae por debajo del umbral de audición).
Figura 15. Estructura del reverberador digital
Implementación de la reverb. Observando la Figura 15 se deduce que para la implementación de esta
estructura es necesario aplicar un único retardo digital. Esto conduce a un algoritmo similar al empleado
con el delay. Las diferencias residen en que la estructura de la reverb requiere una realimentación y mayor
cantidad de factores de escala. Todo esto se resume en el siguiente fragmento de código.
REVERB_IZQ
move X:CANAL_REVERB,X0
brclr #15,X0,NO_REVERB_IZQ ; Si este bit no está seteado significa que no se
; de debe aplicar reverb.
move X:CANAL_REVERB,R5 ; Dirección del canal al que se le aplicará reverb.
; Esta variable se carga cuando el usuario
; configura el efecto.
move X:DIRECCION_REVERB,R6 ; Esta variable contiene la dirección de memoria
; de la muestra almacenada.
move X:(R6),X0 ; Se carga en X0 la muestra retardada.
move X:(R5),Y0 ; Muestra de audio actual.
move Y0,A
maci #$400000,X0,A ; Ponderación de la muestra pasada “a = 0.5”.
Página 18 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
move A,X0
mpy #$600000,X0,A ; Ponderación de la muestra pasada
; Coeficiente “1 – a2 = 0.75”.
move A,X1 ; Resultado temporal.
mpy #$C00000,Y0,A ; Se multiplica la muestra de entrada por “-a”.
add X1,A ; Se suma la muestra de entrada ponderada al
; resultado de la cámara de reverb.
move A,X:(R5) ; Muestra con reverb.
move A,X:(R6) ; Se lleva el resultado a memoria.
move (R6)+N6 ; Se incrementa el puntero a la siguiente muestra
; almacenada en memoria (para la próxima
; intervención de este algoritmo).
.if R6 <EQ> X:TIEMPO_REVERB then ; Este bloque IF tiene como función detectar
; si se alcanzó el final de la memoria
; reservada para las muestras. De ser así se
; reinicia el puntero.
move #>4,R6 ; Se reinicia el puntero cargando la
; dirección base.
.endi
move R6,X:DIRECCION_REVERB ; Se salva el puntero a las muestras pasadas.
NO_REVERB_IZQ
Dado que la rutina de la reverberación es en esencia idéntica a la empleada para generar el delay (el
manejo de memoria es idéntico, solo cambia el modelo matemático), no se incorpora el diagrama de flujo.
Crossover. Un crossover no puede incluirse en el mismo grupo que los efectos recientemente descriptos
ya que el mismo no consiste en un artificio generado sobre la señal procesada, sino en un sistema capaz
de separar frecuencias, es decir, dividir el espectro. En el caso de un crossover de 2 vías, como el
implementado en esta aplicación, el objetivo es filtrar una porción del espectro de la señal de entrada
(mediante un filtro pasabajo IIR de 2do orden) y rutearlo hacia un canal estereo A, mientras que el resto
del espectro se rutea a un canal estereo B (luego de pasar por un filtro IIR pasaalto de 2do orden). La
frecuencia de separación elegida en este caso es de 100Hz.
Página 19 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
Figura 16. Estructura del crossover
Implementación del crossover. Como el crossover consiste en dos filtros (por canal mono) trabajando en
forma paralela, se deja la exposición del código fuente para la sección 3.3 (Ecualización y filtrado).
3.2 Ruteo programable Una de las ventajas de utilizar varios canales de salida es que se puede realizar en cada uno una mezcla
diferente de las señales de entrada. En esta aplicación esto se puede lograr seleccionando en el display
(bloque de ruteo de canales, Figura 17) los canales de entrada que se rutearán a cada salida. La
implementación de esta parte del menú consiste en una matriz donde las columnas son los canales de
salida y las filas los de entrada. Así, los canales de entrada que estén seleccionados en cada columna serán
ruteados a la salida que le corresponde.
Figura 17. Configuración del ruteo de canales
3.3 Ecualización y filtrado
Página 20 de 33
FCEFyN Universidad Nacional de Cordoba
Consola de audio digital con DSPB56371 y MCF51JM128
Consola de audio digital con DSPB56371 y MCF51JM128 Procesamiento Digital de Señales – FCEFyN – UNC
El proceso de ecualización consiste en atenuar o enfatizar distintas frecuencias del espectro audible, con
el objeto de mejorar la calidad de una pieza musical, evitar realimentación acústica, etc. En esta
aplicación se utiliza un ecualizador de 5 bandas en cada canal de entrada estereo. El mismo se implementa
colocando 5 filtros en paralelo para cada canal mono (Figura 18), por lo que resulta un total de 10 filtros
para cada canal estéreo. Se seleccionan las frecuencias de corte (Tabla 1) de manera tal que no queden
“huecos” en el espectro cuando se selecciona una ecualización plana (sin enfatizar o atenuar ninguna
frecuencia en particular).
Figura 18. Arquitectura del ecualizador implementado para cada canal mono
La salida del ecualizador se compone de una suma ponderada del resultado de cada filtro individual, tal