Sei sulla pagina 1di 14

Diseos con entrada/salida

de audio
Jos Manuel Mendas Cuadros
Hortensia Mecha Lpez

Dpto. Arquitectura de Computadores y Automtica


Universidad Complutense de Madrid

Entrada/salida de audio
Una seal audible es un onda formada por la suma de ondas puras con
frecuencias entre 0 y 4000 Hz (aunque dependiendo de la sensibilidad
de cada uno es posible oir seales de mayor frecuencia).
La placa Xstend dispone de una entrada analgica que permiten
conectar la salida de un generador de msica o de un micrfono, para
recibir una seal audible. Tambin dispone de una salida analgica
donde se pueden conectar unos altavoces, con el fin de generar una
seal audible.
Adems, se dispone de un circuito conversor analgico digital (Codec
Ak4520A ) que permite convertir las seales analgicas en seales
digitales, que pueden procesarse en la FPGA. Este circuito es estreo,
es decir, existen dos canales, uno izquierdo y otro derecho, capaces de
digitalizar dos seales analgicas de 20 bits de resolucin, adems de
generar dos seales analgicas a partir de valores de hasta 20 bits. La
comunicacin del codec con la placa de FPGAs se establece mediante
un protocolo serie a travs de dos lneas (una para entrada y otra para
salida), y se explica en detalle en este documento.

Entrada/salida de audio (2)


El circuito codec est ya conectado a las entradas/salidas analgicas de
sonido por una parte, y a ciertos pines de la FPGA (para comunicar las
seales digitales). Para utilizar el conversor no es necesario realizar
fsicamente ninguna conexin, slo colocar el jumper J17 y poner todos los
switches de la placa a 1.
Para procesar seales de audio ser necesario:
1.- Por una parte disear un interfaz de comunicacin con el codec para
recibir/transmitir las seal audible digitalizada. La realizacin del
circuito de comunicacin se explica a continuacin en este documento.
2.- Realizar un circuito que procese la seal digital.

Generacin de sonido musical


Para generar un sonido correspondiente a una nota musical hay que
generar una onda: su forma (sinusoidal, cuadrada, triangular, etc),
determina el timbre de la nota, la frecuencia es el tono, y la amplitud el
volumen. Como nota orientativa a continuacin damos las frecuencias de
la escala natural:
fDo=261Hz
fRe=293Hz
fMi=330Hz
fFa=349H
fSol=392Hz
fLa=441Hz
fSi=495Hz
fDo=525Hz
Para obtener la frecuencia de cualquier nota se puede utilizar la siguiente
frmula:
fNota=fDo*1.06 N donde N es el nmero de semitonos que separan
la Nota del Do
Por ejemplo fRe= fDo*1.062
Si el sonido que queremos generar est formado por varios armnicos,
hay que realizar una suma de todos ellos y el resultado enviarlo al codec.

Qu es?

Codec Ak4520A

Se trata de un conversor digital-analgico y analgico-digital estreo que funciona en el rango


de seales audibles.

Qu hace?
El conversor lo podemos dividir en dos partes:
1.- Conversor analgico-digital: recibe dos entradas analgicas, una por el canal
izquierdo (AINL+, AINL-) y otra por el derecho (AINR+, AINR-). Realiza un muestreo de
dichas seales con una frecuencia fs, y transmite en serie alternativamente el resultado de las dos
muestras a travs de STDO. Cada muestra se formatea dependiendo del valor de las entradas
(DIF1, DIF0). En la placa con la que vamos a trabajar el formato son 20 bits justificados segn
MSB. El reloj MCLK determina la frecuencia de muestreo. El reloj LRCLK determina qu canal
se est enviando en cada instante (LRCLK=1 canal izdo y LRCLK=0 drcho) y el reloj SCLK
determina en qu instante se enva cada uno de los bits de la mu estra.
2.- Conversor digital - analgico: recibe una entrada digital (STDI), por donde se
transmite en serie el valor digital de una muestra de uno de los dos canales, segn el valor del
reloj LRCLK. El formato de las muestras depende del valor de las entradas (DIF1, DIF0), y para
la placa xstend son 20 bits justificados segn MSB. Los datos digitales se convierten en dos
seales analgicas que salen por AOUTL (canal izquierdo) y AOUTR (canal derecho).

