Title: APLICACIN DEL DSKPLUS: DECODIFICACIN DE SONIDO
1APLICACIÓN DEL DSKPLUS DECODIFICACIÓN DE
SONIDO
Carlos Correcher Salvador
2Decodificación del sonido del canal
- Se basa en el efecto de inversión del espectro
al modular la señal con una portadora. - En el canal plus la portadora es una senoidal
de 12800Hz - Tareas Realizadas
- Muestro de la señal.
- Generación de la portadora a partir de la
frecuencia de muestreo - Generación de los filtros para eliminar ruidos
- Corrección de la ganancia por las pérdidas de
los filtros
3Decodificación del sonido del canal
MUESTREO
4Decodificación del sonido del canal
MUESTREO
- Debemos programar el AIC para conseguir la
máxima frecuencia. - La frecuencia del reloj se dividie por reg A,
por 2 y por reg B - Frecuencia máxima 43.2 Kmuestras/s
- Programación
- Registro A 12
- Registro B 10
- Reloj del sistema 10 Mhz
- 10 MHz
- Frecuencia ------------------ 41666
kHz - 12 x 2 x 10
5Decodificación del sonido del canal
- Modificaciones mínimas en scr_ac01.asm, cambio
de valores de los registros A y B (registros
fisicos 1 y 2 en el AIC)
REGISTER .set 0bh Powerup default
values REG1 .set 10Ch
112h REG2 .set 20Ah 212h REG3 .set
300h 300h REG4 .set 409h
405h REG5 .set 501h 501h REG6 .set
600h 600h REG7 .set 700h
700h REG8 .set 801h 801h
6Decodificación del sonido del canal
- Registros de AIC
- Registro 0 Registro de No-Operación.
- Registros 1 y 2 Control de la frecuencia de
muestreo. - Registro 3 Control de la Fase.
- Registro 4 Control de la Ganancia.
- Registro 5 Control de la configuración
analógica. - Registro 6 Control de la configuración
digital. - Registros 7 y 8 Control para conexiones en
cascada.
- La Programación de los registros se realiza
mandándole al - AIC 3 bytes vía serie.
7Decodificación del sonido del canal
GENERACIÓN DE LA PORTADORA
- Se genera una señal senoidal a partir de una
función recursiva - cos(? n) 2cos(?)cos(? n-1) cos(? n-2)
- donde ? es el angulo diferencia entre la
generación de un punto de la senoide y el
siguiente. - Frec. Muestreo 41666 Hz
- Generación de puntos cada 1/f
- Senoide a generar 12800 Hz
8Decodificación del sonido del canal
GENERACIÓN DE LA PORTADORA
Cada 25us debemos generar un punto de un senoide
de periodo 78us. Nº puntos 78 / 25 3.2552
ptos/periodo Por tanto ? 360 / 3.2552 110,6º
9Decodificación del sonido del canal
GENERACIÓN DE LA PORTADORA
- La fórmula queda de la siguiente manera
- Y(n) 2 (-0,3517) Y(n-1) Y(n-2)
- El Coeficiente 0,3517, debe estar en formato
Q31 para que el código funcione. Dicho código
maneja todos los datos en formato Q31, para la
generación del seno. - COEFF -23050
10Decodificación del sonido del canal
GENERACIÓN DE LA PORTADORA
- Implementación
- A 0
- A _at_Yminus1 ltlt 16 y(n-2) gt
ACCUMULATOR A SHIFT - LEFT BY
16 BITS! (Q31 format) - A -A -y(n-2)
gt A - macp(_at_sinx,coeff,A)
(coeff)y(n-1) - y(n-2) gt A - macd(_at_sinx,coeff,A)
2(coeff)y(n-1) - y(n-2) gt A - _at_sinx hi(A) ltlt 0 Store the
carrier generated into - variable
sinx. - Las variables Yminus y sinx, contienen Y(n-2) y
Y(n-1) respectivamente.
11Decodificación del sonido del canal
GENERACIÓN DE LA PORTADORA
12Decodificación del sonido del canal
MODULACIÓN
A trcv LOAD ACC WITH WORD
RECEIVED FROM AIC! _at_XN A ltlt 0
STORE THE VALUE OF RECEIVED WORD TO VARIABLE
XN! A 0 Zero Accumulator
A. ----------AM modulate bandpass on carrier
macp(_at_XN,sinx,A) Multiply the carrier
with the filtered input. The extra sign
bit is automatically discarded with
FRCT1.
13Decodificación del sonido del canal
FILTRADO
- PRE-MODULACIÓN Eliminación de la continua y
alta frecuencia. Implementación como un filtro
Paso banda (1 - 14 Khz) - POST-MODULACIÓN Eliminación de altas frecuencias
generadas por el efecto de la modulación.
Implementación como un filtro Paso-Bajo a
12800Hz
14Decodificación del sonido del canal
FILTRO POST-MODULACIÓN
- Diseño con MATLAB
- filtro de ventana de Blackman con 80 etapas, FIR,
como los definidos en el programa SCRAMBLE, para
aprovechar su estructura. - Generación de coeficientes
- Determinación de frec. de banda-paso y
banda-stop 12800 y 13500 Hz. - Debemos tener en cuenta que el muestreo es
bastante rápido, y con 80 pasos filtros con mayor
caída puede que no consigan el efecto deseado.
15Decodificación del sonido del canal
FILTRO POST-MODULACIÓN
- Generación con la Función fir2
- - Frecuencias F 0.0 0.58626 0.6183 1.0
- - Ganancia A 10 10 0.01 0.01
- FIR2 C FIR2(79,F,A,blackman(80))
- El DSP es de coma fija, para pasar estos números
al formato adecuado se deben escalar - - Escalado R round(C8192)
- Colocar en el fichero scr_coeff.asm los
coeficientes, declarados como .word, y generar
las ordenes que computan el filtro tras la
modulación, en el fichero scr_main.asm
16Decodificación del sonido del canal
FILTRO POST-MODULACIÓN
17Decodificación del sonido del canal
FILTRO PRE-MODULACIÓN
- Eliminar componentes de continua y de altas
frecuencias para que al modular no salgan más
ruidos, filtro paso-banda entre 1KHz y 14KHz. - Fc1 600/21833.3333333333
- Fc2 1000/21833.3333333333
- Fc3 14000/21833.3333333333
- Fc4 14400/21833.3333333333
- F 0.0 Fc1 Fc2 Fc3 Fc4 1.0
- A 0.01 0.01 10 10 0.01 0.01
- C FIR2(79,F,A,blackman(80))
- R round(C8192)
18Decodificación del sonido del canal
FILTRO PRE-MODULACIÓN
19Decodificación del sonido del canal
FILTROS. IMPLEMENTACIÓN
-------- get sample and run through bandpass
filter --------- A trcv
LOAD ACCUMULATOR WITH WORD
RECEIVED FROM AIC!
_at_XN A ltlt 0 STORE THE VALUE OF
RECEIVED
WORD TO VARIABLE XN! AR0 XNLAST
LOAD AR0 WITH ADDRESS OF LAST
DELAY ELEMENT!
repeat(79) , A 0 Zero Accumulator A and
repeat next
instructions 80 times.
macd(AR0-,h0,A) Compute FIR output. The
extra sign
bit is automatically
discarded with FRCT1.
_at_OUTPUT hi(A) ltlt 0 Store the filtered
input into
variable OUTPUT.
20Decodificación del sonido del canal
FILTROS. IMPLEMENTACIÓN
_at_LS hi(A) ltlt 0 Store the AM
modulated signal
into variable LS.
----------Select low-side only
--------------------------- AR1
LSLAST LOAD AR1 WITH ADDRESS OF LAST
DELAY
ELEMENT!
repeat(79) , A 0 Zero Accumulator A and
repeat
next instructions 80 times.
macd(AR1-,g0,A) Compute FIR output. The
extra
sign bit is discarded
automatically. DP
LOWSIDE This sets Data Memory Page
Pointer to
page LOWSIDE, which is
defined earlier in the program.
_at_LOWSIDE hi(A) ltlt 0 Store the low
sideband into
variable LOWSIDE.
21Decodificación del sonido del canal
CORRECCIÓN DE LA GANANCIA
- Necesidad Como a la señal le hemos aplicado un
par de filtros, la señal ha perdido en ganancia
además de haber perdido algunas frecuencias. - Compensaciónmultiplicar la señal de salida por
un factor. - A _at_LOWSIDE ltlt 2 LOWSIDE gt
Accumulator A. - A 0FFFCh A TWO LSB'S
MUST BE ZERO FOR AIC! - tdxr A
22Decodificación del sonido del canal
CONCLUSIONES
- Ventajas
- El DSK proporciona una base de pruebas muy
interesante para poder realizar todo tipo de
programas. - Inconvenientes
- Documentación de los programas de demos que
vienen con el kit es bastante floja, y posee
algunas erratas. - Conjunto KIT-PC no es demasiado robusto, y suele
dar problemas. - Muchos de los filtros diseñados con MATLAB con
FIRLS no funcionan bien en el DSK, y los filtros
de blackman de ganancia 1 en la banda de paso,
tampoco funcionan, ya que los coeficientes que
generan son demasiado bajos.