amplificador digital de audio´€¦ · the filters necessary for the algorithm were designed in...

89
Amplificador Digital de ´ Audio Nelson Fernando do Canto M ˜ ao de Ferro ist145231 Dissertac ¸˜ ao para obtenc ¸˜ ao do Grau de Mestre em Engenharia Electrot ´ ecnica e de Computadores uri Presidente: Prof. Jos´ e Gerald Orientador: Prof. Gonc ¸alo Tavares Co-Orientador: Prof. Mois´ es Piedade Vogais: Prof. Ant´ onio Serralheiro Fevereiro de 2008

Upload: others

Post on 02-Apr-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 2: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the
Page 3: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 4: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 5: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

Transformada de Hilbert

Modulacao Exponencial em Amplitude

Sinal binario

iii

Page 6: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the
Page 7: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 8: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

vi

Page 9: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 10: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 11: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 12: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

x

Page 13: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 14: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 15: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 16: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 17: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 18: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

Figura 2.1: Sinais relevantes na Click modulation.

5

Page 19: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

Figura 2.2: Sinal σ(t).

6

Page 20: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

Figura 2.3: Sinais de Click modulation: geracao de sinal binario com o mesmo conteudo espec-tral do sinal de entrada.

7

Page 21: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 22: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

Figura 3.1: Dimensionamento do filtro que realiza a transformada de Hilbert usando a ferramentaFDATOOL.

9

Page 23: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

(a) Metodo LS.

(b) Metodo equiripple.

Figura 3.2: Resposta em frequencia do transformador de Hilbert.

10

Page 24: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 25: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

Figura 3.4: Dimensionamento do filtro passa-baixo usando a ferramenta FDATOOL.

12

Page 26: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

(a) Metodo LS.

(b) Metodo equiripple.

Figura 3.5: Resposta em frequencia do filtro passa-baixo.

13

Page 27: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

(a) Metodo LS.

(b) Metodo equiripple.

Figura 3.6: Resposta em frequencia do filtro passa baixo, com quantizacao Q15.

14

Page 28: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

(a) Metodo LS.

(b) Metodo equiripple.

Figura 3.7: Resposta em frequencia do filtro passa baixo ampliada na zona de passagem, comquantizacao Q15.

15

Page 29: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 30: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 31: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

(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

Page 32: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 33: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 34: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 35: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 36: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 37: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 38: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

(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

Page 39: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 40: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

Figura 4.4: TMS320C64xTM CPU (DSP Core) Data Paths.

27

Page 41: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 42: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 43: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 44: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 45: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 46: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 47: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

Figura 4.10: Fluxograma do processamento de sinal no DSP.

34

Page 48: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 49: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 50: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 51: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

Figura 4.14: Gerador do sinal q(t) com resolucao de 9bit.

38

Page 52: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 53: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 54: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 55: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 56: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 57: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

Figura 5.4: Placa projectada com filtro original.

Figura 5.5: Andar de potencia com filtro de 5a ordem.

44

Page 58: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 59: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 60: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 61: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 62: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 63: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 64: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 65: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 66: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 67: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 68: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 69: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 70: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 71: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 72: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

Figura 6.1: Resposta em frequencia do amplificador (Filtro analogico 2a ordem).

Figura 6.2: Distorcao harmonica (Filtro analogico 2a ordem)

59

Page 73: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 74: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

(a) Carga resistiva.

(b) Carga indutiva.

Figura 6.4: Resposta em amplitude e fase com 5V de amplitude

61

Page 75: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

(a) Carga resistiva.

(b) Carga indutiva.

Figura 6.5: Resposta em frequencia do amplificador com 20V de amplitude.

62

Page 76: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 77: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

(a) Carga resistiva.

(b) Carga indutiva.

Figura 6.7: Distorcao harmonica do amplificador com 5V de amplitude.

64

Page 78: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

(a) Carga resistiva.

(b) Carga indutiva.

Figura 6.8: Distorcao harmonica com 10V de amplitude.

65

Page 79: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

(a) Carga resistiva.

(b) Carga indutiva.

Figura 6.9: Distorcao harmonica com 15V de amplitude.

66

Page 80: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 81: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

(a) Carga resistiva

(b) Carga indutiva

Figura 6.10: Resposta na frequencia com 5V de amplitude (click modulation).

68

Page 82: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

(a) Carga resistiva

(b) Carga indutiva

Figura 6.11: Resposta na frequencia com 20V de amplitude (click modulation).

69

Page 83: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

(a) Carga resistiva

(b) Carga indutiva

Figura 6.12: Distorcao harmonica com 5V de amplitude

70

Page 84: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

(a) Carga resistiva

(b) Carga indutiva

Figura 6.13: Distorcao harmonica com 15V de amplitude

71

Page 85: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 86: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 87: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

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

Page 88: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

[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

Page 89: Amplificador Digital de Audio´€¦ · The filters necessary for the algorithm were designed in MATLAB regarding the DSP speed and processing power. They were implemented in the

[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