Post on 02-Apr-2020
Amplificador Digital de Audio
Nelson Fernando do Canto Mao de Ferro
ist145231
Dissertacao para obtencao do Grau de Mestre emEngenharia Electrotecnica e de Computadores
JuriPresidente: Prof. Jose GeraldOrientador: Prof. Goncalo TavaresCo-Orientador: Prof. Moises PiedadeVogais: Prof. Antonio Serralheiro
Fevereiro de 2008
Abstract
The purpose of this work is to implement the technique known as click modulation and demon-
strate that it is feasible with current technology. The main goal of this technique is to reduce the
power amplifier switching rate which results in more efficient class D amplifiers. It also leads to
less electromagnetic interference and less harmonic distortion.
Class D amplifiers use typically PWM that is also used in some mp3 and CD players as
Pseudo-Natural PWM.
The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed
and processing power. They were implemented in the DSP with assembly language to maximize
performance and the use of the DSP pipeline efficiently.
To generate the binary signal is used a FPGA running at approximately 180MHz resulting in
9 bit of resolution for that signal.
The power stage is composed by two integrated circuits, the TAS5261 which is a mono PWM
amplifier. It has a power output of 125W with a load of 8 Ω and 0.01% THD.
Keywords
Click Modulation
Hilbert Transform
Amplitude Exponencial Modulation
Binary Signal
Resumo
Neste trabalho implementa-se a tecnica click modulation (CM) que tem como objectivo mel-
horar a qualidade e eficiencia dos amplificadores de audio de classe D.
Nos amplificadores de classe D usa-se para modular o sinal analogico original e atacar o an-
dar de potencia modulacao por largura de pulso (Pulse With Modulation, PWM). Esta modulacao
(PWM) e tambem denominada por Pseudo-Natural Pulse With Modulation (PN-PWM) quando
o sinal original esta no formato PCM. Este ultimo e o metodo de codificacao usado em alguns
leitores de mp3 e CD portateis.
O objectivo deste trabalho e demonstrar que esta modulacao tem maior qualidade que o
PWM e provar que e possıvel implementar o algoritmo CM utilizando a tecnologia actualmente
disponıvel, nomeadamende processadores digitais de sinal (Digital Signal Processors, DSPs) e
matrizes de portas programaveis por campo electrico (Field Programmable Gate Array, FPGA),
comparar resultados experimentais desta modulacao com as solucoes PWM existentes.
Os filtros implementados no DSP sao projectados em MATLAB. Por questoes de de desem-
penho do DSP o codigo foi optimizado em assembly.
E necessario o uso de uma FPGA para gerar o sinal binario obtido do algoritmo click modu-
lation com uma resolucao aceitavel.
O andar de potencia e constituıdo por dois circuitos integrados do fabricante Texas Instru-
ments, TAS5261. Este integrado e um amplificador mono de classe D de 125 W para uma carga
de 8 Ω com uma distorcao harmonica total (Total Harmonic Distortion, THD) inferior a 0.01%.
Palavras Chave
Click Modulation
ii
Transformada de Hilbert
Modulacao Exponencial em Amplitude
Sinal binario
iii
Conteudo
1 Introducao 1
2 Fundamentos teoricos da click modulation 2
3 Implementacao 8
3.1 Dimensionamento . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 8
3.2 Hardware . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20
4 Codificacao do algoritmo 22
4.1 Processamento realizado no DSP . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.1.1 Temporizadores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 22
4.1.2 Registos circulares . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
4.1.3 Filtragem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.2 Processamento realizado na FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . 35
5 Descricao dos Circuitos 40
5.1 Andar de potencia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40
5.2 Amplificador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45
5.3 Filtro Analogico . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 46
5.4 Simulador de coluna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.5 Placa S/PDIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.6 Interface DSP/FPGA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6 Resultados Experimentais 58
6.1 Conversor Analogico-PWM e Amplificador de potencia . . . . . . . . . . . . . . . . 58
6.2 Algoritmo click modulation . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 67
7 Conclusoes 72
v
vi
Lista de Figuras
2.1 Sinais relevantes na Click modulation. . . . . . . . . . . . . . . . . . . . . . . . . . 5
2.2 Sinal σ(t). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 6
2.3 Sinais de Click modulation: geracao de sinal binario com o mesmo conteudo es-
pectral do sinal de entrada. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 7
3.1 Dimensionamento do filtro que realiza a transformada de Hilbert usando a ferra-
menta FDATOOL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
3.2 Resposta em frequencia do transformador de Hilbert. . . . . . . . . . . . . . . . . 10
3.3 Resposta em frequencia do transformador de Hilbert, com quantizacao Q15 (LS). 11
3.4 Dimensionamento do filtro passa-baixo usando a ferramenta FDATOOL. . . . . . . 12
3.5 Resposta em frequencia do filtro passa-baixo. . . . . . . . . . . . . . . . . . . . . . 13
3.6 Resposta em frequencia do filtro passa baixo, com quantizacao Q15. . . . . . . . 14
3.7 Resposta em frequencia do filtro passa baixo ampliada na zona de passagem,
com quantizacao Q15. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
3.8 Coeficientes do filtro polifase. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
3.9 Filtro polifase - funcionamento. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
3.10 Tabelas para a AEM. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
3.11 Geracao do sinal binario q(t). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
3.12 Diagrama de blocos do sistema implementado . . . . . . . . . . . . . . . . . . . . 21
3.13 Sistema montado. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
4.1 Registo de controlo do temporizador (Timer Control Register). . . . . . . . . . . . 23
4.2 Registo de Modo de Enderecamento, AMR. . . . . . . . . . . . . . . . . . . . . . . 24
4.3 Registo circular usado no calculo do filtro de Hilbert. . . . . . . . . . . . . . . . . . 25
4.4 TMS320C64xTM CPU (DSP Core) Data Paths. . . . . . . . . . . . . . . . . . . . . 27
4.5 Implementacao da click modulation no DSP. . . . . . . . . . . . . . . . . . . . . . . 30
4.6 EMIF Global Control Register. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
4.7 EMIF CE Space Control Register (CECTL). . . . . . . . . . . . . . . . . . . . . . . 32
4.8 Asynchronous Write Timing Diagram. . . . . . . . . . . . . . . . . . . . . . . . . . 33
vii
4.9 Aquisicao de amostras e sincronismo. . . . . . . . . . . . . . . . . . . . . . . . . . 33
4.10 Fluxograma do processamento de sinal no DSP. . . . . . . . . . . . . . . . . . . . 34
4.11 Placa de desenvolvimento SPARTAN3 Starter Kit. . . . . . . . . . . . . . . . . . . 35
4.12 Sumario do projecto no XILINX. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
4.13 Esquema de relogios e de processamento. . . . . . . . . . . . . . . . . . . . . . . 36
4.14 Gerador do sinal q(t) com resolucao de 9bit. . . . . . . . . . . . . . . . . . . . . . 38
4.15 Atraso relativamente ao AWE para o CLK das FIFOs. . . . . . . . . . . . . . . . . 39
4.16 Funcionamento da PLL. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
4.17 Escrita e leitura das FIFOs. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 39
5.1 Desenho da Placa de circuito impresso do amplificador de classe D. . . . . . . . . 40
5.2 Oscilador . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 42
5.3 PCM1802 - TAS5010 . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43
5.4 Placa projectada com filtro original. . . . . . . . . . . . . . . . . . . . . . . . . . . . 44
5.5 Andar de potencia com filtro de 5a ordem. . . . . . . . . . . . . . . . . . . . . . . . 44
5.6 Configuracoes do andar de amplificacao em classe D . . . . . . . . . . . . . . . . 45
5.7 Circuito do filtro de Butterworth de 5a ordem passivo. . . . . . . . . . . . . . . . . . 46
5.8 Circuito do filtro de Butterworth de 5a ordem diferencial passivo. . . . . . . . . . . 46
5.9 Filtro de Butterworth de 2a ordem diferencial. . . . . . . . . . . . . . . . . . . . . . 47
5.10 Filtro RLC de Butterworth 5a ordem simples. . . . . . . . . . . . . . . . . . . . . . 48
5.11 Filtro RLC de Butterworth 5a ordem diferencial. . . . . . . . . . . . . . . . . . . . . 49
5.12 Resposta em frequencia do filtro passa baixo entre 10Hz e 500kHz. . . . . . . . . 50
5.13 Ondulacao da resposta de amplitude do filtro. . . . . . . . . . . . . . . . . . . . . . 50
5.14 Configuracao das bobines na breadboard (a esquerda) e na placa do amplificador
(a direita). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.15 Filtro de 5a ordem . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52
5.16 Simulador de coluna. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 53
5.17 Simulador de coluna do site www.stereophile.com. . . . . . . . . . . . . . . . . . . 53
5.18 Simulador de coluna simulado em PSPICE. . . . . . . . . . . . . . . . . . . . . . . 54
5.19 Medicao real do simulador de coluna. . . . . . . . . . . . . . . . . . . . . . . . . . 54
5.20 Placa S/PDIF . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 55
5.21 Conector DSP-FPGA. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
6.1 Resposta em frequencia do amplificador (Filtro analogico 2a ordem). . . . . . . . . 59
6.2 Distorcao harmonica (Filtro analogico 2a ordem) . . . . . . . . . . . . . . . . . . . 59
6.3 Resposta em amplitude (Filtro analogico 2a ordem) . . . . . . . . . . . . . . . . . . 60
6.4 Resposta em amplitude e fase com 5V de amplitude . . . . . . . . . . . . . . . . . 61
viii
6.5 Resposta em frequencia do amplificador com 20V de amplitude. . . . . . . . . . . 62
6.6 Resposta em frequencia do filtro de 5a ordem com carga resistiva. . . . . . . . . . 63
6.7 Distorcao harmonica do amplificador com 5V de amplitude. . . . . . . . . . . . . . 64
6.8 Distorcao harmonica com 10V de amplitude. . . . . . . . . . . . . . . . . . . . . . 65
6.9 Distorcao harmonica com 15V de amplitude. . . . . . . . . . . . . . . . . . . . . . 66
6.10 Resposta na frequencia com 5V de amplitude (click modulation). . . . . . . . . . . 68
6.11 Resposta na frequencia com 20V de amplitude (click modulation). . . . . . . . . . 69
6.12 Distorcao harmonica com 5V de amplitude . . . . . . . . . . . . . . . . . . . . . . 70
6.13 Distorcao harmonica com 15V de amplitude . . . . . . . . . . . . . . . . . . . . . . 71
ix
x
Lista de Tabelas
4.1 AMR Mode Field Encoding . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
4.2 AMR values . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
4.3 Tabela de iteracoes para produto de pontos em vırgula fixa . . . . . . . . . . . . . 28
5.1 Seleccao das entradas do amplificador . . . . . . . . . . . . . . . . . . . . . . . . 41
5.2 Valores para os elementos do filtro passivo passa-baixo de Butterworth . . . . . . 47
5.3 Medicoes das bobines . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51
5.4 Formato da saıda de audio configurado por FMT[1:0] (Data Output Format Selection) 56
5.5 Frequencias de SCKO, BCKO, e LRCKO configuradas por PSCK[1:0] . . . . . . . 56
5.6 Codigo dos LED’s . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56
5.7 Funcoes dos interruptores . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57
1
1Introducao
Os amplificadores digitais ou amplificadores de classe T adicionam tecnicas de realimentacao
e/ou de processamento de sinal aos amplificadores de classe D de modo a obter melhor quali-
dade de audio e melhor rendimento.
O algoritmo click modulation destina-se a melhorar tanto o rendimento do amplificador como a
qualidade do sinal, ou seja obter um sinal de saıda com menor distorcao harmonica. O resultado
desta modulacao e um sinal de modulacao por largura de impulso (PWM) cuja componente
espectral em banda de base e identica ao sinal original (ausencia de distorcao) mesmo para
frequencias de comutacao baixas (em relacao ao PWM normal). Isto permite ter frequencias de
comutacao do andar de potencia menores o que induz menor interferencia electromagnetica e
maior rendimento do andar de potencia.
1
2Fundamentos teoricos da click
modulation
Neste capıtulo apresenta-se os fundamentos teoricos da click modulation. Dado um sinal
f(t) obtem-se um sinal analıtico1 a partir da transformada de Hilbert desse sinal somado com o
proprio sinal. Para acompanhar a explicacao seguinte, ver a Figura 2.1.
a. Apos o modulador exponencial, o sinal continua a ser analıtico.
Dado um sinal f(t) com transformada de Hilbert f(t), verifica-se que
E[e−j(f(t)+jf(t))] = E[ejf(t)+j(f(t))] (2.1)
e um valor finito.
b. Dado um sinal zf (t) com transformada de Fourier Zf (w), o sinal z∗f (t) tem transformada
Z∗f (−w). Isto justifica o grafico de Z∗
f .
c. S = <z∗f (t)× ejWpt e u = S × ejWpt = ejWpt ×<z∗f (t)× ejWpt = z∗f (t)×ej2Wpt+zf (t)
2 .
Esta expressao permite ver que o grafico de u esta certo, comparando com o de Zf e Z∗f .
d. A passagem de u para v′ e justificada da seguinte forma: se Wp − wu > ws
2 , ou seja
Wp > ws
2 + wu, entao a interferencia entre os espectros no grafico de u ocorre acima
de ws
2 . Isto quer dizer que para −∞ < w < ws
2 , o espectro de u coincide com o de Z.
1Um sinal analıtico so tem componentes espectrais para f > 0
2
Como f = j × log(z), podemos obter o sinal original, para −∞ < w < ws
2 , calculando
v′ = j × log(u). Acima de ws
2 o espectro nao coincide, mas nao importa pois pode ser
filtrado. Ao calcular-se v = <v′, o espectro passa a coincidir apenas para |w| ≤ ws
2 que
e precisamente o que interessa.
e. Ate aqui tem-se estado a trabalhar com sinais sem qualquer quantificacao de amplitude
ou tempo. O que se pretende na pratica e ter um sinal bipolar (±A) que tenha o mesmo
conteudo espectral de v(t) em banda de base. Isto pode ser feito da seguinte forma:
define-se o sinal periodico com perıodo πWp
, o sinal σ(t) = (−Wpt) mod π
Nota 1: Os zeros de σ(t) coincidem com os zeros de sin(Wpt)
Nota 2: Considerando a frequencia fundamental Wp, σ(t) admite a serie de Fourier
σ(t) =∞∑
n=−∞ane−jnWptdt (2.2)
an =2π
Wp
∫ πWp
−πWp
σ(t)e−jnWptdt =
=∫ −π
2Wp
−πWp
−Wp(t +π
Wp)e−jnWptdt +
∫ π2Wp
−π2Wp
−Wp(t)e−jnWptdt +
+∫ π
Wp
π2Wp
−Wp(t−π
Wp)e−jnWptdt =
=2j
Wp
−nπ cos( nπWp
) + sin(nπ)
n2=
=
0 , n = 0, 1, 3, ...2jWp
−nπ(−1)n2
n2 = − 2πjWp
(−1)n2
n , n = 2, 4, 6, ...(2.3)
de onde se conclui que a frequencia mınima de σ(t) e para n = 2, ou seja 2Wp. Isto
significa que σ(t) nao tem componente espectral para −2Wp < w < 2Wp. Entao,
nesta banda de frequencia o sinal q(t) = v(t)− σ(t) tem o mesmo conteudo espectral
de v(t) (note-se que so interessa a banda |w| < ws
2 , inferior a |w| < 2Wp).
Sabe-se que
u(t) = s(t)ejWpt = |s(t)|ej args(t)ejWpt
e que
v(t) = <j log(u(t)) = <j(j args(t)+ jWpt + log |s(t)|) =
= <− args(t) −Wpt + j log |s(t)| =
= − args(t) − (Wpt) mod π
3
Como s(t) e real, args(t) = π2 (sign(s(t))− 1) onde
sign(x) =
1 , x > 0−1 , x < 0
e portanto v(t) e uma rampa negativa com saltos de ±π, ver a Figura 2.2 e a Figura
2.3.
4
Figura 2.1: Sinais relevantes na Click modulation.
5
Figura 2.2: Sinal σ(t).
6
Figura 2.3: Sinais de Click modulation: geracao de sinal binario com o mesmo conteudo espec-tral do sinal de entrada.
7
3Implementacao
3.1 Dimensionamento
O sinal q(t) resultante substitui o sinal PWM que e usado no amplificador classe D.
Os filtros sao todos do tipo FIR, sao mais faceis de implementar, sao sempre estaveis e tem
fase linear. Todos os filtros tem de ter um numero de coeficientes multiplo de potencias de 2, isto
porque sao usados buffers circulares.
O filtro que realiza a transformada de Hilbert tem 1024 coeficientes. Com 512 coeficientes e
insuficiente pois o filtro fica com muita ondulacao (quase 2dB em amplitude nas baixas frequencias)
e 2048 coeficiente e demasiado para o tempo de processamento disponıvel. A Figura 3.2a
mostra a resposta em amplitude e fase. O metodo usado foi dos mınimos quadrados (least
squares, LS) porque verificou-se que e o que resulta na menor ondulacao da resposta de am-
plitude para este numero de coeficientes. Nota-se uma ondulacao nas baixas frequencias na
transformada de Hilbert, mas uma melhor resposta ao longo da frequencia como se pode ver na
Figura 3.2a. Na Figura 3.2b ve-se como seria pior usando o metodo equiripple para o mesmo
numero de coeficientes e largura de banda. A transformada quantizada com Q15 esta na Figura
3.3.
8
Figura 3.1: Dimensionamento do filtro que realiza a transformada de Hilbert usando a ferramentaFDATOOL.
9
(a) Metodo LS.
(b) Metodo equiripple.
Figura 3.2: Resposta em frequencia do transformador de Hilbert.
10
Figura 3.3: Resposta em frequencia do transformador de Hilbert, com quantizacao Q15 (LS).
O filtro passa baixo tem 256 coeficientes e foi desenhado com o metodo equiripple pelas
mesmas razoes da transformada de Hilbert, apesar de as diferencas entre os dois metodos
serem muito pequenas neste caso. Ver Figuras 3.7a e 3.7b para comparacao da ondulacao na
banda de passagem. Na banda de atenuacao, ambos os metodos sao semelhantes quando os
filtros sao quantizados em Q15 como se ve nas Figuras 3.6a e 3.6b
11
Figura 3.4: Dimensionamento do filtro passa-baixo usando a ferramenta FDATOOL.
12
(a) Metodo LS.
(b) Metodo equiripple.
Figura 3.5: Resposta em frequencia do filtro passa-baixo.
13
(a) Metodo LS.
(b) Metodo equiripple.
Figura 3.6: Resposta em frequencia do filtro passa baixo, com quantizacao Q15.
14
(a) Metodo LS.
(b) Metodo equiripple.
Figura 3.7: Resposta em frequencia do filtro passa baixo ampliada na zona de passagem, comquantizacao Q15.
15
Antes da modulacao exponencial em amplitude (Amplitude Exponencial Modulation, AEM)
e feita uma sobre-amostragem de 8 vezes por esta modulacao ter um espectro na frequencia
muito largo (infinito em teoria). Os filtros polifase usados foram retirados do filtro passa baixo
dimensionado anteriormente. A construcao desses filtros e o seu funcionamento encontram-se
representados nas Figuras 3.8 e 3.9 respectivamente.
Os filtros polifase tem uma grande vantagem no seu uso quando e necessario recorrer a
sobre-amostragem. Isto porque se evita que em cada ciclo Ts
L , em que L e o factor de sobre-
amostragem, se tenha de fazer a filtragem com amostras nulas. Sendo assim o numero de
operacoes em cada ciclo Ts
L e reduzido pelo factor L. De notar que para se usar este tipo de
filtros, o filtro original de onde se retira o filtro polifase, tem de ter um numero par de coeficientes.
Neste caso e neste trabalho nao ha problema pois so se usam filtros com um numero de coefi-
cientes multiplo de potencias de 2 porque e necessario usar buffers circulares para um melhor
desempenho.
Figura 3.8: Coeficientes do filtro polifase.
16
Figura 3.9: Filtro polifase - funcionamento.
A AEM e feita com tabelas do seno e exponencial porque o DSP nao tem capacidade para
este tipo de calculos em tempo real. A tabela do seno tem 14 de perıodo com 216
4 elementos, ver
Figura 3.10a, nao sendo necessario fazer interpolacao porque se trabalha com amostras de 16
bit. A tabela da exponencial tem 216 elementos, ver Figura 3.10b, mais uma vez nao e necessario
fazer interpolacao. Como este processador tem muita memoria (tem memoria suficiente para
ter a tabela do seno tambem com 216 elementos) optou-se por fazer-se tabelas de dimensoes
grandes e nao usar processamento para interpolacao.
17
(a) funcao seno/coseno. (b) funcao exponencial.
Figura 3.10: Tabelas para a AEM.
Os osciladores sao feitos a partir de duas tabelas, sin(ct) e cos(ct), cujo tamanho tem de ser
tal que a frequencia seja superior a 2 × fs. Da equacao (3.1) verifica-se que 7 e o numero de
elementos para estas tabelas com a frequencia de amostragem de 44.1kHz.
fosc =timerfreq
354× 1
7= 353.107kHz × 1
7= (8× 44.138kHz)× 1
7= 50.4kHz (3.1)
No final os zeros de s(t) e de sin(ct) sao enviados para a FPGA. Estes zeros sao calculados
com interpolacao linear entre as ultimas duas amostras utilizando palavras de 16 bit. Estes val-
ores sao usados na FPGA para gerar o sinal binario q(t) uma resolucao de 9 bit. Foi necessario
implementar uma malha de captura de fase (Phase Locked Loop, PLL) e uma linha de atraso do
tipo First In, First Out (FIFO) entre outra logica para os dados vindos do DSP porque existe jitter
na transmissao. Isto e explicado com mais detalhe no capıtulo 4.2.
Na FPGA, os valores dos zeros calculados no DSP sao carregados em tres contadores em
simultaneo (canal esquerdo, canal direito e sin(ct)). Estes valores que na FPGA sao truncados
para os 9 bits mais significativos dos 16 bits enviados pelo DSP sao decrementados ate atingirem
o valor zero, nesse exacto instante e transferido para a saıda o sinal do estado do sinal binario
que tambem e enviado para a FPGA. Esta saıda e o sinal binario q(t). A Figura 3.11 exemplifica
18
o funcionamento deste processo.
Figura 3.11: Geracao do sinal binario q(t).
Em todos os ciclos sao calculados os zeros dos tres sinais (se estes passaram por zero). Se
nao passaram por zero como se pode ver na Figura 3.11 nos pontos 1, 2, 3, 4 e 5, sao enviados
para a FPGA os ultimos zeros que foram calculados. E tambem enviado para a FPGA o estado
que se pretende que o sinal binario q(t) mude, desse modo, o sinal binario q(t) so muda quando
e encontrado um novo zero.
Como se ve ainda na mesma figura, os contadores estao sempre a decrementar o valor do
zero calculado desde da ultima passagem por zero do respectivo sinal mas o sinal q(t) mantem
o seu estado pois o DSP envia tambem sempre o mesmo valor de estado que no caso da figura
e o ”0”. Quando o sinal passa pelo zero, o DSP muda tambem o estado, enviando o novo valor
do zero e do novo estado do sinal q(t).
E de salientar que na Figura 3.11 os erros de calculo e de mudanca de estado do sinal q(t)
19
representados estao exagerados para ser mais facil a visualizacao.
3.2 Hardware
A modulacao do sinal de entrada e feita com um DSP, onde e feito o calculo dos zeros por
interpolacao linear de s(t) e sin(ct). Em seguida os zeros sao enviados para a FPGA que gera
o sinal binario com resolucao de 9 bit.
No inıcio foi usado o DSP de vırgula flutuante TMS320C6713 porque assim o calculo da
modulacao exponencial seria em vırgula flutuante de resolucao com 32 ou 64 bit. Verificou-
se que apesar de ser de vırgula flutuante nao era suficientemente rapido e foi necessario usar
tabelas para o calculo da exponencial. Mesmo assim este processador nao atingiu o desem-
penho necessario e optou-se pelo TMS320C6416 que e de vırgula fixa, mas com 1GHz de
relogio.
Quanto a FPGA, tanto a SPARTAN II como a SPARTAN3 podem ser usadas para a geracao
do sinal binario ja que ambas tem o desempenho necessario para a resolucao pretendida, ou
seja 180MHz para 9 bit.
Os amplificadores usados sao os circuitos integrados TAS5261 [14] da Texas Instruments. A
escolha destes circuitos integrados foi baseada na potencia. Para alem da potencia verifica-se
que tem uma boa relacao sinal/ruıdo (SNR) e distorcao harmonica total (THD).
Outros integrados que fazem parte da placa projectada sao:
• conversor SPDIF/PWM TAS5518 [15] - usado na placa de demonstracao da TEXAS, TAS5518-
5261EVM [16]
• conversor PCM/PWM TAS5010 [18]
• conversor Analogico/PCM PCM1802 [19].
Os conversores TAS5010 e PCM1802 foram adicionados a placa para se ter uma entrada analogica.
Escolheram-se estes circuitos integrados tendo em conta a sua boa relacao sinal/ruıdo (SNR)
e distorcao harmonica total (THD) e tambem a simplicidade de implementacao. Na Figura 3.12
pode-se ver o diagrama de blocos do sistema implementado.
20
Figura 3.12: Diagrama de blocos do sistema implementado
A fotografia de todo o sistema montado encontra-se na Figura 3.13.
Figura 3.13: Sistema montado.
21
4Codificacao do algoritmo
4.1 Processamento realizado no DSP
4.1.1 Temporizadores
Para se ter uma banda de audio de 0 a 22kHz, a frequencia de amostragem tem que ser
maior ou igual a 44kHz.
Para configurar os tempos da sobre amostragem usa-se um dos temporizadores (timers)
do DSP [29] para gerar a interrupcao de sincronismo. O relogio dos temporizadores e 18 ×
DSPclock = 125MHz e como se quer fs ≥ 44kHZ, tendo o contador configurado para 354
tem-se um relogio de 44.138kHz como se ve pela equacao (4.1).
N =DSPclock
8× 1
44.138kHz=
125MHz
8× 1
44.138kHz≈ 354 ⇒ 354 contagens (4.1)
Como e usado uma sobre amostragem de 8 vezes, fica-se com um tempo de calculo muito
reduzido, ou seja,
tc =1
8× Fs=
18× 44.138kHz
=1
353.104kHz≈ 2.832ms (4.2)
22
Figura 4.1: Registo de controlo do temporizador (Timer Control Register).
Para configurar o temporizador usou-se a funcao da biblioteca CSL que esta exemplificada
nas linhas de codigo a seguir. A biblioteca CSL (TMS320C6000 Chip Support Library) e um
conjunto de APIs (Application Programming Interfaces) usadas para configurar e controlar os
perifericos do DSP. E suposto ser usada para facilitar o desenvolvimento de algoritmos aos
programadores e eliminar o trabalho de baixo nıvel. Consultar [28] para detalhes. Tambem
podia ser usada a configuracao com acesso directo aos registos do temporizador atraves dos
seus enderecos.
TIMER_configArgs(
hTimer0,
TimerControl1, // use predefined control value
354, // se usar o clock do DSP (1GHz/8=125MHz)
// 125MHz / (8 x 44.1kHz) = 354.3084
0x00000000 // start count value at zero
);
A estrutura TimerControl1 contem apenas os valores de cada campo do registo de controlo
do temporizador, Figura 4.1.
4.1.2 Registos circulares
Para se obter maior desempenho no processamento e como os filtros tem muitos coefi-
cientes, e necessario usar registos (buffers) circulares. O uso deste tipo de registos requer a
actualizacao do ındice de enderecamento respectivo sempre que e obtida uma nova amostra,
mas este DSP tem hardware proprio para esta finalidade. Para se fazer uso do hardware, e pre-
ciso programar o registo de modo de enderecamento (Addressing Mode Register, AMR). So e
possıvel usar este modo de enderecamento por hardware usando a programacao em assembly.
23
Figura 4.2: Registo de Modo de Enderecamento, AMR.
Tabela 4.1: AMR Mode Field Encoding
Mode Adressing Option00 Linear Mode01 Circular Mode using BK0 size10 Circular Mode using BK1 size11 Reserved
A Figura 4.3 exemplifica a funcao do registo AMR para o filtro da transformada de Hilbert.
Para os filtros passa baixo polifase e para o filtro passa baixo, o funcionamento e exactamente o
mesmo variando somente o tamanho dos buffers e a zona de memoria onde estes se encontram.
Como se pode ver na Figura 4.3, admite-se que o registo do filtro da transformada de Hilbert
se situa na zona de memoria entre 0x80000000 e 0x80000FFC, pois este registo (que e uma
linha de atraso) tem 1024 amostras do canal esquerdo e do canal direito (e explicado com mais
detalhe na subseccao 4.1.3 o porque de dois canais no mesmo registo), com 16 bits para cada
amostra resulta um registo com um tamanho de 4096 bytes. Pela Tabela 4.2 verifica-se que o
campo ”B4 mode”tem o valor ”0b01”e portanto o registo B4 e usado como ponteiro. O campo
BK0 toma o valor 0xB porque este valor tem de ser tal que:
BK0 = 2buffers× 2bytes×Ncoefs =
= 2× 2× 1024 =
= 20xB+0x1 = 20xC = 212 = 4096 bytes (4.3)
24
(a) 1024a amostra (b) 1025a amostra
Figura 4.3: Registo circular usado no calculo do filtro de Hilbert.
Deste modo, sempre que e chamada a funcao asmfilter, sao passados como parametros os
valores da Tabela 4.2 de acordo com a filtragem que se vai fazer e tambem o valor da posicao de
B4 que foi guardado no final da ultima chamada a funcao para que se introduza a nova amostra
e se faca a filtragem com enderecamento circular a partir dessa mesma posicao. Para mais
detalhes, consultar [12].
A linha de codigo para a programacao do AMR na funcao asmfilter e a seguinte:
MVC .S2 B8,AMR
Em que B8 e o conteudo do parametro da chamada a funcao que contem o valor da Tabela
4.2.
Tabela 4.2: AMR values
Tipo de filtragem ValorHilbert Transform 0x000B0100Low pass 0x00090100Polyphase 0x00060100
Na seccao 4.1.3 e explicado com maior detalhe porque e que se calcula o valor de BK0 na
equacao (4.3) para dois registos.
4.1.3 Filtragem
Fazer a filtragem com programacao em C resulta num desempenho extremamente baixo e
isto deve-se tambem ao facto de o compilador de C nao usar de modo eficiente o pipeline do
25
DSP.
Para se usar o pipeline e todas as unidades logicas do DSP (Figura 4.4) de modo eficaz, a
parte do calculo dos filtros teve de ser codificada em linguagem assembly (ver textos de apoio
para a programacao em assembly, [9] e [13]).
Com a rotina asmfilter calcula-se a saıda do filtro para o canal esquerdo e direito exactamente
ao mesmo tempo. Isto e, o DSP (tal como o C6713) tem 2 unidades para cada operacao de
multiplicacao (M1 e M2), soma (S1 e S2), logica (L1 e L2) e de enderecamento (D1 e D2) como
se pode ver na Figura 4.4 e para mais detalhes consultar [26].
26
Figura 4.4: TMS320C64xTM CPU (DSP Core) Data Paths.
27
Em cada ciclo fazem-se duas somas e duas multiplicacoes que correspondem a uma amostra
de cada canal.
Em cada ciclo e necessario fazer o LOAD de um coeficiente do filtro, e mais dois LOAD’s de
duas amostras do buffer (uma de cada canal). Portanto, no toal sao 3 LOAD’s em simultaneo e so
ha duas unidades de enderecamento. Este problema foi resolvido ao criar apenas um buffer com
o dobro do tamanho de um buffer de cada canal com amostras alternadas do canal esquerdo e
direito de 16 bit cada uma. Deste modo faz-se um LOAD de 32 bit (LDW) e assim tem-se acesso
as amostras do canal esquerdo e direito mais o coeficiente do filtro ao mesmo tempo em cada
ciclo.
Tabela 4.3: Tabela de iteracoes para produto de pontos em vırgula fixa
A Tabela 4.3 apresenta como e feito o preambulo (prolog) desta rotina em assembly. Como
se pode ver, um LOAD da memoria tem cinco ciclos de atraso e portanto esse valor so estara
disponıvel no barramento de dados apos cinco ciclos. Como esse valor vai ser usado para a
operacao de multiplicacao, as instrucoes MPY e MPYH [9] so sao executadas cinco ciclos depois
da instrucao LDW [9]. As instrucoes SUB e B (subtract e branch) seguem a mesma regra,
mas neste trabalho executa-se a rotina com menos seis iteracoes (passado como parametro
para a rotina) e assim nao e necessario executar estas duas instrucoes antes do loop. Nao se
ganha desempenho pois estas duas instrucoes sao executadas em paralelo, mas ganha-se em
tamanho de codigo.
A zona a sombreado e o loop porque como se verifica, e executado dois ciclos apos o MPY
e MPYH porque estas instrucoes tem dois ciclos de atraso e o valor obtido da multiplicacao so
esta disponıvel no barramento de dados para as instrucoes ADD dois ciclos apos sua execucao.
28
E muito importante referenciar que o loop para alem de ter menos sete iteracoes relativa-
mente ao total do tamanho dos filtros por causa das instrucoes LDW e MPY/MPYH iniciais,
tambem tem de ter menos seis iteracoes (menos 13 no total) para nao ser feito LOADs em
zonas de memorias nao mapeadas uma vez que este procedimento pode gerar resultados im-
previsıveis, tais como abortar o processamento e ser necessario reiniciar o DSP. Este comporta-
mento e alertado pela TEXAS INSTRUMENTS e tambem foi verificado no desenvolvimento desta
rotina tendo sido corrigido depois. De lembrar que o registo B4 e usado como enderecamento
circular (para os buffers de amostras) e portanto nao haveria problema em fazer mais LOADs
do que o necessario pois estar-se-ia sempre dentro do array dimensionado mas o registo A4 e
um ponteiro para a tabela de coeficientes dos filtros e se se fizer mais LOADs do que o compri-
mento do filtro, comeca-se a entrar em zonas de memoria desconhecidas que podem nao estar
mapeadas. Por exemplo, no filtro da transformada de HILBERT, que tem 1024 coeficientes, e
passado para a funcao assembly 1024− 7− 6 = 1011 que e o numero total de iteracoes do loop.
Claro que depois do loop sao executados as restantes somas e multiplicacoes dos dados que
vao estando disponıveis nos cinco ciclos seguintes das instrucoes LDW. Toda esta teoria esta
muito bem apresentada em [9] e [13].
O codigo seguinte e o loop da funcao. As barras paralelas ”||”significam que as instrucoes
consecutivas sao executadas paralelamente com a primeira que nao tem as barras, usando as
respectivas unidades que estao explıcitas a seguir a instrucao. Neste caso, dentro do loop, todas
as instrucoes sao executadas em paralelo. E como se pode verificar, esta-se a usar todas as
unidades do DSP em simultaneo.
29
loop:
LDH .D1 *A4--,A7
|| LDW .D2 *B4++,B7
|| MPY .M1x A7,B7,A5
|| MPYLH .M2x A7,B7,B5
|| ADD .L1 A5,A8,A8
|| ADD .L2 B5,B8,B8
|| [A1] SUB .S1 A1,1,A1
|| [A1] B .S2 loop
;end loop
Idealmente esta rotina deveria executar em exactamente 1024 ciclos (para o filtro da trans-
formada de HILBERT) com apenas mais 13 ciclos para as instrucoes de configuracao do registo
AMR, arranjo dos registos, dos resultados finais (SHR) e para o STORE. Ficando um total de
1037 ciclos. Usando a ferramenta Profile do Code Composer Studio verifica-se que tal nao
acontece porque ha stalls no pipeline. Isso porque ha acessos a bancos de memoria iguais
em simultaneo e nesta famılia de DSP’s so e possıvel um acesso de cada vez a cada banco
de memoria e isso para o pipeline. E possıvel ter dois acessos a memoria, desde que sejam
feitos a bancos de memoria diferentes. Este algoritmo ainda pode ser melhorado separando os
dados em bancos de memoria em modo enterlacado (interleaved), mas isso pode ficar para uma
versao futura. Mais uma vez, toda esta informacao esta disponıvel com algum detalhe em [9] e
[10].
Figura 4.5: Implementacao da click modulation no DSP.
Na Figura 4.5 apresenta-se a implementacao dos registos em que cada elemento tem 16
bit porque as amostras do sinal a modular sao de 16 bit. O registo anterior a transformada de
Hilbert tem o dobro do tamanho da transformada que neste caso e de 1024 coeficientes, logo o
30
registo tem 2048 coeficientes, pois esta contido no registo o canal esquerdo e o canal direito. O
filtro de atraso apenas retira amostras do registo anterior com ındice 1023 e 1024 (metade do
comprimento do filtro).
Os registos de saıda da transformada de Hilbert e de atraso tem o dobro do comprimento
do filtro passa baixo polifase. O filtro passa baixo dimensionado tem 256 coeficientes.Como se
usam filtros polifase (com sobre-amostragem), em cada ciclo da sobre-amostragem o filtro tem18 do tamanho do filtro sem polifase, assim estes buffers tem 2× 256
8 = 64 amostras.
A modulacao exponencial em amplitude, AEM, e feita por tabelas (LTU’s1). Foram feitas duas
tabelas, uma para o seno e outra para a exponencial. A tabela da exponencial e de 16bit, a
do seno e de 14bit mas so tem 14 de perıodo. A razao de se usar tabelas com dimensoes tao
grandes e porque o tempo para processamento e muito crıtico para se fazer interpolacao e existe
muita memoria disponıvel no TMS320C6416T (1Mbyte).
O temporizador 0 (timer0) [29] e usado para fazer sobre amostragem de 8 vezes. O valor da
contagem ja foi explicado na expressao 4.1.
A frequencia de amostragem do codec esta programada para 96kHz. Como e usado pooling
e o McBSP2[11] so aceita uma nova amostra quando for lida a amostra que esta em espera no
registo, o codec so actualiza o registo do McBSP com uma nova amostra quando esta for lida
com a interrupcao disparada pelo timer0 a um ritmo de fs = 44.138kHz.
O processamento de todo o algoritmo tem um tempo de
C =1
478.564kHz≈ 2.09µs (4.4)
O tempo de calculo foi determinado fazendo o processamento de todo o algoritmo (com o
pior caso, ou seja, transformada de Hilbert em todos os ciclos da sobre amostragem) num ciclo
infinito e no final escrever para o EMIF3, assim vendo no osciloscopio a forma de onda da escrita
em Write Enable (AWE) do EMIF tira-se o tempo acima referido. Deste modo verifica-se que
o processamento e mais rapido que o tempo da sobre-amostragem disponıvel que e 2.832ms
(expressao 4.2).
Os zeros do sinal q(t) (do canal esquerdo e direito) e sin(ct) sao enviados para a FPGA pelo
EMIF [27] do DSP.
A configuracao do EMIF encontra-se nas seguintes linhas de codigo:
#define EMIF_CE2 0x01800010
#define EMIF_GBLCTL 0x01800000
*(int *)EMIF_CE2 = 0x42040221;
*(int *)EMIF_GBLCTL = 0x00000000;//spru266a.pdf pag.4-58 tab.4-16
1Look Up Tables2Multichannel Buffered Serial Port3External Memory Interface
31
As duas primeiras linhas com #define sao o endereco fısico dos dois registos.
Figura 4.6: EMIF Global Control Register.
Figura 4.7: EMIF CE Space Control Register (CECTL).
Os tempos de Write Setup, WRSETUP write strobe, WRTSTRB e write hold, WRHLD foram
configurados tendo em conta ter os impulsos mais curtos possıveis, de modo a serem lidos com
sucesso pela FPGA.
Pela Figura 4.8 configurou-se o write setup para o maximo para que a FPGA lesse bem os
dados, mas nunca funcionou. Teve que ser adicionado um atraso apos /AWE na leitura dos
dados na propria FPGA para que tudo funcionasse correctamente como se vera na seccao 4.2.
32
Figura 4.8: Asynchronous Write Timing Diagram.
As Figuras 4.9 e 4.10 exemplificam o funcionamento da implementacao no DSP. Note-se
que o tempo de processamento e menor que Ts
8 e que Ts esta dividido sincronamente com a
interrupcao temporizada a Ts
8 .
Figura 4.9: Aquisicao de amostras e sincronismo.
33
Figura 4.10: Fluxograma do processamento de sinal no DSP.
34
4.2 Processamento realizado na FPGA
A SPARTAN3 usada (timing -4) pode funcionar ate 630MHz, mas como o oscilador que esta
na placa de desenvolvimento Spartan-3 Starter Kit Board User Guide [38] e de 50 MHz, tem que
se usar a saıda FX das DLL’s4 para se obter o relogio que se pretende. O problema e que esta
saıda tem um clock maximo de 307MHz [37] pag. 89. Como se verifica na equacao (4.5), com
este relogio, a resolucao maxima do sinal binario q(t) e de 9bit.
Figura 4.11: Placa de desenvolvimento SPARTAN3 Starter Kit.
Para esta implementacao, o XILINX calculou um relogio maximo de 80.541MHz. Apesar de
se estar a funcionar a 180MHz, com 9bits, parece obter-se melhores resultados do que com 8bit
a metade da velocidade usada.
Nbits = blog(fFPGAmax
LOverSampling × fs)c = blog(
307MHz
8× 44.138kHz)c = b9.76 bitc = 9 bit (4.5)
O relogio desejado e:
fClock =DSPclk
8× 1
354× 29 =
=125MHz
354× 29 ≈ 180790960.452MHz ≈ 180.791MHz (4.6)
Na Figura 4.12 pode-se ver o sumario do projecto feito no XILINX. A utilizacao da FPGA
e muito pequena, mas foi necessario usar todos os DCMs5 para se obter um relogio o mais
proximo possıvel do desejado, ou seja, como menor erro possıvel. Cada DCM tem um divisor e4Delay Locked Loop5Digital Clock Manager
35
Figura 4.12: Sumario do projecto no XILINX.
um multiplicador, cada um destes pode tomar um valor inteiro entre 1 e 32. Usando os 4 DCMs
da FPGA e usando um programa em Matlab, encontra-se a seguinte combinacao para os DCMs:
fClockFX = 50MHz × 1710× 9
16× 11
8× 11
4≈ 180791015.625Hz ≈ 180.791MHz (4.7)
O erro relativo da frequencia do relogio obtido para o desejado (teorico) vem das equacoes
4.7 e 4.6:
ε = 1− fClockFX
fClock≈ 0.000000305176% (4.8)
A Figura 4.13 esquematiza a configuracao da ligacao e relogios de ligacao entre o DSP e
a FPGA. Tambem apresenta de forma resumida o processamento e as funcoes de cada bloco
usado. Sao enviados sinais de controlo que nao estao incluıdos na figura. Na realidade sao
enviados 17bit (zeros calculados com 16bit de resolucao mais 1bit de sinal), mas na FPGA so
se utilizam os 9 bits mais significativos. O bit mais significativo, o 17o que e o bit 10, e o bit de
sinalizacao que indica que o sinal q(t) vai comutar.
Figura 4.13: Esquema de relogios e de processamento.
36
O DSP envia dados para a FPGA com um relogio que tem jitter. Para solucionar esse prob-
lema, implementam-se na FPGA tres linhas de atraso (buffers) do tipo first in, first out (FIFO)
em que a escrita e a leitura do buffer se faz desfasadamente com uma diferenca entre o pon-
teiro de escrita e o de leitura de metade do tamanho do buffer. Isto e feito utilizando uma flag
das FIFOs. Esta flag activa o Read Enable das tres FIFO’s em simultaneo quando o buffer das
FIFOs atinge metade da sua capacidade (flag progempty) e volta a zero quando outra flag, o
treshold e activada quando o numero total de palvras na FIFO desce abaixo de 2 elementos. O
tamanho destes buffers foi dimensionado de acordo com testes experimentais. O valor mınimo
que se verificou uma leitura sem perdas dos dados por parte da FPGA foi para 16 palavras, no
entanto, o algoritmo so funcionou bem para buffers com tamanho igual ou superior a 32 palavras.
Isto significa que para 15 palavras deve haver perda de informacao que nao era possıvel ver no
osciloscopio.
As FIFO’s foram desenhadas com a ferramenta CORE Generator da XILINX. Esta ferramenta
da a possibilidade de escolher o tamanho da FIFO, numero de bits dos elementos e varias flags
de saıda para depuramento (debug) e controlo.
Na Figura 4.14 esta esquematizado a estrutura implementada na FPGA de uma forma sim-
ples. O ADD (Address) selecciona entre as FIFO’s do canal esquerdo, direito e do oscilador.
Os contadores sao carregados com um novo valor sempre que houver um flanco ascendente
do relogio da PLL que esta sıncrono com o Write Enable (AWE) que vem do DSP. Os contadores
estao permanentemente em contagem, quando o valor a saıda e nulo, o bloco do CLIP poe o
valor de signin (o decimo bit - Figura 4.13) na saıda. Nao importa que os contadores deem a
volta ao valor de contagem porque o valor de signin mantem-se na saıda do bloco CLIP. Este
procedimento ja foi explicado com algum detalhe no Capıtulo 3.2 e Figura 3.11.
Apesar do EMIF ter sido configurado no DSP para o AWE ter um atraso relativamente a
escrita dos dados no barramento, nao foi suficiente para a FPGA ler correctamente os dados.
Teve que ser feito na FPGA um atraso relativamente ao sinal de AWE para ler os dados ao
barramento e escreve-los nas FIFO’s, ver Figura 4.15.
A Figura 4.16 exemplifica como e obtido o relogio PLLoutput. Este relogio tem a mesma
frequencia do ritmo a que chegam os dados do DSP, ou seja, 8 × fs. O flanco ascendente e
gerado aquando a primeira escrita de dados de um perıodo. De notar que isso nao afecta a leitura
dos dados das tres FIFOs porque apesar de ainda nao ter escritos os dados nas outras duas
FIFOs, ja estao disponıveis os dados nas tres FIFOs para leitura, como se pode ver na Figura
4.17. A primeira escrita e feita no endereco ADD[1 : 0] = ”00”, a segunda em ADD[1 : 0] = ”01”
e a terceira em ADD[1 : 0] = ”10”. O sinal de saıda da PLL volta ao estado ”0”quando o bit mais
significativo de um contador (com o clock gerado pelas PLLs) de 8bit for ”1”, originando assim
uma onda quadrada. O contador e activado com ADD[1 : 0] = ”00”.
37
Figura 4.14: Gerador do sinal q(t) com resolucao de 9bit.
38
Figura 4.15: Atraso relativamente ao AWE para o CLK das FIFOs.
Figura 4.16: Funcionamento da PLL.
Figura 4.17: Escrita e leitura das FIFOs.
39
5Descricao dos Circuitos
5.1 Andar de potencia
Na Figura 5.1 estao representados os principais conectores e componentes do amplificador.
O interruptor S1 selecciona as tres possıveis entradas do amplificador. Ver Tabela 5.1.
Figura 5.1: Desenho da Placa de circuito impresso do amplificador de classe D.
40
Tabela 5.1: Seleccao das entradas do amplificador
Configuracao Entrada seleccionada00 S/PDIF (TAS5518)01 ANALOG (PCM1801-TAS5010)10 External Binary Signal11 NA
Os conectores J40 e J60 permitem controlar o conversor TAS5518 por meio de uma interface
I2C (Inter-Integrated Circuit) atraves de uma placa da TEXAS que e ligada a um computador por
USB. Esta placa vem incluıda com a placa original do amplificador mas nao e fornecida qualquer
informacao sobre ela. Ver manual TAS5518-5261K2EVM User’s Guide [17] para detalhes.
Os conectores J100 e J200 sao as saıdas para as colunas de som.
Os conectores J900 e J901 sao as alimentacoes da placa. Para mais detalhes ver o esquema
no PROTEL ou o manual da placa TAS5518-5261K2EVM Evaluation Module.
Esta placa e baseada na placa TAS5518-5261K2EVM [16] da Texas Instruments com a
diferenca de ter sido adicionada uma entrada analogica e uma ligacao directa para PWM, pois
esta placa originalmente so tem entrada S/PDIF 1. Foi tambem desenhada de modo a ter menor
area.
A entrada analogica e constituıda pelos integrados PCM1802 [19] e pelo TAS5010 [18]. Estes
integrados foram escolhido tendo em conta a THD, SNR e a gama dinamica (Dynamic Range).
A placa foi projectada em Protel 2004. Foram feitas correccoes a placa depois de montada
para o seu correcto funcionamento. O projecto no Protel 2004 tambem foi corrigido no caso de
ser necessario fazer uma nova versao e foram incluıdos melhoramentos para uma maior facili-
dade de montagem dos componentes e tambem incluıdas as alteracoes que a Texas Instruments
fez desde a primeira versao da placa original TAS5518-5261K2EVM, excepto a troca do conver-
sor TPS62112 [20] (entrada 12V, saıda 5V). Este integrado foi mantido pois consegue fornecer
mais corrente do que a que e necessaria e o integrado que foi substituıdo nao esta disponıvel
em amostras.
O filtro analogico passa baixo foi alterado para um filtro de 5a ordem. Os restantes com-
ponentes do filtro foram montados numa breadboard ficando na placa a primeira bobine e o
condensador do filtro.
Foram adicionados conversores TPS79133 [21] (5V entrada, 3.3V saıda) para os integrados
PCM1802, TAS5010, demux’s SN74HC4852 [23], NAND’s SN74LVC00A [24] e para o comutador
SN74LVC1G3157 [22].
Para o master clock dos integrados PCM1802 e TAS5010 foi feito um oscilador [25] com o
integrado de NAND’s SN74LVC00A. Este integrado foi escolhido tendo em conta a frequencia1Sony/Philips Digital Interconnect Format
41
pretendida do oscilador, o atraso maximo das portas e com uma tensao de alimentacao de 3.3V
pois e o nıvel de tensao digital dos integrados PCM1802 e TAS5010. O atraso maximo em cada
porta do SN74LVC00A e de 5.5ns com uma tensao de alimentacao de 3.3V. Como a frequencia
pretendida e de 24.576MHz e sao usadas 3 portas para o oscilador:
tpmax = 3× 5.5ns = 16.5ns (5.1)
Fmax =1
tpmax=
116.5ns
≈ 181.82MHz (5.2)
Conclui-se facilmente que estas tres portas sao suficientes para gerar a frequencia pretendida
para este oscilador.
Foi escolhida esta frequencia para o master clock destes integrados simplesmente porque foi
o unico cristal encontrado compatıvel com as configuracoes de frequencias destes integrados.
Com esta frequencia, resulta uma frequencia de amostragem de 96kHz, pag. 5 de [18] e pag.
13 de [19]. O esquema do oscilador foi tirado da pagina 13 de [25] e esta representado na
Figura 5.2. Foram feitas modificacoes por tentativas ate se obter um oscilador e uma onda o
mais proximo possıvel da forma quadrada com a frequencia pretendida.
Figura 5.2: Oscilador
A configuracao dos relogios e frequencia de amostragem do sistema de conversao analogico
para PWM encontra-se resumido na Figura 5.3.
42
Figura 5.3: PCM1802 - TAS5010
As alteracoes feitas no Protel 2004 para a nova versao da placa (V1.1a) sao as seguintes:
• Alteracao do package do integrado das NAND’s porque foi muito difıcil soldar um integrado
tao pequeno e sem pinos.
• Aumento das dimensoes das pads para todos os footprints que nao estavam nas bibliotecas
do Protel 2004. Estes estavam com a medida exacta dos pinos dos integrados o que
dificultou o processo de soldura.
• Foram corrigidas as dimensoes de algumas vias de componentes cujas footprints nao es-
tavam nas bibliotecas.
• Foi adicionado um comutador para a entrada RESET dos integrados TAS5261 porque esta
entrada esta ligada ao VALID do TAS5518. Esta saıda vem a ’1’ quando tem um PWM
valido tirando o TAS5261 do estado RESET, pois o RESET e activo LOW. Entao, quando
se selecciona a entrada analogica ou a entrada directa PWM, tem que se introduzir ’1’ no
RESET do TAS5261 porque nao se usou a saıda VALID do TAS5010 nem se usa este sinal
na entrada directa PWM. Logo quando se selecciona a entrada analogica ou a entrada
directa de PWM, a entrada dos TAS5261 RESET esta sempre no nıvel ’1’ (desactivada).
• Foram adicionados condensadores de desacoplamento aos integrados dos demux’s e das
NAND’s.
• Foram feitas varias correccoes a montagem do conversor PCM1802.
A placa projectada esta representada na Figura 5.4. Na Figura 5.5 esta representada a placa
com o filtro analogico modificado. No Capıtulo 5.3 explica-se porque foi necessario alterar o filtro
analogico do andar de potencia.
43
Figura 5.4: Placa projectada com filtro original.
Figura 5.5: Andar de potencia com filtro de 5a ordem.
44
5.2 Amplificador
Os integrados escolhidos (TAS5261) usam a configuracao de ponte completa. Esta configuracao
tem vantagens sobre a ponte simples. A ponte completa e constituıda por duas pontes simples
com a carga ligada diferencialmente entre as pontes. Este tipo de carga e denominada por
Bridge-Tied Load (BTL). Isto permite que a corrente flua nos dois sentidos na carga dispen-
sando assim uma fonte de tensao negativa ou de um condensador para bloquear corrente DC
quando se usa so uma fonte de tensao [41].
(a) Configuracao ponte simples. (b) Configuracao ponte completa.
Figura 5.6: Configuracoes do andar de amplificacao em classe D
O condensador para bloquear a corrente DC numa ponte simples com uma so fonte de
alimentacao e necessario pelo seguinte, a saıda oscila nos valores VDD e GND e ficam em
idle quando o PWM tem um facto de ciclo de 50%, o que significa que a saıda tem um offset
de VDD/2. Com a ponte completa isto nao se passa, pois este offset aparece em cada lado da
carga o que implica que a corrente DC na carga e nula.
Um problema da ponte simples e o bus pumping [40]. Isto acontece porque a energia na
carga e bidireccional e ha um perıodo em que essa energia volta para a fonte. Este prob-
lema acontece nas baixas frequencias. Normalmente as fontes nao estao preparadas para ab-
sorver energia devolvida pela carga. Consequentemente a tensao na linha (bus voltage) au-
menta provocando flutuacoes. Este problema e grave nos amplificadores de classe D pois a
amplitude do sinal de saıda e directamente proporcional a amplitude da tensao de alimentacao
introduzindo assim distorcao. A maior parte da energia que e devolvida a fonte tem origem na
bobine da carga.
A desvantagem da ponte completa e de ser necessario mais circuitos e consequentemente
haver mais perdas por comutacao dos transistores, principalmente para potencias elevadas.
45
5.3 Filtro Analogico
O filtro analogico e uma parte importante deste trabalho pois tem um efeito relevante no
desempenho do amplificador.
O filtro que vinha com a placa era de segunda ordem, atenuando apenas 10 dB aos 100 kHz
(ver a Figura 5.9) o que e suficiente para o que esta placa foi dimensionada, pois a frequencia
de comutacao dos amplificadores original e igual ou superior a 192 kHz e nao na ordem dos
50.4 kHz como e utilizado neste trabalho. Isto porque 2 × 50.4 kHz e a segunda harmonica da
modulacao utilizada no algoritmo. O grafico da Figura 5.9 foi verificado experimentalmente, mas
como nao foram guardados os dados do analisador de espectros, nao se incluiu um grafico de
teste real. Como o filtro foi alterado para o de quinta ordem (bobines refeitas tambem) ja nao
houve oportunidade de testar o filtro de segunda ordem.
Figura 5.7: Circuito do filtro de Butterworth de 5a ordem passivo.
Figura 5.8: Circuito do filtro de Butterworth de 5a ordem diferencial passivo.
46
Figura 5.9: Filtro de Butterworth de 2a ordem diferencial.
Foi necessario dimensionar um filtro de maior ordem para se ter uma maior atenuacao a
partir da frequencia 50.4 kHz que e a frequencia de comutacao do andar de potencia.
Um filtro de 4a ordem teria sido suficiente, mas como nao havia condensadores disponıveis
para as tensoes em jogo, tiveram que ser aproveitados os condensadores ja existentes no labo-
ratorio que eram todos de 1µF . Um filtro de 5a ordem da a hipotese de ter dois condensadores
iguais no mesmo ramo e por isso foi essa a ordem escolhida.
A aproximacao utilizada foi a de Butterworth para se ter menor ondulacao na banda de pas-
sagem. O dimensionamento foi o indicado na Tabela 5.2, retirada de [42].
Tabela 5.2: Valores para os elementos do filtro passivo passa-baixo de Butterworth
Os condensadores disponıveis foram medidos, tendo valores aproximados de 0.96µF .
Como se verifica na equacao (5.3), para este valor de capacidade, a frequencia de corte e de
35.530kHz. De notar que ZL e a impedancia do altifalante para a qual o filtro e dimensiondo e
47
tem o valor de 8Ω. O dimensionamento e feito para uma carga resistiva pura.
O dimensionamento das bobines nas equacoes (5.4) e (5.5) vem da frequencia encontrada
para os valores dos condensadores disponıveis.
fc =1.6180
2× π × C× 1
ZL=
1.61802× π × 0.96µ
× 18
= 33.530kHz (5.3)
L1 = L2 = L9 = L10 =0.6180
2× π × fc× ZL ×
12
=
=0.6180
2× π × 33.530kHz× 8× 1
2= 11.73µH (5.4)
L6 = L8 =2
2× π × fc× ZL ×
12
=
=2
2× π × 33.530kHz× 8× 1
2= 37.97µH (5.5)
Os resultados da simulacao feita em PSPICE encontram-se nas Figuras 5.10 e 5.11 com os
valores ideais dos condensadores e bobines. Como se verifica, o filtro simples e o diferencial
tem a mesma resposta. A diferenca entre os dois e que depois de dimensionado o filtro simples,
basta espelhar o filtro, duplicar o valor dos condensadores e dividir o das bobines para metade.
Figura 5.10: Filtro RLC de Butterworth 5a ordem simples.
48
Figura 5.11: Filtro RLC de Butterworth 5a ordem diferencial.
Pelos graficos verifica-se que aos 100kHz tem-se uma atenuacao superior a 50 dB o que e
muito melhor que o filtro de 2a ordem de origem.
A resistencia das bobines e muito baixa e as perdas nao sao muito significativas comparadas
com a carga do amplificador, 8Ω.
Experimentalmente pode ver-se na Figura 5.12, que o filtro tem uma resposta coincidente
com a que foi projectada e na Figura 5.13 ve-se que tem uma ondulacao na amplitude de -2
dB na banda de interesse (que neste trabalho e ate aos 22 kHz). Estas medicoes (Figuras
5.12 e 5.13) foram feitas com uma carga resistiva porque no momento em que se fizeram estas
medicoes, ainda nao estava disponıvel uma coluna simulada (carga indutiva) para testar o filtro.
49
Figura 5.12: Resposta em frequencia do filtro passa baixo entre 10Hz e 500kHz.
Figura 5.13: Ondulacao da resposta de amplitude do filtro.
50
As medicoes das bobines estao na Tabela 5.3. Como se ve na Figura 5.14, as bobines foram
agrupadas nos filtros de modo a que fossem o mais semelhantes possıvel para que os filtros nao
ficassem desequilibrados.
Estas bobines foram feitas com nucleos de ferrite retirados de fontes de alimentacao de com-
putadores. O fio usado tem 0.9 e 1mm de diametro.
Tabela 5.3: Medicoes das bobines
Frequencia[Hz] 10 100 1k 5k 10k 15k 20kBobines
L2 11.5µH 11.4µH 11µH 10.97µH 10.92µH 10.92µH 10.91µH0.8mΩ 0.8mΩ 1.2mΩ 3.8mΩ 13mΩ 20mΩ 30mΩ
L3 12.0µH 11.3µH 10.89µH 10.8µH 10.8µH 10.8µH 10.8µH2.2mΩ 1mΩ 1.88mΩ 1.5mΩ 8.6mΩ 16mΩ 26mΩ
L5 15µH 12µH 12µH 12µH 12µH 12µH 12µH0.10mΩ 0.10mΩ 0.10mΩ 3.5mΩ 10mΩ 17mΩ 26mΩ
L6 12.5µH 11.6µH 11.12µH 11.1µH 11.1µH 11.06µH 11µH1.18mΩ 1.5mΩ 1.13mΩ 2.3mΩ 2.2mΩ 16mΩ 26mΩ
L1 13.4µH 11.6µH 10.9µH 10.94µH 10.9µH 10.90µH 10.89µH0.7mΩ 0.6mΩ 0.4mΩ 3mΩ 10mΩ 18mΩ 28mΩ
L4 12µH 11.2µH 10.8µH 10.85µH 10.8µH 10.8µH 10.79µH2.2mΩ 2mΩ 1.9mΩ 1.2mΩ 7.3mΩ 13mΩ 21mΩ
LA 39.7µH 37.8µH 37.44µH 37.2µH 37.12µH 37.13µH 37.1µH2.56mΩ 2.6mΩ 4.21mΩ 16mΩ 40mΩ 70mΩ 107mΩ
LB 41.6µH 39.68µH 39.14µH 38.9µH 38.7µH 38.7µH 38.7µH2.42mΩ 2.5mΩ 4.5mΩ 19.8mΩ 46mΩ 82mΩ 125mΩ
Figura 5.14: Configuracao das bobines na breadboard (a esquerda) e na placa do amplificador(a direita).
51
Figura 5.15: Filtro de 5a ordem
Na Figura 5.14 ve-se a configuracao das bobines na breadboard e na placa do amplificador.
O circuito da breadboard liga a um canal de cada vez (esquerdo/direito). Nao foram feitas mais
quatro bobines porque, nao foi facil arranjar nucleos toroidais e bobinar com fio tao grosso. Na
Figura 5.14 as bobines estao numa disposicao espacial ortogonal entre si, mas na realidade
nao se notou diferencas nos testes do amplificador em relacao a uma configuracao paralela. A
fotografia do filtro encontra-se na Figura 5.15.
5.4 Simulador de coluna
A coluna simulada foi necessaria para fazer os testes ao amplificador e filtro analogico com
carga indutiva. O objectivo deste circuito e que simule uma coluna real de dois canais, de graves
e de agudos.
Este circuito e usado no site www.stereophile.com para os testes crıticos dos amplificadores
que la fazem. Isto porque nao se corre o risco de avariar colunas de precos elevados e tambem
porque deste modo usam uma carga padrao em todos os seus testes.
No caso deste trabalho, este circuito foi usado em vez de uma coluna de som porque com
apenas 5V de amplitude no sinal de saıda, o som ja nao era suportavel durante todos os testes
que foram necessarios executar.
Na Figura 5.16 esta a fotografia da coluna montada e na Figura 5.17a esta o esquema do
circuito da coluna simulada, na Figura 5.17b encontra-se a resposta real onde a tracejado esta
a fase e a cheio e a curva da impedancia em funcao de ω.
52
Figura 5.16: Simulador de coluna.
(a) Esquema electrico da coluna simulada.
(b) Resposta real.
Figura 5.17: Simulador de coluna do site www.stereophile.com.
53
Como se ve pela simulacao na Figura 5.18 e pelo medidor de impedancias na Figura 5.19
verifica-se que o circuito esta muito proximo do que e usado no site www.stereophile.com (Figura
5.17) . Na Figura 5.18 a fase e a curva que comeca logo mais acima e a impedancia e a outra
curva.
Figura 5.18: Simulador de coluna simulado em PSPICE.
Figura 5.19: Medicao real do simulador de coluna.
54
5.5 Placa S/PDIF
A placa SPDIF tem como objectivo substituir o codec, ja que faz mais sentido que um am-
plificador digital tenha entradas digitais e nao analogicas. Infelizmente foi apenas projectada
no PROTEL 2004 e nao foi construıda por falta de tempo. E usado o Audio Interface Receiver,
DIR9001 da texas [39].
Para a comunicacao da placa com o DSP basta apenas programar o McBSP do DSP. A placa
nao necessita de qualquer configuracao por software. Programar o McBSP requer algum tempo
porque nao e muito simples. Se por um lado e facil aceder aos registos e programar o que se
quer, por outro, programar os relogios e todos os parametros de acordo com o que se pretende
nao e trivial. O manual do McBSP [30] tem toda a informacao que e necessaria para programar
esta porta de comunicacao
A placa liga ao slot External Peripheral Interface da placa de desenvolvimento DSK6416, o
McBSP usado e o 0 que e usado tambem para o codec, portanto e preciso desactiva-lo do codec
para se usar para o S/PDIF. Os sinais BCKO, LRCKO, Dout e SCKO, ligam aos pinos 27, 29, 30
e 46 repectivamente que correspondem a CLKR0, FSR0, DR0 e TINP0. TINP0 e a entrada
externa do relogio para o timer0, caso se queira usa-lo com este relogio e preciso configura-lo
para isso. CLKR0 e o ”McBSP0 receive clock”, FSR0 o ”McBSP0 receive frame sync”e o DR0
”McBSP0 receive data”, consultar [31].
O oscilador nao e necessario para o funcionamento da placa, mas e necessario para o fun-
cionamento dos led’s pois e com o oscilador que o integrado DIR9001 calcula a frequencia de
amostragem do sinal SPDIF (consultar o manual do DIR9001).
Figura 5.20: Placa S/PDIF
Na Figura 5.20 encontra-se um desenho simples da parte superior da placa para uma breve
explicacao do seu funcionamento.
Na Tabela 5.6 esta a descricao dos led’s.
Nas Tabelas 5.7, 5.5 e 5.4 esta a configuracao dos interruptores.
O jumper J1 e a saıda do relogio do EMIF quando este e activado pelo interruptor 0 de S1,
ver Tabela 5.7.
55
Para mais detalhes consultar o manual do Digital Audio Interface Receiver [39].
Tabela 5.4: Formato da saıda de audio configurado por FMT[1:0] (Data Output Format Selection)
Tabela 5.5: Frequencias de SCKO, BCKO, e LRCKO configuradas por PSCK[1:0]
Tabela 5.6: Codigo dos LED’s
LED0 LED1 LED2 LED3 LED4 DescricaoON OFF OFF OFF Out of range or PLL unlockedOFF ON OFF OFF 48kHz Sample frequencyOFF OFF ON OFF 44.1kHz Sample frequencyOFF OFF OFF ON 32kHz Sample frequency
ON PLL LOCKOFF internal PLL or data parity error
56
Tabela 5.7: Funcoes dos interruptores
Interruptor Funcao0 EMIF enable/disable1 PSCK0 ver Tabela 5.52 PSCK1 ver Tabela 5.53 FMT0 ver Tabela 5.44 FMT1 ver Tabela 5.4
5.6 Interface DSP/FPGA
A interface entre o DSP e a FPGA e um cabo do tipo flat cable. O conector que liga a FPGA
e um macho de 40 pinos para este tipo de cabo. O conector do lado do DSP e do tipo TFM-140-
32-S-D-LC da SMT.
Na Figura 5.21 esta representado o conector que liga na placa SPARTAN3 com as saıdas do
conector External Memory Interface da placa DSK6416 e os respectivos pinos do conector 2 da
SPARTAN3. Para mais detalhes consultar [38] e [31].
Figura 5.21: Conector DSP-FPGA.
57
6Resultados Experimentais
6.1 Conversor Analogico-PWM e Amplificador de potencia
As Figuras seguintes sao os resultados experimentais do amplificador com entrada analogica
(PCM1802 → TAS5010 → TAS5261).
Os testes das Figuras 6.1, 6.2 e 6.3 foram feitos para uma amplitude de 5V (DC) na fonte de
alimentacao e com uma carga resistiva de aproximadamente 8 Ω.
Primeiro testou-se o amplificador (placa desenhada no Protel 2004 5.1) com o filtro original
de 2a ordem so com carga resistiva pois mais uma vez a carga indutiva ainda nao tinha sido
feita. Na Figura 6.1 ve-se a resposta do amplificador em conjunto com o filtro ate aos 60kHz. A
resposta de amplitude e suficientemente plana mas mais uma vez, a carga e resistiva. Na Figura
6.2 vem-se as harmonicas do sinal de saıda para um sinal sinusoidal de entrada com frequencia
de 1kHz.
58
Figura 6.1: Resposta em frequencia do amplificador (Filtro analogico 2a ordem).
Figura 6.2: Distorcao harmonica (Filtro analogico 2a ordem)
59
Pelos manuais do fabricante, os integrados PCM1802 tem uma THD de -96 dB, o conversor
TAS5010 por sua vez tem uma THD de aproximadamente 0.08%, o que da cerca de -62 dB. O
amplificador TAS5261 tem uma THD aproximado de 0.09% com uma potencia de 125W e uma
carga de 8 Ω, o que da uma THD de 61 dB.
Na Figura 6.3 pode-se ver a segunda harmonica do PWM, ou seja, a segunda harmonica
da frequencia de comutacao do andar de potencia. O filtro de segunda ordem original nao e
suficiente para atenuar estas frequencias.
Figura 6.3: Resposta em amplitude (Filtro analogico 2a ordem)
Agora passando aos testes com o filtro de 5a ordem com carga resistiva e indutiva. Nas
Figuras 6.4 e 6.4 ve-se que a resposta do amplificador e praticamente igual, independentemente
da tensao do andar de potencia.
60
(a) Carga resistiva.
(b) Carga indutiva.
Figura 6.4: Resposta em amplitude e fase com 5V de amplitude
61
(a) Carga resistiva.
(b) Carga indutiva.
Figura 6.5: Resposta em frequencia do amplificador com 20V de amplitude.
62
Para se ver as harmonicas fez-se um varrimento ate aos 800 kHz, mas como se ve na Figura
6.6, o filtro de 5a ordem atenua todas as harmonicas. Neste caso com o conversor analogico-
PWM apareceria a segunda harmonica em f = 394 kHz com o filtro de 2a ordem como se
verificou na Figura 6.3.
Figura 6.6: Resposta em frequencia do filtro de 5a ordem com carga resistiva.
A distorcao harmonica varia com o tipo de carga (resistiva e indutiva) e com a amplitude da
tensao no andar de potencia como se pode ver nas Figuras 6.7, 6.8 e 6.9.
63
(a) Carga resistiva.
(b) Carga indutiva.
Figura 6.7: Distorcao harmonica do amplificador com 5V de amplitude.
64
(a) Carga resistiva.
(b) Carga indutiva.
Figura 6.8: Distorcao harmonica com 10V de amplitude.
65
(a) Carga resistiva.
(b) Carga indutiva.
Figura 6.9: Distorcao harmonica com 15V de amplitude.
66
6.2 Algoritmo click modulation
Esta implementacao so esta a funcionar relativamente bem (THD baixa) para frequencias
nao superiores a 1 kHz. Como se pode ver pelas figuras da distorcao harmonica deste capıtulo,
a qualidade nao e muito boa tendo-se um nıvel de ruıdo entre os -40 e -50 dB. A diferenca entre
a frequencia fundamental e a segunda harmonica sao cerca de 20 dB quer com carga indutiva
ou resistiva.
Nos graficos de resposta na frequencia do amplificador com a entrada do click modulation,
verifica-se que a resposta em amplitude nao se modifica em relacao ao PWM normal mas a fase
e diferente, o que nao era de esperar.
Pelas Figuras 6.10 e 6.11 verifica-se que a resposta do amplificador (e filtro) nao se altera
com a amplitude de onde se conclui que usando PWM normal ou o algoritmo click modulation
como sinal de entrada do amplificador de potencia, a resposta deste nao varia.
Pelas Figuras 6.12 e 6.13 a distorcao harmonica parece manter-se mais ou menos igual
tambem com o aumento de amplitude do amplificador de potencia.
67
(a) Carga resistiva
(b) Carga indutiva
Figura 6.10: Resposta na frequencia com 5V de amplitude (click modulation).
68
(a) Carga resistiva
(b) Carga indutiva
Figura 6.11: Resposta na frequencia com 20V de amplitude (click modulation).
69
(a) Carga resistiva
(b) Carga indutiva
Figura 6.12: Distorcao harmonica com 5V de amplitude
70
(a) Carga resistiva
(b) Carga indutiva
Figura 6.13: Distorcao harmonica com 15V de amplitude
71
7Conclusoes
Com base nos resultados obtidos quer simulados quer experimentais, verifica-se que e possıvel
implementar a tecnica de modulacao click modulation e que e possıvel que o andar de potencia
comute com frequencias mais baixas que as usadas em PWM normal.
Nao e alterada a resposta do andar de potencia com o tipo de entrada digital usada. Tambem
nao se altera a resposta nem a distorcao harmonica de uma dada entrada com a variacao da
amplitude do andar de potencia
A causa da elevada distorcao harmonica no sinal click modulation nao foi identificada, ape-
sar do depuramento exaustivo que foi efectuado. Verificou-se que a parte de processamento de
sinal (SP) funciona correctamente, pois os sinais resultantes sao os mesmos que se obtiveram
na simulacao de Matlab. Tambem o processamento na FPGA parece estar a funcionar correc-
tamente. O problema podera ser ou o erro elevado no calculo dos zeros ou a comunicacao
DSP-FPGA que continua a exibir muito jitter.
Ha algumas ideias para melhorar a implementacao deste algoritmo uma vez conseguido o
seu bom funcionamento. A primeira coisa sera aumentar a resolucao do sinal binario q(t) mas
para isso tem que se usar uma FPGA mais rapida o que nao e facil porque as velocidades de
relogio em jogo sao muito altas. Entao o que pode fazer e downsampling de 4X antes de enviar
os dados para a FPGA, assim consegue-se aumentar a resolucao para 11bit. O problema que
se poe agora e que a interpolacao linear nao oferece uma boa estimativa para a localizacao dos
zeros, e poder-se-a usar interpolacao cubica ou outra semelhante. Neste momento poe-se o
problema do DSP ja estar nos seus limites de desempenho, pelo que sera necessario usar um
72
segundo DSP so para fazer este tipo de interpolacao.
O trabalho realizado permite ter uma boa visao de como funciona este tipo de amplificadores
(classe T) e permite tambem que a partir deste trabalho se parta para outra abordagem ou para
o melhoramento desta implementacao com boas bases de conhecimento.
73
Bibliografia
[1] M. Streitenberger, H. Bresch, W. Mathis: ”Theory and Implementation of a new
type of digital power amplifiers for audio applications”, Proceedings of the IEEE
International Symposium on Circuits and Systems, May 28 - 31, 2000, Geneva,
Switzerland (ISCAS’2000), I, 511-514.
[2] Erik Bresch, and Wayne T. Padgett; ”TMS320C67-Based Design of a digital au-
dio power amplifier introducing novel feedbacl strategy”.
[3] B. F. Logan, Jr: Click Modulation, AT&T Bell Lab. Tech. J., 63(3), pp. 401-423
(1984)
[4] Convention Paper 5503, Audio Engineering Society. Presented at the 112th con-
vention, 2002 May 10-13. Munich, Germany.
[5] IEEE Spectrum, Digital Audio’s Final. Frontier. March 2003, pag.34-41.
[6] www.wikipedia.com.
[7] Manuel de Medeiros Silva, ”Circuitos com transıstores bipolares e MOS.”, 1999.
[8] Microelectronic Circuits, Sedra/Smith.
[9] TMS320C6000 Programmer’s Guide (spru198g.pdf).
[10] TMS320C6000 Optimizing Compiler User’s Guide (spru187l.pdf).
[11] TMS320C6000 Multichannel Buffered Serial Port (McBSP Reference Guide
(SPRU580C.pdf).
[12] Circular Buffering on TMS320C6000 (SPRA645A.pdf).
[13] Wiley-Interscience - 2005 - Digital Signal Processing and Applications with the
C6713 and C6416 DSK.
[14] 315-W Mono BTL Digital Amplifier Power Stage (tas5261.pdf).
74
[15] TAS5518 8 Channel Digital Audio PWM Processor (tas5518.pdf).
[16] TAS5518-5261K2EVM (slaa332.pdf/slaa332a.pdf).
[17] TAS5518-5261K2EVM User’s Guide(slau193.pdf).
[18] TRUE DIGITAL AUDIO AMPLIFIER TAS5010 DIGITAL AUDIO PWM PROCES-
SOR.
[19] SINGLE-ENDED ANALOG-INPUT 24-BIT, 96-kHz STEREO A/D CONVERTER.
[20] SYNCHRONOUS STEP-DOWN CONVERTER.
[21] ULTRALOW NOISE, HIGH PSRR, FAST RF 100-mA LOW-DROP LINEAR REG-
ULATORS.
[22] SINGLE-POLE, DOUBLE-THROW ANALOG SWITCH.
[23] DUAL 4-TO-1 CHANNEL ANALOG MULTIPLEXER/DEMULTIPLEXER WITH
INJECTION-CURRENT EFFECT CONTROL.
[24] QUADRUPLE 2-INPUT POSITIVE-NAND GATES.
[25] Crystal Oscillators and Circuits, Bill Sheets, Rudolf F Graf.
[26] TMS320C6414T, TMS320C6415T, TMS320C6416T FIXED-POINT DIGITAL
SIGNAL PROCESSORS (tms320c6416t.pdf).
[27] TMS320C6000 Peripherals Reference Guide 10-1. (spru190d.pdf)
[28] TMS320C6000 Chip Support Library API Reference Guide. (spru401.pdf)
[29] TMS320C6000 Peripherals Reference Guide 13-1. (spru190d.pdf)
[30] TMS320C6000 DSP Multichannel Buffered Serial Port (McBSP) Reference
Guide. (SPRU580C.pdf)
[31] TMS320C6416T DSK (dsk6416 TechRef.pdf).
[32] TMS320C6713B FLOATING-POINT DIGITAL SIGNAL PROCESSOR
(tms320c6713b.pdf).
[33] TMS320C6713 DSK (6713 dsk techref.pdf).
[34] TLV320AIC23 Stereo Audio CODEC, 9- to 96-kHz, With Integrated Headphone
Amplifier (tlv320aic23.pdf).
75
[35] Spartan-II 2.5V FPGA Family: Complete Data Sheet (ds001.pdf).
[36] Digilab 2 Reference Manual (D2-rm.pdf).
[37] Spartan-3 FPGA Family: Complete Data Sheet (ds099.pdf).
[38] Spartan-3 Starter Kit Board User Guide(S3BOARD-rm.pdf).
[39] DIR9001 96-kHz, 24-Bit Digital Audio Interface Receiver(DIR9001.pdf).
[40] Class D audio Amplifier Basics, Jun Honda & Jonathan Adams, International
Rectifier, AN-1071.
[41] Engineering Journal, Volume Fifty-Nine, DALLAS SEMICONDUCTOR MAXIM
[42] DESIGN AND ANALYSIS OF ANALOG FILTERS, A signal Processing perspec-
tive, With MATLABr examples by Larry D. Paarmann.
76