Interfaz Codec Ak4520A


Interfaz analgico

Interfaz digital
AINL-

MCLK

Entradas
analgicas

AINL+
AINRAINR+

Voltajes de
referencia

VREFH
VREFL

LRCLK Selector de canal


Reloj de
SCLK
transmisin
de datos serie

Salidas
analgicas

AK4520A

AOUTR

Voltaje comn VCOM


de salida

VD

DGND

Alim.
Digital

VA Alim.
AGND Analg.

3 TEST

2 DEM Frec. de
nfasis
PWDA Modo
Power
down

PWAD

Salida de datos
serie
SDTI Entrada de datos
serie
DIF0
Formato de datos
DIF1
serie
CMODE Selector de
frecuencia de
muestreo
Alimentacin y otros
SDTO

AOUTL

Reloj principal

Caractersticas del interfaz digital


CMODE: determina la relacin entre el reloj master MCLK
y la frecuencia de muestreo (fs)
CMODE =0
FMCLK=256fs
CMODE=1
FMCLK=384fs

Al fijar desde el exterior la


frecuencia de MCLK queda fijada la
frecuencia de muestreo

DIF0 DIF1: determinan el formato de los datos serie. Hay 4 posibilidades


MODO DIF1 DIF0
0
00
1
01
2
10
3
11

Pinout
MCLK
LRCLK
SCLK
STDI
STDO

SDTO
SDTI
L/R
20 bit, justif.MSB 16 bit, justif.LSB H/L
20 bit, justif.MSB 20 bit, justif.LSB H/L
20 bit, justif.MSB 20 bit, justif.MSB H/L
IIS(I2s)
IIS(I2s)
L/H

fSCLK
>=32fs
>=40fs
>=40fs
32fs o >=40fs

En la placa XS40 tenemos cableado CMODE a 0 y DIF1, DIF0 A 10. Por tanto:
fMCLK=256fs
Formato de datos entrada/salida 20 bit, justif.MSB
fSCLK>=32fs
not (pin 9) coincide con switch 3 de la placa
not (pin 66) coincide con switch 7 de la placa
not (pin 77) coincide con switch 5 de la placa
not (pin 70) coincide con switch 6 de la placa
not (pin 6) coincide con switch 4 de la placa (es necesario poner el jumper 17)

Restricciones temporales
Para fMCLK=256fs

MCLK debe cumplir 4.096MHz<= fMCLK <=13.824MHz


Adems:
MCLK debe estar a 0 al menos 27ns
MCLK debe estar a 1 al menos 27ns

1 restriccin

LRCK
Como el periodo de este reloj debe ser suficiente para poder enviar o recibir una
muestra de cada canal, su frecuencia coincide con fs.
fLRCK=fs= fMCLK/256
Segn el valor de MCLK debe cumplirse:
fMCLK =256fs
16kHz<= fs<=54kHz
El ciclo de trabajo de LRCK debe estar entre 45% y 55%
SCLK es el reloj que determina la lectura y escritura
de los datos serie.
Para poder enviar los 20 bits por canal debe cumplirse
fSCLK>40fs
fSCLK>40 fMCLK/256
En general fSCLK=64fs= fMCLK/4
Por tanto:
Tsck>=1/(13.824MHz/4)=289.4ns
SCLK debe estar a 0 al menos 120 ns
SCLK debe estar a 1 al menos 120ns

2 restriccin

Restriccin 3, 4 y 5

Adems existen las siguientes restricciones:


3.- Un flanco en LRCK debe estar al menos a
30ns del flanco de subida de SCLK
El flanco de subida de SCLK debe estar al
menos a 30ns del flanco de LRCK
4.-Datos de entrada. Se latchean con SCLK
Hold Time de SDTI 40ns
Setup Time de SDTI 40ns
5.- Datos de salida:
Desde que hay un flanco en LRCK hasta
que cambia SDTO pasan como mucho 100ns
Desde el flanco de bajada de SCLK hasta
que cambia SDTO pasan como mucho 100ns

Seleccin de frecuencias
1 restriccin 4.096MHz<= fMCLK<=13.824MHz
40>=27ns 40>=27ns
MCLK

Elegimos fMCLK=12.5MHz (reloj placa)


tMCLK=tciclo=80ns
fs=fLRCLK=fMCLK/256=48.8kHz
tRLCLK=20.48us

2 restriccin

fSCLK>40 fMCLK/256
320>=289ns
160>=120ns 160>=120ns

Elegimos fSCLK=64fs=fMCLK/4
tSCLK=320ns

SCLK

3 restriccin
SCLK
LRCLK

Los flancos de LRCLK no pueden coincidir con los flancos


de subida de SCLK
Como fLRCLK=fSCLK/64
decidimos que los flancos de
LRCLK se produzcan el los
flancos de bajada de SCLK
160>=30ns 160>=30ns

Seleccin de frecuencias (2)


Resumiendo: fMCLK=12.5MHz fSCLK=fMCLK/4 (Cada dos ciclos de MCLK cambia SCLK)
fLRCLK=fMCLK/256
S3
80ns

S0

S1

S2

S3

S0

S1

MCLK

Numeramos los cuatro


ciclos correspondientes a
un periodo de SCLK como
S0, S1, S2, S3

SCLK

320ns

Para generar los relojes necesitamos


un divisor de frecuencia

LRCLK

MCLK
Canal derecho

Canal izquierdo

LRCLK
256 ciclos de MCLK
64 ciclos de SCLK
128 ciclos de MCLK
32 ciclos de SCLK

Tiempo suficiente para


enviar/recibir los 20 bits de
una muestra

0
1
Contador 2
mod-256 3
4
5
6
7

S: Subciclo de MCLK
(S0, S1, S2, S3)

SCLK
5 NC: Ciclo de
SCLK dentro de
cada ciclo de canal

LRCLK

Como el contador es ascendente los


flancos en LRCK siempre ocurren
en los flancos de bajada de SCLK

Entrada/Salida de datos
4 restriccin

Datos de entrada: se latchean con flanco de subida de SCLK


S2

S3 S0 S1

S2 S3 S0 S1

S2 S3
Como el tiempo de ciclo
es de 80ns, para cumplir
los 40ns de hold y setup
basta con colocar los
datos en los estados S0,
S2 S3

MCLK

SCLK
>=40ns
STDI
>=40ns

5 restriccin Datos de salida: se estabilizan como mucho 100ns despus de un


flanco en LRCLK o de un flanco de bajada en SCLK
80ns

S2

S3 S0 S1

S2 S3 S0 S1

MCLK

SCLK
LRCLK
STD0
<=100ns

<=100ns

S2 S3

Los flancos de bajada de SCLK


coinciden con los flancos de
LRCK
La restriccin nos dice que los
datos estn estables y por tanto
pueden leerse los ciclos S1 y S2

Conclusin: los datos


deben leerse y escribirse en
el estado S2

Protocolo de comunicacin
Los datos se leen y escriben cada cuatro
ciclos de MCLK coincidiendo con el
estado S2
32 ciclos de SCLK
32 ciclos

LRCLK

SCLK

STDI

19

18

17

STDO

19

18

17

....

Do not care

19

18

17

Do not care

19

Do not care

19

18

17

Do not care

19

19 MSB, 0 LSB
Canal izquierdo

19 MSB, 0 LSB
Canal derecho

Nota: STDI son los datos de entrada al CODEC, salida de nuestro circuito
STDO son los datos de salida del CODEC, entrada de nuestro circuito

Circuito receptor
Recibe los 20 bits (0<=NC<=19)
de la muestra por STDO en el
subciclo S2 dentro del ciclo de
SCLK
RST
CLK

STDO

LRCLK

IN

SHIFTER
OUT

SE

2
=2

S (Subciclo S0,
S1, S2, S3)

20

Canal izquierdo
RST
CLK

IN

SHIFTER
OUT
20

Canal derecho

SE

>=0
<=19

NC
5 Cont[6..2]

Circuito transmisor
Transmite los 20 bits (0<=NC<=19) de la muestra por
STDI en el subciclo S2 dentro del ciclo de SCLK
Canal izquierdo

LRCLK

20
RST

LRCLK
CLK

STDI

SHIFTER
OUT

SE

=31
=2

5 NC
Cont[6..2]
2
S (Subciclo S0,
S1, S2, S3)

Canal derecho

>=0

20
RST
CLK

SHIFTER
OUT

SE

<=19

NC
5 Cont[6..2]

Potrebbero piacerti anche