Instituto Politécnico do Cávado e do Ave
Escola Superior de Tecnologia
Engenharia Eletrotécnica e de Computadores
Controla...
Instituto Politécnico do Cávado e do Ave
Escola Superior de Tecnologia
Engenharia Eletrotécnica e de Computadores
Relatóri...
iii
Agradecimentos
Gostaria de agradecer em primeiro lugar ao meu orientador, Professor
Doutor Marcos Silva Martins, pela ...
v
Resumo
A realização deste projeto representa o fim de um ciclo académico e a
aplicação de vários conceitos aprendidos ao...
vii
Índice
Agradecimentos....................................................................................................
viii
3.2 Desenvolvimento dos esquemas de instrumentação....................................... 16
3.2.1 Bloco ADC ...........
ix
Índice de Figuras
Figura 1 – Feedback e Feedforward AGC...................................................................
x
Figura 28 – Esquema ligação do LM7171......................................................................................
xi
Figura 57 – Blocos de acerto de tipo de dados. ...........................................................................
xii
Figura 86 – Sinal analógico de entrada de 100mV..........................................................................
xiii
Índice de Tabelas
Tabela 1 – Caraterísticas do TL026.______________________________________________________ 4
Tabela ...
xv
Notação e Glossário
A/D Conversor Analógico-Digital
ADC Analog to Digital Converter
AGC Automatic Gain Control
ALU Arit...
xvi
Multisim Software de simulação eletrónica
pH Potencial de Hidrogénio
PROM Programmable Read-Only Memory
PWM Pulse-Widt...
Controlador de ganho automático baseado numa plataforma FPGA Introdução
Paulo Lima 1
1 Introdução
1.1 Enquadramento
Quando...
Controlador de ganho automático baseado numa plataforma FPGA Introdução
Paulo Lima 2
1.3 Motivação
As comunicações subaquá...
Controlador de ganho automático baseado numa plataforma FPGA Introdução
Paulo Lima 3
1.6 Estado da Arte
O controlo automát...
Controlador de ganho automático baseado numa plataforma FPGA Introdução
Paulo Lima 4
Tabela 1 – Caraterísticas do TL026.
F...
Controlador de ganho automático baseado numa plataforma FPGA Introdução
Paulo Lima 5
1.7 Tecnologias utilizadas
1.7.1 FPGA...
Controlador de ganho automático baseado numa plataforma FPGA Introdução
Paulo Lima 6
Esta versão apresenta as seguintes ca...
Controlador de ganho automático baseado numa plataforma FPGA Introdução
Paulo Lima 7
1.7.2 Matlab 2010b
Neste projeto, os ...
Controlador de ganho automático baseado numa plataforma FPGA Introdução
Paulo Lima 8
1.8 Contributos deste trabalho
Um dos...
Controlador de ganho automático baseado numa plataforma FPGA Contexto
Paulo Lima 9
2 Contexto
Os sistemas de comunicações ...
Controlador de ganho automático baseado numa plataforma FPGA Contexto
Paulo Lima 10
Sistemas de defesa [24];
Sistemas de d...
Controlador de ganho automático baseado numa plataforma FPGA Contexto
Paulo Lima 11
Figura 8 – Modelo laboratorial impleme...
Controlador de ganho automático baseado numa plataforma FPGA Contexto
Paulo Lima 12
Figura 9 – Esquemas eletrónicos a dese...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 13
3 Descrição técnica
O desenvo...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 14
A vantagem do microcontrolado...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 15
As suas principais desvantage...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 16
3.2 Desenvolvimento dos esque...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 17
Figura 12 – Configuração dos ...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 18
Através da análise do esquema...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 19
De modo a se poder controlar ...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 20
R2=1Ω. A forma de onda da esq...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 21
permite a passagem das frequê...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 22
Figura 21 – Dimensionamento d...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 23
Figura 23 – Simulação do filt...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 24
É visível pela onda a vermelh...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 25
Para o correto funcionamento ...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 26
Na figura 27, foi utilizado u...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 27
Figura 28 – Esquema ligação d...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 28
Figura 32 – Circuito final do...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 29
3.2.2 Bloco DAC
O DAC selecio...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 30
Tabela 3 – Lista de component...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 31
Figura 36 – Amplificador de d...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 32
Considerando um valor para R1...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 33
Para efetuar a ponte entre o ...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 34
Figura 43 – Circuito final do...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 35
O VHDL foi desenvolvido para ...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 36
declarados dentro deste, caso...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 37
O Verilog permite representar...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 38
3.3.3 Exemplos de aplicação
P...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 39
São assim criados uma série d...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 40
3.3.4 Conclusão
Ao se desenvo...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 41
Figura 51 – Fluxograma do alg...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 42
Os sinais de entrada poderão ...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 43
3.4.3 Interface com o FPGA
Ap...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 44
Figura 56 – Código do primeir...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 45
Relativamente aos pontos 1 e ...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 46
Para o aperfeiçoamento do cál...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 47
Figura 59 – Clock 25 MHz.
3.4...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 48
Figura 61 – Código do MCode p...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 49
Figura 62 – Bloco de registo....
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 50
Em seguida, são retirados 10 ...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 51
Figura 66 – Cálculo do sinal ...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 52
Figura 68 – Localização do mó...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 53
3.6.1 Testes no simulador
O p...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 54
É possível observar na figura...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 55
Em seguida realizou-se um tes...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 56
Figura 76 – Cálculo do ganho ...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 57
O sinal analógico será enviad...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 58
Figura 79 – Configuração da p...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 59
Figura 81 – Configuração da p...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 60
Figura 83 – ADC utilizado (in...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 61
Para a leitura dos sinais apl...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 62
Como esperado, o sinal de saí...
Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica
Paulo Lima 63
Após o ganho inicial que é ap...
Controlador de ganho automático baseado numa plataforma FPGA Conclusões
Paulo Lima 65
4 Conclusões
O desenvolvimento do Co...
Controlador de ganho automático baseado numa plataforma FPGA Conclusões
Paulo Lima 66
principalmente aquelas que não resol...
Controlador de ganho automático baseado numa plataforma FPGA Bibliografia
Paulo Lima 67
5 Bibliografia
[1] J. P. A. Pérez,...
Controlador de ganho automático baseado numa plataforma FPGA – Bibliografia
Paulo Lima 68
[12] M. J. Brawner, S. Kurak, “S...
Controlador de ganho automático baseado numa plataforma FPGA – Bibliografia
Paulo Lima 69
[22] C. Izaguirre, M. Menéndez, ...
Controlador de ganho automático baseado numa plataforma FPGA – Bibliografia
Paulo Lima 70
[Online]: http://www.ni.com/mult...
Controlador de ganho automático baseado numa plataforma FPGA
Controlador de ganho automático baseado numa plataforma FPGA
Controlador de ganho automático baseado numa plataforma FPGA
Controlador de ganho automático baseado numa plataforma FPGA
Próximos SlideShares
Carregando em…5
×

Controlador de ganho automático baseado numa plataforma FPGA

672 visualizações

Publicada em

Tese de Licenciatura
Engenharia Eletrotécnica e Computadores
Paulo Lima
IPCA, 2014

Publicada em: Engenharia
0 comentários
0 gostaram
Estatísticas
Notas
  • Seja o primeiro a comentar

  • Seja a primeira pessoa a gostar disto

Sem downloads
Visualizações
Visualizações totais
672
No SlideShare
0
A partir de incorporações
0
Número de incorporações
2
Ações
Compartilhamentos
0
Downloads
0
Comentários
0
Gostaram
0
Incorporações 0
Nenhuma incorporação

Nenhuma nota no slide

Controlador de ganho automático baseado numa plataforma FPGA

  1. 1. Instituto Politécnico do Cávado e do Ave Escola Superior de Tecnologia Engenharia Eletrotécnica e de Computadores Controlador de ganho automático baseado numa plataforma FPGA Paulo Jorge Costa Lima Nº 6522 Janeiro de 2014
  2. 2. Instituto Politécnico do Cávado e do Ave Escola Superior de Tecnologia Engenharia Eletrotécnica e de Computadores Relatório de Projeto Projeto desenvolvido sob orientação: Professor Doutor Marcos Silva Martins Janeiro de 2014
  3. 3. iii Agradecimentos Gostaria de agradecer em primeiro lugar ao meu orientador, Professor Doutor Marcos Silva Martins, pela orientação, dedicação e colaboração prestada durante a realização deste projeto de desenvolvimento. Em segundo lugar, agradeço à Universidade do Minho enquanto instituição, as condições prestadas, nomeadamente no acesso a equipamentos e laboratórios, necessários à realização do projeto. Uma palavra de apreço para com os grupos de trabalho presentes nos laboratórios que tão bem me acolheram e em algumas fases me ajudaram com conselhos valiosos. Ao meu colega de curso Elísio Carvalho, que como eu desenvolveu projeto sobre temática idêntica, agradeço a camaradagem ao longo dos últimos meses e desejo-lhe o maior sucesso na apresentação do seu trabalho final. Desejo expressar ainda uma palavra de gratidão a todos os docentes que ao longo da licenciatura contribuíram para a minha formação e preparação para este momento. Por último, agradeço à minha família todo o apoio prestado, não só durante o desenvolvimento do projeto mas também ao longo de todo o curso, apoio esse que se revelou fundamental nos momentos mais difíceis. A todos, muito obrigado!
  4. 4. v Resumo A realização deste projeto representa o fim de um ciclo académico e a aplicação de vários conceitos aprendidos ao longo de uma licenciatura. O projeto consistiu no desenvolvimento de um algoritmo de controlo automático a ser implementado numa plataforma FPGA de modo a manter dentro de valores pré-definidos a amplitude dos sinais aplicados. Justifica-se a escolha da plataforma FPGA como plataforma de desenvolvimento e o uso do Matlab/Simulink como forma de programação. Adicionalmente foram desenvolvidos os esquemas de instrumentação para os sistemas de aquisição, para que o sistema pudesse ser implementado, caso assim fosse desejado. Todas as opções tomadas ao longo do projeto foram justificadas, bem como demonstradas as várias opções que se podiam seguir na resolução de problemas. Finalmente foi avaliado o desempenho do sistema através da realização de testes, quer através de simulação quer em ambiente laboratorial. Palavras-Chave (Tema): Comunicações subaquáticas, HDL, controlo automático de ganho. Palavras-Chave (Tecnologias): Matlab, Simulink, System Generator, FPGA.
  5. 5. vii Índice Agradecimentos....................................................................................................iii Resumo..................................................................................................................v Índice...................................................................................................................vii Índice de Figuras...................................................................................................ix Índice de Tabelas ................................................................................................xiii Notação e Glossário.............................................................................................xv 1 Introdução..................................................................................................... 1 1.1 Enquadramento...............................................................................................1 1.2 Apresentação do projeto..................................................................................1 1.3 Motivação .......................................................................................................2 1.4 Planeamento do projeto ..................................................................................2 1.5 Objetivos.........................................................................................................2 1.6 Estado da Arte .................................................................................................3 1.7 Tecnologias utilizadas ......................................................................................5 1.7.1 FPGA Xilinx Spartan-3A.....................................................................................................5 1.7.2 Matlab 2010b ...................................................................................................................7 1.8 Contributos deste trabalho...............................................................................8 1.9 Organização do relatório..................................................................................8 2 Contexto........................................................................................................ 9 3 Descrição técnica..........................................................................................13 3.1 Justificação do FPGA como plataforma de desenvolvimento ........................... 13 3.1.1 MCU................................................................................................................................13 3.1.2 DSP..................................................................................................................................14 3.1.3 FPGA ...............................................................................................................................14 3.1.4 Conclusão........................................................................................................................15
  6. 6. viii 3.2 Desenvolvimento dos esquemas de instrumentação....................................... 16 3.2.1 Bloco ADC .......................................................................................................................16 3.2.2 Bloco DAC .......................................................................................................................29 3.3 Linguagem HDL.............................................................................................. 34 3.3.1 VHDL ...............................................................................................................................34 3.3.2 Verilog.............................................................................................................................36 3.3.3 Exemplos de aplicação....................................................................................................38 3.3.4 Conclusão........................................................................................................................40 3.4 Desenvolvimento do algoritmo de controlo.................................................... 40 3.4.1 Algoritmo a implementar ...............................................................................................40 3.4.2 Simulação dos sinais de entrada.....................................................................................41 3.4.3 Interface com o FPGA .....................................................................................................43 3.4.4 Descrição do código desenvolvido .................................................................................47 3.5 Implementação.............................................................................................. 51 3.5.1 Integração com o UWBCSUA ..........................................................................................51 3.5.2 Sistema independente....................................................................................................52 3.6 Testes ao sistema........................................................................................... 52 3.6.1 Testes no simulador........................................................................................................53 3.6.2 Teste no laboratório .......................................................................................................56 4 Conclusões ...................................................................................................65 4.1 Objetivos realizados....................................................................................... 65 4.2 Limitações & trabalho futuro.......................................................................... 65 4.3 Apreciação final ............................................................................................. 66 5 Bibliografia ..................................................................................................67
  7. 7. ix Índice de Figuras Figura 1 – Feedback e Feedforward AGC..................................................................................................3 Figura 2 – TL026. ......................................................................................................................................3 Figura 3 – Relação entre tensão de entrada e o ganho para o TL026......................................................4 Figura 4 – FPGA Xilinx Virtex-7. ................................................................................................................5 Figura 5 – Spartan-3A Starter Kit..............................................................................................................5 Figura 6 – Matlab 2010b. .........................................................................................................................7 Figura 7 – Tema do projeto. ...................................................................................................................10 Figura 8 – Modelo laboratorial implementado. .....................................................................................11 Figura 9 – Esquemas eletrónicos a desenvolver. ....................................................................................12 Figura 10 – Modelo de controlo a implementar.....................................................................................12 Figura 11 – Esquemas dos circuitos a desenvolver.................................................................................16 Figura 12 – Configuração dos pinos do AD9244.....................................................................................17 Figura 13 – Esquema de ligação do AD9244. .........................................................................................17 Figura 14 – Esquema elétrico do AD9244...............................................................................................18 Figura 15 – Amplificador não inversor....................................................................................................19 Figura 16 – Função transferência do amplificador não inversor. ...........................................................19 Figura 17 – Simulação do amplificador para ganho 1............................................................................19 Figura 18 – Simulação do amplificador para ganho 11..........................................................................20 Figura 19 – Filtro passa-banda RC..........................................................................................................21 Figura 20 – Ganho do filtro RC................................................................................................................21 Figura 21 – Dimensionamento dos condensadores para o filtro............................................................22 Figura 22 – Simulação do filtro para uma frequência de 50Hz. .............................................................22 Figura 23 – Simulação do filtro para 1MHz. ...........................................................................................23 Figura 24 – Simulação do filtro para 2MHz. ...........................................................................................23 Figura 25 – Simulação do filtro com o amplificador...............................................................................24 Figura 26 – Diagrama de Bode do filtro RC. ...........................................................................................24 Figura 27 – Simulação para o ganho de offset. ......................................................................................25
  8. 8. x Figura 28 – Esquema ligação do LM7171...............................................................................................27 Figura 29 – Esquema ligação do LM7805...............................................................................................27 Figura 30 – Esquema ligação do LM7905...............................................................................................27 Figura 31 – Esquema de ligação do LD1117V33.....................................................................................27 Figura 32 – Circuito final do bloco ADC. .................................................................................................28 Figura 33 – Configuração dos pinos do DAC904.....................................................................................29 Figura 34 – Esquema de ligação do DAC904. .........................................................................................29 Figura 35 – Configuração do DAC904.....................................................................................................30 Figura 36 – Amplificador de diferença....................................................................................................31 Figura 37 – Função transferência do amplificador de diferença. ...........................................................31 Figura 38 – Dimensionamento das resistências R1 e R2.........................................................................31 Figura 39 – Dimensionamento das resistências R3 e R4.........................................................................32 Figura 40 – Simulação do amplificador de diferença. ............................................................................32 Figura 41 – Esquema adicional para o DAC904......................................................................................33 Figura 42 – Esquema de ligação do LM6172..........................................................................................33 Figura 43 – Circuito final do bloco DAC. .................................................................................................34 Figura 44 – Estrutura de um código em VHDL........................................................................................36 Figura 45 – Processo de programação em HDL......................................................................................36 Figura 46 – Estrutura de um código em Verilog. ....................................................................................37 Figura 47 – Registo utilizado no algoritmo final.....................................................................................38 Figura 48 – Definição do tipo de linguagem HDL a gerar.......................................................................38 Figura 49 – Extrato do exemplo de código gerado em VHDL. ................................................................39 Figura 50 – Extrato do exemplo de código gerado em Verilog...............................................................39 Figura 51 – Fluxograma do algoritmo a implementar............................................................................41 Figura 52 – Algoritmo para simular o sinal de entrada..........................................................................41 Figura 53 – Simulação do sinal de entrada (amplitude 1). .....................................................................42 Figura 54 – Simulação do sinal de entrada com ruído............................................................................42 Figura 55 – Diagrama de blocos da solução a implementar. .................................................................43 Figura 56 – Código do primeiro algoritmo desenvolvido........................................................................44
  9. 9. xi Figura 57 – Blocos de acerto de tipo de dados. ......................................................................................45 Figura 58 – Código final do algoritmo desenvolvido. .............................................................................46 Figura 59 – Clock 25 MHz. ......................................................................................................................47 Figura 60 – Bloco MCode principal.........................................................................................................47 Figura 61 – Código do MCode principal..................................................................................................48 Figura 62 – Bloco de registo. ..................................................................................................................49 Figura 63 – Processo auxiliar para cálculo da média..............................................................................49 Figura 64 – Código turn_positive............................................................................................................49 Figura 65 – Valor inicial do ganho..........................................................................................................50 Figura 66 – Cálculo do sinal de saída......................................................................................................51 Figura 67 – Integração do controlo automático de ganho.....................................................................51 Figura 68 – Localização do módulo de controlo automático de ganho..................................................52 Figura 69 – Estrutura para um funcionamento independente. ..............................................................52 Figura 70 – Sinal de entrada (amplitude 100). .......................................................................................53 Figura 71 – Acumulado da média do sinal de entrada (amplitude 100). ...............................................53 Figura 72 – Cálculo do ganho (amplitude entrada 100).........................................................................54 Figura 73 – Sinal de saída para entrada amplitude 100.........................................................................54 Figura 74 – Sinal de entrada (amplitude 800). .......................................................................................55 Figura 75 – Acumulado da média do sinal de entrada (amplitude 800). ...............................................55 Figura 76 – Cálculo do ganho (amplitude entrada 800).........................................................................56 Figura 77 – Sinal saída para entrada amplitude 800..............................................................................56 Figura 78 – Configuração da porta do FPGA para o sinal de entrada. ...................................................57 Figura 79 – Configuração da porta do FPGA para clock do ADC. ...........................................................58 Figura 80 – Configuração da porta do FPGA para clock do DAC. ...........................................................58 Figura 81 – Configuração da porta do FPGA para o sinal de saída. .......................................................59 Figura 82 – Montagem laboratorial. ......................................................................................................59 Figura 83 – ADC utilizado (input)............................................................................................................60 Figura 84 – DAC utilizado (output). ........................................................................................................60 Figura 85 – PicoScope 4000 Series..........................................................................................................61
  10. 10. xii Figura 86 – Sinal analógico de entrada de 100mV.................................................................................61 Figura 87 – Sinal analógico de saída para entrada de 100mV. ..............................................................62 Figura 88 – Sinal analógico de entrada de 700mV.................................................................................62 Figura 89 – Sinal analógico de saída para entrada de 700mV. ..............................................................63
  11. 11. xiii Índice de Tabelas Tabela 1 – Caraterísticas do TL026.______________________________________________________ 4 Tabela 2 – Lista de componentes para o AD9244. _________________________________________ 18 Tabela 3 – Lista de componentes para o DAC904. _________________________________________ 30 Tabela 4 – Ligações ADC/FX2. _________________________________________________________ 57 Tabela 5 – Ligações DAC/FX2. _________________________________________________________ 58
  12. 12. xv Notação e Glossário A/D Conversor Analógico-Digital ADC Analog to Digital Converter AGC Automatic Gain Control ALU Arithmetic Logic Unit Bit Binary Digit AmpOp Amplificador Operacional D/A Conversor Digital-Analógico DAC Digital to Analog Converter DDR2 Double Data Rate 2 DSP Digital Signal Processing Ethernet Arquitetura de interligação de redes locais Flash Tipo de memória não volátil FPGA Field-Programmable Gate Array HDL Hardware Description Language IC Integrated Circuit IEEE Institute of Electrical and Electronic Engineers I/O Input/output ISE Design Suite Software de programação do FPGA JTAG Joint Test Action Group LCD Liquid Crystal Display LED Light Emitting Diode Matlab Matrix Laboratory MCU MicroController Unit
  13. 13. xvi Multisim Software de simulação eletrónica pH Potencial de Hidrogénio PROM Programmable Read-Only Memory PWM Pulse-Width Modulation RS-232 Tipo de comunicação em porta série SDRAM Synchronous Dynamic Random Access Memory Simulink Ferramenta do Matlab SPI Serial Peripheral Interface Streaming Envio de um fluxo de informação System Generator Ferramenta do Matlab UAV Underwater Autonomous Vehicles USB Universal Serial Bus UWBCSUA Ultrasonic Wireless Broadband Communication System for Underwater Applications Verilog Linguagem do tipo HDL VGA Video Graphics Array VHDL Very High Speed Integrated Circuits Hardware Description Language VHSIC Very High Speed Integrated Circuits VREF Tensão de referência
  14. 14. Controlador de ganho automático baseado numa plataforma FPGA Introdução Paulo Lima 1 1 Introdução 1.1 Enquadramento Quando se pretende desmodular um sinal, é vantajoso que este se encontre dentro de uma amplitude pré-definida. Uma vez que a atenuação aumenta com a distância e a frequência, torna-se conveniente desenvolver um sistema de aquisição de dados com controlo automático de ganho. Integrado no tema de comunicações subaquáticas, este controlador automático de ganho teria a vantagem de dinamizar a modulação/desmodulação dos sinais transmitidos. Isoladamente, o projeto pode permitir o controlo de ganho automático para um qualquer dispositivo através duma plataforma FPGA. O projeto aborda áreas de conhecimento científico como Sistemas Digitais ao nível do desenvolvimento em FPGA, Programação de Software e Hardware no desenvolvimento dos algoritmos de controlo e uma pequena parte de Instrumentação e Medidas no desenvolvimento dos esquemas eletrónicos da aquisição. 1.2 Apresentação do projeto O projeto tem como objetivo o desenvolvimento de um controlador automático de ganho construído numa plataforma FPGA, para um sistema com as seguintes caraterísticas: O sistema deve ser capaz de adquirir sinais analógicos de elevada velocidade, na ordem dos MHz; O controlo automático de ganho será responsável por garantir que os sinais medidos mantenham um nível de amplitude dentro dos parâmetros previamente definidos. No final do desenvolvimento, deverá ser avaliado o desempenho do sistema.
  15. 15. Controlador de ganho automático baseado numa plataforma FPGA Introdução Paulo Lima 2 1.3 Motivação As comunicações subaquáticas sem fios são uma das áreas tecnológicas que mais pesquisa tem suscitado nos últimos tempos, estando no entanto, ainda longe de obter os resultados pretendidos pelos investigadores que se dedicam a essa temática. A principal motivação deste projeto surge com a possibilidade de dar um contributo num projeto de pesquisa sobre comunicações subaquáticas, ao implementar um sistema de ganho automático que permite uma maior eficácia na modulação/desmodulação dos sinais transmitidos. 1.4 Planeamento do projeto O projeto foi delineado segundo as seguintes linhas orientadoras: Estudar a plataforma FPGA Xilinx Spartan-3A. (20 h) Pesquisa sobre controlo de ganho automático. (20 h) Desenvolvimento dos algoritmos de controlo. (180 h) Implementação dos circuitos. (80 h) Teste do sistema. (30 h) Escrita do relatório final. (70 h) 1.5 Objetivos A partir do planeamento original do projeto, foram desenvolvidos alguns objetos específicos, após a discussão do plano de trabalho com o orientador: Justificar o FPGA como plataforma de desenvolvimento; Desenvolvimento dos esquemas de instrumentação; Estudo de alguns exemplos em linguagens HDL; Desenvolvimento do algoritmo de controlo do FPGA; Implementação e testes ao sistema final.
  16. 16. Controlador de ganho automático baseado numa plataforma FPGA Introdução Paulo Lima 3 1.6 Estado da Arte O controlo automático de ganho consiste em adicionar uma realimentação sobre o amplificador responsável por manter a amplitude dentro dos valores pretendidos. Pode-se ainda em vez de uma realimentação, colocar um valor de referência tornando o processo mais estático [1]. Um dos dispositivos mais utilizados para efetuar controlo de ganho automático é o AGC. As realimentações do AGC podem ser do tipo Feedback ou Feedforward. Figura 1 – Feedback e Feedforward AGC. Existem vários tipos de AGC disponíveis comercialmente. Antes de se efetuar a sua escolha deve-se ter em consideração o tipo de aplicação, o ganho pretendido e a sua resposta em frequência. O TL026 é um AGC produzido pela Texas Instruments [2] que apresenta caraterísticas que se enquadram com os requisitos do sistema a implementar: ganho elevado e capacidade de operar a altas frequências. Figura 2 – TL026. Fonte: http://www.ti.com/product/tl026
  17. 17. Controlador de ganho automático baseado numa plataforma FPGA Introdução Paulo Lima 4 Tabela 1 – Caraterísticas do TL026. Figura 3 – Relação entre tensão de entrada e o ganho para o TL026. Fonte: Datasheet do TL026C.
  18. 18. Controlador de ganho automático baseado numa plataforma FPGA Introdução Paulo Lima 5 1.7 Tecnologias utilizadas 1.7.1 FPGA Xilinx Spartan-3A O FPGA é uma das estruturas fundamentais do projeto, pois além de funcionar como controlador, ao manter estável a amplitude do sinal recebido, irá incorporar as outras funcionalidades de todo o sistema final para o qual este projeto se destina. A última plataforma FPGA lançada pela Xilinx é a Virtex-7 [3]. No entanto, foi utilizado o Spartan-3A Starter Kit que reunia todas as caraterísticas necessárias a um baixo preço. Figura 4 – FPGA Xilinx Virtex-7. Fonte: http://www.eetimes.com/document.asp?doc_id=1316816 O kit de desenvolvimento da Xilinx Spartan-3A inclui: Placa de desenvolvimento; Fonte de alimentação; Software Xilinx ISE Design Suite. Figura 5 – Spartan-3A Starter Kit. Fonte: http://www.em.avnet.com/en-us/design/linecard/Pages/Xilinx.aspx
  19. 19. Controlador de ganho automático baseado numa plataforma FPGA Introdução Paulo Lima 6 Esta versão apresenta as seguintes caraterísticas [4]: Dispositivos:  Spartan-3A (XC3S700A-FG484);  Platform Flash (XCF04S-VOG20C). Relógio:  50 MHz crystal oscillator on-board;  Open slot for optional user-installed clock. Memória:  4 Mbit Platform Flash PROM;  32M x 16 DDR2 SDRAM;  32 Mbit parallel Flash;  2-16 Mbit SPI Flash devices. Dispositivos de interface analógica:  4-channel D/A converter;  2-channel A/D converter;  Signal amplifier. Conetores e interfaces:  Ethernet 10/100 PHY;  JTAG USB download port;  2 RS-232 9-pin serial port;  PS/2-style mouse/keyboard port;  15-pin VGA connector;  FX2 100-pin;  2 expansion 6-pin connectors;  20 user I/O available on standard header pins;  Stereo mini-jack for PWM audio;  Rotary/push button function switch;  8 individual LED outputs;  4 slider switches;  4 push-button switches. Display: 16 carateres, 2 linhas LCD.
  20. 20. Controlador de ganho automático baseado numa plataforma FPGA Introdução Paulo Lima 7 1.7.2 Matlab 2010b Neste projeto, os algoritmos de controlo serão desenvolvidos através do Matlab e da sua ferramenta Simulink que previamente foram atualizados com o Software Xilinx ISE Design Suite fornecido pelo kit de desenvolvimento da Xilinx Spartan-3A. A ferramenta System Generator que é uma atualização do Matlab produzida pelo Xilinx ISE Design Suite, permite além de desenvolver os algoritmos no Matlab simular previamente os resultados antes de enviar o código para o FPGA. A última versão lançada é o Matlab 2013b [5], mas por questões de compatibilidade foi utilizada a versão 2010b. Figura 6 – Matlab 2010b. O Matlab [6-7] é uma linguagem de alto nível que integra um ambiente interativo, vocacionada para cálculos. É utilizado numa vasta gama de aplicações tais como processamento de sinal e vídeo, sistemas de controlo, testes e medições. O Simulink [8] como já foi referido, é uma ferramenta do Matlab que permite desenvolver algoritmos graficamente através da conexão e configuração de diferentes blocos existentes no sistema. A vantagem do Simulink é poder-se programar em alto nível ao utilizar-se os blocos, não necessitando de manipular todo o código de baixo nível que se encontra associado a cada bloco. O System Generator [9] acrescenta a capacidade ao Simulink de utilizar blocos especiais pertencentes ao domínio dos FPGA. Assim, torna-se possível a criação de algoritmos no Simulink e a sua posterior conversão numa linguagem HDL.
  21. 21. Controlador de ganho automático baseado numa plataforma FPGA Introdução Paulo Lima 8 1.8 Contributos deste trabalho Um dos contributos deste projeto foi a aplicação de vários conceitos aprendidos ao longo da licenciatura e o aprofundamento de outros mais específicos como as aplicações em FPGA. A tecnologia tem o intuito de simplificar e dinamizar tarefas. Assim, outro contributo deste trabalho foi simplificar e tornar eficiente uma tarefa que se tornaria pouco prática. Quando se pretende realizar a modulação/desmodulação de um sinal, é conveniente que a amplitude desse sinal seja aproximadamente 0,8V. As gamas dos sinais recebidos variam entre alguns mV até cerca de alguns V. Assim o desenvolvimento deste projeto deu um contributo importante ao lançar as bases para o controlo de ganho automático a implementar nos sistemas de aquisição que se estão a utilizar atualmente ao nível da pesquisa de comunicações subaquáticas. O algoritmo de controlo desenvolvido no projeto é independente da aplicação final, podendo ser utilizado para outros fins, o que representa um contributo pessoal na medida que poderá ser utilizado em investigação futura. 1.9 Organização do relatório O relatório será desenvolvido ao longo de quatro capítulos: 1. Introdução: Enquadramento, apresentação, motivação, planeamento, objetivos, estado da arte, tecnologias utilizadas e contributos do trabalho. 2. Contexto: Apresentação do tema onde se insere o projeto e descrição dos modelos a implementar. 3. Descrição técnica: Análise dos objetivos definidos para este projeto, incluindo desde estudo do problema até o desenvolvimento das soluções. 4. Conclusões: São apresentadas as conclusões finais do trabalho, bem como análises críticas e perspetivas futuras.
  22. 22. Controlador de ganho automático baseado numa plataforma FPGA Contexto Paulo Lima 9 2 Contexto Os sistemas de comunicações subaquáticas sem fio têm sofrido um grande desenvolvimento nas últimas décadas, comparativamente com os avanços nas comunicações sem fio aéreas convencionais. No entanto o sistema de comunicação aéreo tende a falhar em ambientes subaquáticos, onde o meio é adverso à propagação de diferentes tipos de onda, tanto eletromagnética como acústica [10]. Surge assim a necessidade de promover a cada dia este tipo de pesquisa, de modo a se ultrapassarem barreiras e se atingirem novos objetivos. Daí a quantidade crescente de projetos existentes nesta área, com os investigadores a trabalharem muitas vezes com o objetivo comum de superar um objetivo. O desenvolvimento das comunicações subaquáticas tem sido decisivo para a melhoria da tecnologia em redes de sensores de submarinos [11], mergulhadores e submarinos de comunicações [12], robótica [13], veículos submarinos automáticos de navegação e controlo [14]. Ao mesmo tempo, o avanço tecnológico nas comunicações subaquáticas tem permitido o progresso em outras áreas, tais como: Exploração dos oceanos e da vida marinha como suporte à biodiversidade e para pesquisa farmacêutica [15-16]; Deteção de campos petrolíferos [17]; Exploração de minerais valiosos [18]; Recolha de informação para efetuar o mapeamento subaquático do oceano [19]; Prevenção de atividade sísmica e estudo dos efeitos dos terramotos submarinos [20]; Proteção do ambiente através da monitorização da poluição (química, biológica e nuclear), correntes oceânicas, ventos, condições da água (salinidade e pH) e mudanças climatéricas [21-22]; Vigilância costeira [23];
  23. 23. Controlador de ganho automático baseado numa plataforma FPGA Contexto Paulo Lima 10 Sistemas de defesa [24]; Sistemas de deteção de intrusão [25]; Comunicações entre submarinos [26-27]. Torna-se assim imperativo encontrar soluções que sejam capazes de satisfazer todas estas necessidades. As soluções propostas têm sido de três tipos: rádio frequência, ótica e acústica [28]. Um dos requisitos para o sistema de aquisição utilizado no projeto seria de efetuar um controlo de ganho automático aos sinais recebidos de forma a manter uma amplitude pré-definida, de modo a proceder-se facilmente à modulação dos sinais. Uma vez que os sinais transmitidos são na ordem dos mV e que durante a transmissão o sinal com a distância e a frequência sofre bastante atenuação, em alguns casos, não haveria amplitude suficiente para efetuar a desmodulação. Como tal o controlo do ganho à entrada estava a fazer-se de forma manual, de forma a manter uma amplitude que permitisse a correta desmodulação. Surge assim, o tema para este projeto, o desenvolvimento de um controlador de ganho automático: Figura 7 – Tema do projeto. Laboratorialmente, já existia um modelo implementado para simular o meio aquático, com a representação de todo o canal de transmissão.
  24. 24. Controlador de ganho automático baseado numa plataforma FPGA Contexto Paulo Lima 11 Figura 8 – Modelo laboratorial implementado. O modelo implementado representa um aquário contendo água. No interior possui um emissor e um hidrofone que funciona como recetor dos sinais enviados pelo meio aquático. Este sistema já possui de raiz a sua própria eletrónica de instrumentação, nomeadamente ADC e DAC, desenvolvida em outros projetos de pesquisa. No entanto, para que este projeto possa funcionar de forma autónoma deverão ser projetados os seus próprios esquemas de instrumentação para uma possível implementação futura. Como a parte da modulação e desmodulação não é da competência deste projeto e são estruturas já desenvolvidas, será necessário dimensionar os módulos representados na figura 9.
  25. 25. Controlador de ganho automático baseado numa plataforma FPGA Contexto Paulo Lima 12 Figura 9 – Esquemas eletrónicos a desenvolver. O controlo automático de ganho será a principal competência para este projeto. O seu desenvolvimento será efetuado através do seguinte modelo: Figura 10 – Modelo de controlo a implementar. No final do projeto deve haver uma integração do algoritmo de controlo desenvolvido no sistema existente do UWBCSUA e estes devem ser compatíveis.
  26. 26. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 13 3 Descrição técnica O desenvolvimento do projeto baseou-se nas seguintes linhas orientadoras: estudo inicial de forma a justificar o FPGA como plataforma de desenvolvimento; dimensionamento dos esquemas de instrumentação; estudo da linguagem HDL que é a forma de programação do FPGA; desenvolvimento dos algoritmos de controlo automático e finalmente a realização dos testes ao sistema desenvolvido. 3.1 Justificação do FPGA como plataforma de desenvolvimento Quando se pretende desenvolver um sistema complexo, a melhor solução é ter uma forma de simular o sistema antes de proceder à sua implementação. Através da simulação é possível corrigir rapidamente erros, sem custos inerentes, logo, tem como vantagem o tempo e o custo. Outra das vantagens da simulação é que se forem aplicados modelos corretos, o detalhe da simulação pode quase equiparar-se ao real caso se utilize simuladores como o Matlab. Ao se desenvolver um sistema complexo, outros fatores devem ser levados em consideração, tal como as necessidades físicas do sistema e as caraterísticas do Hardware que o vai suportar. Assim, deve-se estudar previamente a capacidade de processamento, a resposta em frequência e se o Hardware pode ou não ser simulado com o Software que pretendemos. Para este projeto, pretende-se um tipo de controlador que efetue o controlo automático de ganho dos sinais recebidos no sistema. Para efetuar esse controlo poderiam ser utilizados microcontroladores (MCU), DSP ou FPGA. 3.1.1 MCU É um tipo de processador matemático que funciona através de um sistema de interrupções. É projetado para controlar outros dispositivos e/ou efetuar operações matemáticas simples, uma vez que não opera com vírgula flutuante [29]. Os MCU são uma boa escolha quando se pretende efetuar leituras a partir de sensores, controlar circuitos integrados ou efetuar alguma ação simples.
  27. 27. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 14 A vantagem do microcontrolador é que é muito fácil de utilizar, pode ser montado em qualquer placa e é relativamente barato. A desvantagem é ser algo lento para alguns tipos de aplicação comparativamente com outros controladores. 3.1.2 DSP É um tipo de processador vocacionado para processamento de sinal [30]. Tem a capacidade de processar uma grande capacidade de dados (Streaming) em alta velocidade. Pode ser definido como número inteiro ou vírgula flutuante. Algumas das suas aplicações mais comuns são: Visão por computador em tempo real; Processamento de radar; Processamento de sonar; Filtros digitais; Drives para motores. O DSP na maioria dos casos, não possui memória Flash, tornando-se uma boa escolha quando se necessita de um dispositivo que funcione como entrada/saída e que possua uma elevada capacidade de cálculo. 3.1.3 FPGA É uma das plataformas de desenvolvimento mais promissoras no panorama atual [31]. Relativamente aos processadores, o FPGA apresenta uma maior flexibilidade no que diz respeito à quantidade de instruções que permite executar, quantidade de portas disponíveis e área de silício. No entanto, tem desvantagens relativamente ao preço e ao consumo de energia. A sua flexibilidade arquitetónica pode no entanto gerar eficiência e tirar vantagens em muitas aplicações de processamento de sinal: Ajustar larguras de dados em todo o algoritmo; Utilizar paralelismos onde for necessário; Largura de banda da memória em massa.
  28. 28. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 15 As suas principais desvantagens para além do maior custo e consumo energético prendem-se com o complicado e longo desenvolvimento e com algum desconhecimento dos métodos de trabalho para quem está habituado a trabalhar com DSP. 3.1.4 Conclusão Para se efetuar a melhor escolha da arquitetura do controlador a utilizar deve-se levar em consideração as caraterísticas da aplicação a implementar. No projeto a desenvolver, a aplicação necessita de elevada velocidade de processamento, resposta em alta frequência (na ordem dos MHz) e que a arquitetura seja capaz de armazenar internamente o Software desenvolvido. É também conveniente que a arquitetura utilizada tenha capacidade para futura expansão, tanto ao nível do Upgrade dos algoritmos e por consequência aumento da quantidade de código armazenado quer por integração com outros blocos de programa que podem ser adicionados ao sistema. Utilizar um MCU no desenvolvimento do projeto, estaria fora de questão, pois mesmo sendo um dos controladores mais versáteis, não nos dá garantia em questões de velocidade de processamento nem de resposta em frequência. O DSP seria uma boa escolha, mas não permite a integração do sistema global nem expansão futura. A escolha indicada para o projeto, recai assim na utilização da plataforma FPGA que garante uma elevada velocidade de processamento, resposta em frequência, capacidade de armazenamento do Software desenvolvido, possibilidade de expansão futura e possibilidade de simular em tempo real através do Matlab/Simulink. Outro fator não menos importante que também foi levado em consideração, é que o FPGA já era utilizado no sistema principal. Logo, utilizar outro tipo de controlador seria um desperdício de meios, quando apenas um FPGA pode ser solicitado para múltiplas tarefas.
  29. 29. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 16 3.2 Desenvolvimento dos esquemas de instrumentação Internamente, o FPGA processa dados do tipo digital. Assim, torna-se necessário desenvolver os esquemas de conversores que efetuem a conversão dos sinais de analógico para digital (ADC) e digital para analógico (DAC). Para a integração do algoritmo de controlo de ganho no UWBCSUA não existe necessidade de desenvolver qualquer eletrónica de instrumentação, uma vez que o sistema físico já se encontra montado, possuindo os seus próprios filtros, amplificadores, DAC e ADC. No entanto os esquemas de instrumentação serão desenvolvidos para este projeto a nível de entrada e saída do FPGA, serão simulados e estarão prontos a implementar uma vez que sendo pretendido que este projeto possa funcionar de forma completamente autónoma, ele deve ter o seu próprio sistema de aquisição de dados implementado. Torna-se então necessário desenvolver dois blocos, um ADC e um DAC. Ao ADC será adicionado um amplificador para regular a amplitude do sinal e um filtro para eliminar ruídos de entrada. No DAC é necessário um amplificador de saída: Figura 11 – Esquemas dos circuitos a desenvolver. 3.2.1 Bloco ADC O ADC selecionado para o circuito foi o AD9244 que é um conversor analógico-digital de 14 bits fabricado pela Analog Devices [32]. A Figura 13 mostra a configuração dos pinos do AD9244. As saídas digitais processam-se entre os pinos D0 e D13, sendo que D0 representa o bit menos significativo e D13 o bit mais significativo. O AD9244 necessita ser alimentado com duas tensões: 3,3 e 5V.
  30. 30. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 17 Figura 12 – Configuração dos pinos do AD9244. Fonte: Datasheet do AD9244. Para as restantes configurações e de modo a obter os valores para os componentes necessários, consultou-se o datasheet do fabricante. Considerando que o valor de referência da tensão de entrada pode variar entre (VREF + VREF/2) e (VREF – VREF/2), obtém-se o seguinte esquema de ligação: Figura 13 – Esquema de ligação do AD9244. Fonte: Datasheet do AD9244.
  31. 31. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 18 Através da análise do esquema de ligação fornecido no datasheet, pode-se retirar a lista de componentes necessária para efetuar a montagem do circuito, bem como os respetivos valores dos componentes: Tabela 2 – Lista de componentes para o AD9244. Condensador C1, C2, C4, C6, C10 100nF Condensador C3, C5, C7, C9 10µF Condensador C8 20pF Resistência R1, R2 33Ω Com o esquema da figura 13 e os valores da tabela 2: Figura 14 – Esquema elétrico do AD9244.
  32. 32. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 19 De modo a se poder controlar o ganho do sinal na entrada, é necessário aplicar um pequeno circuito amplificador. Desenvolveu-se assim, um amplificador não inversor, utilizando um LM7171 produzido pela Texas Instruments [33]. A escolha recaiu neste AmpOp devido à sua capacidade de operar com tensões de ±5V. Figura 15 – Amplificador não inversor. O ganho do amplificador é dado através da sua função de transferência: Figura 16 – Função transferência do amplificador não inversor. Se R1=1kΩ e R2 for uma resistência variável de 10kΩ, podemos obter um ganho variável entre 1 e 11. Figura 17 – Simulação do amplificador para ganho 1. Foi utilizado o Software Multisim [34] para simular o comportamento do amplificador não inversor. Na figura 17, foi utilizado um sinal de 0,1Vp, 1MHz,
  33. 33. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 20 R2=1Ω. A forma de onda da esquerda representa o sinal de entrada e a forma de onda da direita representa o sinal de saída. É possível verificar que para esta situação obtemos ganho unitário e o amplificador tem o comportamento de um buffer (seguidor de tensão). Na figura 18, foi utilizado um sinal de 0,1Vp, 1MHz, R2=10kΩ. A forma de onda a azul representa o sinal de entrada e a forma de onda vermelha, o sinal de saída. Figura 18 – Simulação do amplificador para ganho 11. É observável que para esta simulação, o ganho da saída é aproximadamente 11 relativamente à entrada. Assim para valores de tensão pequenos como os que se pretende utilizar no projeto (na ordem dos mV) pode-se utilizar o amplificador em toda a sua faixa de amplificação, caso seja necessário. De modo a tentar eliminar o possível ruído associado ao sinal de entrada, é necessário colocar um filtro à entrada do amplificador não inversor. Existem quatro tipos de filtros: passa-baixo, passa-alto, passa-banda e rejeita banda. Uma opção seria utilizar o filtro passa-alto, que atenuaria as frequências abaixo da frequência de corte (consideradas ruído). No entanto, como as frequências de trabalho para esta aplicação estarão compreendidas entre os kHz e cerca de 2MHz optou-se pelo filtro passa-banda, que
  34. 34. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 21 permite a passagem das frequências de uma certa banda e atenua as frequências fora dessa banda. Para se poder dimensionar o circuito e calcular os componentes a aplicar é necessário conhecer os limites inferior e superior de corte para definir a banda do filtro. Assim considera-se que o filtro deve atuar entre 500Hz e 2MHz, atenuando as demais frequências. Figura 19 – Filtro passa-banda RC. O ganho do filtro é obtido através da seguinte expressão: Figura 20 – Ganho do filtro RC. Não se pretende que o filtro apresente ganho de sinal. Assim, para um ganho unitário as resistências devem apresentar o mesmo valor. Considerando que R1=R2=3,3kΩ e com os limites para a frequência já definidos, podemos calcular os valores para os condensadores na figura 21.
  35. 35. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 22 Figura 21 – Dimensionamento dos condensadores para o filtro. Os valores obtidos para os condensadores são valores teóricos e não existem valores idênticos disponíveis comercialmente. Os valores mais próximos a nível comercial são: C1=100nF, C2=24pF. Figura 22 – Simulação do filtro para uma frequência de 50Hz. Na figura 22, utilizou-se um sinal de 0,1Vp, 50Hz. A forma de onda a azul representa o sinal de entrada e a forma de onda a vermelho representa o sinal de saída. Para esta frequência, o sinal de saída encontra-se a sofrer atenuação, sendo que o objetivo é filtrar estas gamas de frequência.
  36. 36. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 23 Figura 23 – Simulação do filtro para 1MHz. Na figura 23, utilizou-se um sinal de 0,1Vp, 1MHz. A forma de onda a azul representa o sinal de entrada e a forma de onda a vermelho representa o sinal de saída. A frequência utilizada encontra-se dentro dos limites da banda definida para este filtro, logo, existe uma ligeira atenuação mas o sinal de saída tem aproximadamente a mesma amplitude do sinal de entrada. Trabalhando junto dos limites da banda, o sinal irá sofrer mais atenuação. Então pode-se regular o amplificador à saída do filtro para ajustar o sinal de saída. Figura 24 – Simulação do filtro para 2MHz.
  37. 37. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 24 É visível pela onda a vermelho (figura 24) que representa o sinal de saída que para 2MHz já existe bastante atenuação. Então aplicando o amplificador, controla-se facilmente o sinal de saída: Figura 25 – Simulação do filtro com o amplificador. Na figura 25, simulou-se o sinal com um amplificador na saída do filtro de forma a ajustar o ganho. Foi utilizado um sinal de 0,1Vp, 2MHz. A forma de onda a azul representa o sinal de entrada e a forma de onda a vermelho representa o sinal de saída. Variando o potenciómetro do amplificador para aproximadamente R=500Ω consegue-se estabilizar o ganho na saída em relação à entrada. Figura 26 – Diagrama de Bode do filtro RC.
  38. 38. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 25 Para o correto funcionamento do circuito final falta acrescentar um pequeno circuito intermédio. O ADC requer que o seu sinal de entrada não seja referenciado à massa, logo, é necessário acrescentar um circuito que introduza uma tensão de offset. Será utilizado um amplificador de diferença, que terá como entradas a tensão de referência e a saída proveniente do filtro: Figura 29 – Amplificador para ganho de offset. A partir do datasheet do AD9244, retira-se que C1=10µF. Utilizando valores para as resistências de R1=R2=R3=1kΩ: Figura 27 – Simulação para o ganho de offset.
  39. 39. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 26 Na figura 27, foi utilizado um sinal de entrada com 1Vp, 1MHz. A forma de onda a azul representa o sinal à entrada do filtro e a forma de onda vermelha o sinal à saída do amplificador de diferença, após passar pelo amplificador não inversor programado para ganho unitário. É possível observar que foi conseguido o ganho de offset necessário ao correto funcionamento do ADC. Resta finalmente interligar todos os circuitos já desenvolvidos, para criar o bloco ADC num esquema compacto. De modo a facilitar a alimentação de todo o circuito serão acrescentados três reguladores de tensão: LM7805: regulador de 5V da Texas Instruments [35]; LM7905: regulador de -5V da Fairchild Semiconductor Corporation [36]; LD1117V33: regulador de 3,3V da ST Microelectronics [37]. Quando se utilizam reguladores de tensão, é boa prática aplicar-se dois condensadores para efetuar o desacoplamento da entrada com a saída. O datasheet do LM7805 recomenda a utilização de um condensador de 0,33µF para a entrada e 0,1µF para a saída. O datasheet do LM7905 recomenda a utilização de um condensador de 2,2µF para a entrada e 1µF para a saída. O datasheet do LD1117V33 recomenda a utilização de um condensador de 100nF para a entrada e 10µF para a saída. Antes de efetuar os esquemas finais, consultaram-se os vários datasheet utilizados uma vez que alguns componentes têm esquemas de ligação diferentes.
  40. 40. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 27 Figura 28 – Esquema ligação do LM7171. Fonte: Datasheet do LM7171. Figura 29 – Esquema ligação do LM7805. Fonte: Datasheet do LM7805. Figura 30 – Esquema ligação do LM7905. Fonte: Datasheet do LM7905. Figura 31 – Esquema de ligação do LD1117V33. Fonte: Datasheet do LD1117V33.
  41. 41. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 28 Figura 32 – Circuito final do bloco ADC.
  42. 42. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 29 3.2.2 Bloco DAC O DAC selecionado para o circuito foi o DAC904 que é um conversor digital- analógico de 14 bits fabricado pela Texas Instruments [38]. Figura 33 – Configuração dos pinos do DAC904. Fonte: Datasheet do DAC904. Para configurar o DAC904 consultou-se o datasheet, de forma a obter os valores para os restantes componentes: Figura 34 – Esquema de ligação do DAC904. Fonte: Datasheet do DAC904.
  43. 43. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 30 Tabela 3 – Lista de componentes para o DAC904. Condensador C1, C2, C3 0,1µF Resistência R1 2kΩ Figura 35 – Configuração do DAC904. A saída analógica do DAC processa-se entre os pinos 21 e 22. Assim, torna-se necessário desenvolver um circuito que efetue a diferença entre esses dois sinais e estabeleça o sinal de saída. Para o desenvolvimento do amplificador de diferença, optou-se pelo LM6172 da National Semiconductor Corporation [39] pois é um AmpOp que pode ser operado com tensões de alimentação na ordem dos ±5V e é recomendado pelo fabricante para aplicações com DAC onde se necessita de frequências elevadas.
  44. 44. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 31 Figura 36 – Amplificador de diferença. O ganho deste amplificador é dado através da sua função de transferência: Figura 37 – Função transferência do amplificador de diferença. Como o sinal à saída do DAC vai sofrer bastante atenuação, pretende-se um ganho de aproximadamente 10. Através da expressão da função de transferência, podem-se retirar relações para calcular o valor das resistências: Figura 38 – Dimensionamento das resistências R1 e R2.
  45. 45. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 32 Considerando um valor para R1 relativamente baixo, mas acima do valor das duas resistências de carga que ainda faltam incluir no circuito final, obteve-se R1=47Ω, R2=470Ω. Figura 39 – Dimensionamento das resistências R3 e R4. Para este dimensionamento, R3=47Ω e R4=470Ω. Figura 40 – Simulação do amplificador de diferença. Na figura 40, utilizou-se o Software Multisim para observar o comportamento do amplificador de diferença. Foram aplicados dois sinais: as formas de onda azul e verde representam os sinais de entrada e a forma de onda vermelha representa o sinal de saída. Como entradas foram aplicados um sinal com 2Vp, 1KHz e outro com 1Vp, 1KHz. É possível verificar que o sinal de saída representa a tensão diferencial entre os dois sinais de entrada e apresenta um ganho elevado, como previsto nos cálculos teóricos.
  46. 46. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 33 Para efetuar a ponte entre o DAC e o amplificador de diferença é necessário acrescentar mais dois componentes, duas resistências de carga que terão de ser ligadas uma em cada saída analógica do DAC. Os valores para estas resistências são obtidos através do datasheet do fabricante: Figura 41 – Esquema adicional para o DAC904. Fonte: Datasheet do DAC904. Utilizando os valores comerciais mais próximos, serão assim utilizadas R5=27Ω e R6=30Ω. O condensador de desacoplamento é opcional e não será considerado para esta aplicação. Finalmente é necessário interligar os dois circuitos dimensionados, preparado para poder ser implementado. Tal como no desenvolvimento do bloco ADC, de modo a facilitar a alimentação do circuito serão acrescentados dois reguladores de tensão: LM7805: regulador de 5V; LM7905: regulador de -5V. Figura 42 – Esquema de ligação do LM6172. Fonte: Datasheet do LM6172.
  47. 47. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 34 Figura 43 – Circuito final do bloco DAC. 3.3 Linguagem HDL O controlador utilizado no projeto (FPGA) é programado através de linguagem HDL. Esta pode ser de dois tipos: VHDL ou Verilog. 3.3.1 VHDL É uma linguagem utilizada para descrever sistemas digitais que surgiu em 1980 através do programa VHSIC, um programa norte-americano de defesa que desenvolvia circuitos integrados de alta velocidade [40]. Ao desenvolver o VHSIC tornou-se clara a necessidade de padronizar a linguagem utilizada para descrever o Hardware dos circuitos integrados (CI) utilizados. Assim, nasceu o VHDL que é uma linguagem de descrição de Hardware (de alta velocidade), padronizada pelo IEEE.
  48. 48. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 35 O VHDL foi desenvolvido para satisfazer uma necessidade em aberto no que havia em relação ao processo de conceção dos circuitos. Ele permite a descrição do circuito num esquema e posterior decomposição em subprojetos que podem ser interligados. Permite ainda que os projetos possam ser simulados antes de serem implementados, de modo que os projetistas têm a possibilidade de comparar alternativas e corrigir erros sem custos inerentes. Vantagens: Interligação de projetos sem necessidade de alterações; A linguagem é independente do estado da tecnologia; Facilidade em modificar os projetos; O custo de produção utilizando VHDL e dispositivos programáveis é muito menor do que utilizar circuitos dedicados. Desvantagens: Não gera um Hardware otimizado. Aplicações: Controlo de processos; Instrumentação; Drivers de barramentos e conversores de interface; Processamento digital de sinal. Um programa apresenta quatro estruturas (três principais e uma secundaria): Package: declaração das livrarias; Entity: configuração das portas. As portas podem ser declaradas com in, out, inout e buffer. Architecture: onde é descrita a lógica do programa. Podem ser declarados processos que são executados em paralelo. Process: toda a lógica descrita fora de um processo é assíncrona. Lógicas síncronas devem ser obrigatoriamente descritas dentro dos processos. Todos os sinais analisados pelo processo devem ser
  49. 49. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 36 declarados dentro deste, caso contrário podem não ser inferidos na implementação. Um algoritmo em VHDL apresenta a seguinte representação formal: Figura 44 – Estrutura de um código em VHDL. 3.3.2 Verilog Com o desenvolvimento das linguagens HDL, o processo de descrição de Hardware tornou-se algo similar ao processo de programação de Software: Figura 45 – Processo de programação em HDL.
  50. 50. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 37 O Verilog permite representar a hierarquia de um projeto através de duas estruturas [41]: Módulos; Portas. Um programa desenvolvido em Verilog é composto por módulos. O módulo é a unidade básica do sistema e pode ser composto por instâncias de outros módulos, sendo chamado de parent module, com as instâncias a serem denominadas de parent child. No capítulo das vantagens e desvantagens o Verilog tem um comportamento idêntico ao VHDL, aspetos já referidos anteriormente. Uma diferença substancial é que os criadores do Verilog, definiram a sintaxe da linguagem bastante familiar com a da linguagem C, tornando-a bastante intuitiva. Obviamente que retirando as semelhanças de sintaxe com a linguagem C, são duas linguagens completamente diferentes, sendo que o C é uma linguagem baseada no paradigma procedural, enquanto o Verilog é uma programação em linguagem modular. Um algoritmo em Verilog terá a seguinte representação formal: Figura 46 – Estrutura de um código em Verilog.
  51. 51. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 38 3.3.3 Exemplos de aplicação Para o desenvolvimento do algoritmo de controlo do controlador que se pretende implementar, o algoritmo em HDL será obtido indiretamente. O algoritmo será desenvolvido no Matlab/Simulink e no final, através do System Generator, será gerado um código HDL (VHDL ou Verilog conforme a escolha do utilizador) para enviar para o FPGA. A figura 47 exemplifica uma pequena estrutura presente no algoritmo que será desenvolvido. Trata-se de um registo, ao qual foram adicionados dois blocos que representam portas de entrada (In) e saída (Out) do FPGA. O bloco “System Generator” vai permitir a geração do código associado em VHDL e Verilog. Figura 47 – Registo utilizado no algoritmo final. Através das definições do bloco “System Generator”, pode ser simulado o projeto e escolhido o tipo de código a gerar, como é exemplificado na figura 48: Figura 48 – Definição do tipo de linguagem HDL a gerar.
  52. 52. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 39 São assim criados uma série de ficheiros executáveis e ficheiros de sistema contendo o código HDL que ficam armazenados na pasta de projeto. Em seguida, através do Software IDE Design Suite é possível aceder e se assim for desejado, modificar esse código desenvolvido: Figura 49 – Extrato do exemplo de código gerado em VHDL. Figura 50 – Extrato do exemplo de código gerado em Verilog.
  53. 53. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 40 3.3.4 Conclusão Ao se desenvolver um algoritmo de controlo automático de ganho e interface com o FPGA que produzisse um circuito muito complexo levaria a códigos HDL de difícil implementação e visualização. Através do exemplo de aplicação anterior, obtém-se a perceção que um pequeno circuito facilmente ascende as centenas de linhas de código a desenvolver, para além da implementação prévia dos seus circuitos digitais. Utilizando o Matlab/Simulink na construção dos modelos lógicos para o algoritmo desenvolvido este converterá automaticamente no final o modelo em código HDL, permitindo poupar o tempo despendido com a programação e permitindo o programador abstrair-se do tipo de linguagem ao lhe permitir desenvolver a solução num nível ainda mais elevado. 3.4 Desenvolvimento do algoritmo de controlo O algoritmo a desenvolver deverá fazer o interface com o módulo FPGA e permitir efetuar o controlo de ganho automático. Numa fase posterior, este algoritmo deve permitir ser inserido nos algoritmos desenvolvidos previamente para o UWBCSUA. 3.4.1 Algoritmo a implementar Como foi descrito no Estado da Arte, o controlo automático de ganho é normalmente efetuado através da utilização de um AGC. Neste projeto, o controlo será desenvolvido apenas através do FPGA, sendo que para isso será criado um algoritmo (interface) que tenha um princípio de funcionamento parecido ao de um AGC. A ideia pensada para o algoritmo foi replicar o princípio de funcionamento de um AGC Feedforward, onde será necessário estabelecer uma referência e uma realimentação de modo a poder calcular o ganho necessário para colocar a saída dentro dos parâmetros previamente definidos.
  54. 54. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 41 Figura 51 – Fluxograma do algoritmo a implementar. 3.4.2 Simulação dos sinais de entrada De modo a testar o algoritmo desenvolvido, será necessário simular um sinal recebido proveniente do ADC que se encontra no sistema de aquisição. Assim, vai-se implementar um algoritmo unicamente em blocos Simulink que simule o sinal recebido proveniente do ADC. Esta parte do código servirá apenas para testes, não sendo incluída no código final a ser enviado para o FPGA, uma vez que o compilador apenas executa blocos do domínio Xilinx que se encontram delimitados pelas fronteiras do projeto. Figura 52 – Algoritmo para simular o sinal de entrada.
  55. 55. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 42 Os sinais de entrada poderão variar entre alguns mV até cerca de alguns V, com frequências na ordem dos 1MHz. Assim a onda de entrada terá uma frequência de 1M rad/segundo. É adicionado um sinal de ruído com uma semente predefinida (151291) e uma amplitude 0,001. No código desenvolvido foram adicionados dois osciloscópios virtuais (Scope1 e Scope2) para poder observar as formas de onda do sinal de entrada (Scope1) e do sinal de entrada somado de ruído (Scope2). Figura 53 – Simulação do sinal de entrada (amplitude 1). Figura 54 – Simulação do sinal de entrada com ruído.
  56. 56. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 43 3.4.3 Interface com o FPGA Após o desenvolvimento do fluxograma representativo do algoritmo a implementar e do simulador para o sinal de entrada, estão as bases lançadas para começar a implementar o interface com o FPGA que vai efetuar o controlo automático de ganho. A primeira solução encontrada foi tentar aproximar o modelo do fluxograma a uma solução em código Simulink, utilizando os blocos da Xilinx que permitem a transposição posterior para linguagem HDL: Figura 55 – Diagrama de blocos da solução a implementar. O número disponível de blocos Xilinx para efetuar a programação do FPGA é algo limitado. Para as operações que se pretendiam implementar, existiam inúmeros blocos pertencentes ao domínio do Simulink, mas que não puderam ser utilizados, uma vez que o código destes não é compilado em HDL. No entanto, para suprir a limitação em número de blocos, a Xilinx disponibiliza um bloco específico, o MCode, que pode ser definido quanto ao nível de entradas e saídas e a sua programação interna é feita pelo utilizador conforme as suas necessidades, utilizando código Matlab. Assim, no primeiro algoritmo desenvolvido utilizou-se um bloco MCode para efetuar a função dos blocos de controlo e instruções.
  57. 57. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 44 Figura 56 – Código do primeiro algoritmo desenvolvido. Com este primeiro algoritmo desenvolvido, pretendia-se calcular a média do sinal de entrada para estabelecer um ganho a aplicar (correção do sinal de saída) caso fosse necessário. No entanto, este algoritmo não se revelou funcional, uma vez que apresentava alguns erros estruturais: 1. As entradas que se encontravam realimentadas pelas saídas do MCode tinham de ser declaradas dentro do código do mfile; 2. Não se podem realizar operações com uma variável de entrada e saída simultaneamente dentro do bloco MCode; 3. Ao utilizar os registos geram-se erros devido à utilização de diferentes tipos de dados; 4. O FPGA não permite divisões com operadores que sejam diferentes de base 2, impedindo o método que se usava para calcular o ganho. 5. O cálculo da média do sinal de entrada não estava a ser calculado de forma eficaz. Apesar dos erros estruturais encontrados, a estrutura base do algoritmo era o caminho a seguir para atingir o algoritmo final de interface com o FPGA. Deste modo, procedeu-se à correção de erros e formas de otimizar o circuito.
  58. 58. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 45 Relativamente aos pontos 1 e 2, foi manipulado internamente o código do MCode de forma a estabelecer as instruções de realimentação. Para uniformizar o sistema relativamente ao tipo de dados utilizado (ponto 3) foram adicionados dois tipos de blocos: Convert e Assert. Deste modo, colocando o bloco “Convert” à entrada e o bloco “Assert” à saída dos outros blocos do sistema, consegue-se uniformizar o tipo de dados utilizado pelo sistema. Figura 57 – Blocos de acerto de tipo de dados. Em relação ao ponto 4, para o cálculo do ganho foram estudados alguns métodos alternativos: Implementação de ciclos while; Implementação de uma ALU para cálculo numérico; Implementação do método de aproximação. A introdução de ciclos while teoricamente podia resolver o problema do cálculo do ganho, mas na prática iria introduzir mais um erro no sistema. O modo de funcionamento do FPGA já é um ciclo de processamento, logo, não se podem introduzir mais ciclos dentro desse ciclo. Assim, um dos aspetos a ter em consideração quando se utilizam MCode é que não se podem utilizar estruturas de repetição, apenas estruturas condicionais. A implementação de uma ALU resolveria definitivamente o problema a nível de cálculos, no entanto, como havia limitações de tempo para esta etapa, o tempo que se iria dispensar para criar mais uma estrutura não justificava a finalidade. Assim, o melhor compromisso tempo-recursos foi optar pelo método de aproximação que pode ser desenvolvido através da manipulação do código. Obtém- se um resultado ligeiramente mais lento, mas eficaz para este tipo de aplicações.
  59. 59. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 46 Para o aperfeiçoamento do cálculo da média do sinal de entrada (ponto 5) foi desenvolvido mais um bloco MCode, denominado de “turn_positive”, de modo a converter as amostras do sinal para positivo em todos os ciclos, uma vez que a média de um sinal sinusoidal tende para zero. O algoritmo de interface após corrigido e otimizado ficou com a estrutura apresentada na figura 58. Figura 58 – Código final do algoritmo desenvolvido. Foram adicionados ainda dois blocos de código que funcionam como saídas do sistema: os “Clock 25 MHz”. Estas estruturas estavam desenvolvidas no algoritmo do UWBCSUA e a sua configuração não foi alterada, para que o sistema final funcione à mesma frequência de relógio (uniformização). Quando este algoritmo for integrado no UWBCSUA, os blocos de “Clock 25 MHz” são retirados desta parte do código para não existir repetição. No entanto, para este algoritmo funcionar autonomamente, ele necessita desses blocos para configurar a frequência de relógio e as portas do FPGA que fornecem o sinal de relógio para o sistema de aquisição (ADC e DAC).
  60. 60. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 47 Figura 59 – Clock 25 MHz. 3.4.4 Descrição do código desenvolvido O algoritmo implementado foi construído tendo como base um bloco MCode, onde se desenvolveu um segundo algoritmo em código Matlab com um conjunto de instruções. Adicionalmente foi utilizado outro bloco MCode no final para auxílio do cálculo da média do sinal de entrada. Figura 60 – Bloco MCode principal. A função deste bloco será calcular a média do sinal de entrada, e conforme o valor dessa média atuar no ganho a aplicar. A configuração deste bloco é efetuada através de um mfile desenvolvido em Matlab que é adicionado ao projeto. A figura 61 demonstra o código presente no mfile. Inicialmente foi necessário declarar as instruções de realimentação do MCode e posteriormente as instruções do método de aproximação para cálculo do ganho.
  61. 61. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 48 Figura 61 – Código do MCode principal. O sistema possui três saídas (S, T, G) e cinco entradas (I1, I2, A, C, X). As variáveis S e A são responsáveis por fazer o acumulado da média do sinal de entrada, as variáveis T e C são responsáveis pela contagem da média e as variáveis G e X representam o ganho a ser aplicado. Inicialmente são declaradas as instruções de realimentação em cada estado. Assim, o ganho (G) é igual à razão de ganho (X), o somador (S) é igual ao acumulador (A) mais o sinal de entrada retirados 10 bit (I2) e o totalizador (T) é igual ao contador (C) incrementado de uma unidade. No código principal, torna-se necessário incluir uma estrutura (figura 62) que armazene o estado (memória) de cada uma dessas realimentações. Por esse motivo existe a inclusão de registos entre as saídas e entradas realimentadas.
  62. 62. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 49 Figura 62 – Bloco de registo. A média do sinal (I2) é calculada com um processo auxiliar, ao acrescentar o conjunto de blocos representado na figura 63 na entrada do MCode principal. Figura 63 – Processo auxiliar para cálculo da média. Como já foi referido, a média de um sinal sinusoidal, tende para zero. Utilizando o código “turn_positive” transforma-se as amostras do sinal em positivo em todos os ciclos. Figura 64 – Código turn_positive.
  63. 63. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 50 Em seguida, são retirados 10 bits ao sinal de entrada. Como se pode observar na figura 61, este sinal de entrada com 10 bits subtraídos é adicionado ao somador durante 1024 contagens efetuadas pelo contador. Assim, no final desta contagem, a média do sinal encontra-se efetuada, uma vez que retirar 10 bits a uma trama é o mesmo que dividir por 2¹⁰ = 1024. Após este cálculo da média, o contador que atingiu 1024 contagens ativa o método de aproximação que vai calcular se tem de aumentar ou diminuir ao ganho. É atribuído um valor inicial de ganho 10 configurado através do registo no código principal: Figura 65 – Valor inicial do ganho. Se o valor do acumulador (A) que representa a média calculada for superior ao valor que pretendemos obter na saída, o ganho será decrementado em uma unidade até que o valor da saída seja igual ao valor que pretendemos obter. Se a média for inferior efetua-se o processo inverso. Após o controlo do ganho, o Somador (S) e o Totalizador (T) devem ser reinicializados a zero, antes de um novo ciclo de cálculo da média do sinal. O sinal de saída é obtido através de um bloco multiplicador que em cada ciclo multiplica o sinal de entrada pelo ganho (figura 66). Ao longo do processo de cálculo do controlo automático este sinal vai progressivamente se ajustando ao valor pretendido.
  64. 64. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 51 Figura 66 – Cálculo do sinal de saída. 3.5 Implementação O projeto foi desenvolvido originalmente para ser integrado no UWBCSUA. Este é um projeto inserido na área das comunicações subaquáticas, que envolve modulação/desmodulação de sinal, sendo que apenas importa referenciar como ambos os projetos se integram e não os resultados obtidos, uma vez que esses são de outras competências. Após alguma discussão com o orientador, que foi o responsável pela realização do UWBCSUA, decidiu-se a melhor forma de integração dos dois módulos desenvolvidos. 3.5.1 Integração com o UWBCSUA Figura 67 – Integração do controlo automático de ganho. O módulo de controlo automático de ganho fica assim incorporado após os filtros digitais que foram implementados no algoritmo do UWBCSUA, como é mais percetível na figura 68:
  65. 65. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 52 Figura 68 – Localização do módulo de controlo automático de ganho. 3.5.2 Sistema independente Adicionalmente foram desenvolvidos esquemas de instrumentação para uma possível utilização do projeto, de forma independente, caso fosse necessário. Figura 69 – Estrutura para um funcionamento independente. 3.6 Testes ao sistema Para a realização dos testes ao sistema desenvolvido, recorreu-se ao simulador do Matlab para analisar o comportamento do algoritmo de controlo automático de ganho e no final foi utilizado o ambiente laboratorial para simular um sinal analógico num FPGA utilizando o sistema de aquisição pré-existente do UWBCSUA. O algoritmo desenvolvido baseia-se em amplitudes pré-determinadas e foi ajustado para responder segundo determinados critérios, sendo que para modificar os parâmetros é necessário modificar manualmente o código da sua programação antes de compilar para o FPGA.
  66. 66. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 53 3.6.1 Testes no simulador O primeiro teste realizado foi aplicar um sinal de entrada para ser amplificado. Para tal utilizou-se um sinal com amplitude 100, 1M rad/s de frequência, com ruído adicionado: Figura 70 – Sinal de entrada (amplitude 100). No algoritmo desenvolvido foram adicionados alguns osciloscópios extra, de modo a permitir observar mais alguns pormenores como o acumulado da média do sinal: Figura 71 – Acumulado da média do sinal de entrada (amplitude 100).
  67. 67. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 54 É possível observar na figura 71 que ao fim de cada 1024 contagens o acumulado da média se reinicia e que o sistema se encontra a calcular o ganho a aplicar ao sinal de saída. É ainda possível observar a progressão do ganho que se inicia em 10 e é atualizado ao fim de cada 1024 contagens mediante o apuro do cálculo da média: Figura 72 – Cálculo do ganho (amplitude entrada 100). Na figura 72, observa-se o ganho inicial a 10 e a sua progressão em “escada”, acompanhando o cálculo da média até atingir a estabilização. Este ganho multiplicado pelo sinal de entrada origina o seguinte sinal de saída: Figura 73 – Sinal de saída para entrada amplitude 100.
  68. 68. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 55 Em seguida realizou-se um teste para simular o efeito contrário: diminuir a amplitude do sinal de saída relativamente ao sinal de entrada. Para tal utilizou-se um sinal com amplitude 800, 1M rad/s de frequência, com ruído adicionado: Figura 74 – Sinal de entrada (amplitude 800). A figura 75 representa o acumulado da média do sinal de entrada, atualizado a cada 1024 contagens: Figura 75 – Acumulado da média do sinal de entrada (amplitude 800). É possível verificar que a média do sinal de entrada baixa até ocorrer uma estabilização. Isto ocorre porque ao longo deste ciclo o ganho está sendo progressivamente atualizado, como é observável na figura 76.
  69. 69. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 56 Figura 76 – Cálculo do ganho (amplitude entrada 800). Inicialmente, o ganho está em 10 e acompanhando o cálculo da média regride em “escada” descendente até estabilizar no valor 6, produzindo o seguinte sinal de saída: Figura 77 – Sinal saída para entrada amplitude 800. 3.6.2 Teste no laboratório A nível laboratorial, aproveitou-se o sistema de aquisição existente e introduziu-se um sinal analógico no FPGA para observar o seu comportamento. Antes foi necessário efetuar algumas configurações antes de compilar o código.
  70. 70. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 57 O sinal analógico será enviado para o FPGA através do ADC e posteriormente a sua leitura será feita através do DAC. Estes dois blocos de aquisição serão ligados à FX2 de 100 pinos da Xilinx Spartan-3A, tornando-se necessário configurar as portas de entrada e saída do algoritmo desenvolvido mediante as conexões estabelecidas na FX2. Tabela 4 – Ligações ADC/FX2. ADC FX2 FPGA ADC FX2 FPGA CLK J01 A12 D7 J09 A18 D0 J02 B13 D8 J10 C18 D1 J03 A14 D9 J11 A19 D2 J04 B15 D10 J12 B19 D3 J05 A15 D11 J13 A20 D4 J06 A16 D12 J14 B20 D5 J07 A17 D13 J16 D19 D6 J08 B17 Através destes dados pode-se configurar a porta de entrada do sistema que recebe os dados através do ADC e a porta do “Clock 25 MHz” que sincroniza o ADC: Figura 78 – Configuração da porta do FPGA para o sinal de entrada.
  71. 71. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 58 Figura 79 – Configuração da porta do FPGA para clock do ADC. Em seguida efetuou-se o mesmo processo para o DAC: Tabela 5 – Ligações DAC/FX2. ADC FX2 FPGA ADC FX2 FPGA CLK J34 K20 BIT8 J26 E20 BIT1 J31 K18 BIT9 J23 F18 BIT2 J32 K17 BIT10 J24 F19 BIT3 J29 H19 BIT11 J21 D22 BIT4 J30 J18 BIT12 J22 E22 BIT5 J27 G20 BIT13 J19 D20 BIT6 J28 G19 BIT14 J20 D21 BIT7 J25 F20 Com estes dados pode-se configurar a porta de saída do sistema que envia o sinal para o DAC e a porta “Clock 25 MHz” que o sincroniza: Figura 80 – Configuração da porta do FPGA para clock do DAC.
  72. 72. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 59 Figura 81 – Configuração da porta do FPGA para o sinal de saída. Finalmente é gerado o código em HDL através do System Generator. O Software Xilinx ISE Design Suite permite o envio do código gerado para o FPGA. Assim, com o FPGA carregado com o algoritmo de controlo desenvolvido é possível efetuar o último teste pretendido. Figura 82 – Montagem laboratorial. A figura 82 demonstra o equipamento utilizado no último teste realizado. Foi necessária uma fonte para alimentar os circuitos, um gerador de sinais para gerar um sinal analógico de entrada, o FPGA com o código já carregado e os sistemas de aquisição (ADC e DAC) acoplados na FX2.
  73. 73. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 60 Figura 83 – ADC utilizado (input). Figura 84 – DAC utilizado (output).
  74. 74. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 61 Para a leitura dos sinais aplicados no FPGA, foi utilizado um osciloscópio do tipo PicoScope de modo a obter os resultados diretamente no computador. Figura 85 – PicoScope 4000 Series. Fonte: http://www.picotech.com/picoscope4000.html Em seguida, introduziu-se no gerador, um sinal analógico de 100mV de amplitude com uma frequência de 1MHz: Figura 86 – Sinal analógico de entrada de 100mV.
  75. 75. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 62 Como esperado, o sinal de saída após o controlo automático realizado pelo FPGA é o apresentado na figura 87: Figura 87 – Sinal analógico de saída para entrada de 100mV. Finalmente é testado um sinal de amplitude mais elevada. Assim é introduzido um sinal analógico de 700mV de amplitude, com 1MHz de frequência: Figura 88 – Sinal analógico de entrada de 700mV.
  76. 76. Controlador de ganho automático baseado numa plataforma FPGA Descrição técnica Paulo Lima 63 Após o ganho inicial que é aplicado pelo algoritmo aplicado, e uma vez que a amplitude do sinal de entrada já é bastante elevada, o sistema vai proceder à gradual diminuição da amplitude do sinal de saída como se verifica na figura 89: Figura 89 – Sinal analógico de saída para entrada de 700mV. Comprova-se assim, que o sistema desenvolvido apresenta um comportamento real idêntico ao que era esperado nas simulações, validando o seu desempenho.
  77. 77. Controlador de ganho automático baseado numa plataforma FPGA Conclusões Paulo Lima 65 4 Conclusões O desenvolvimento do Controlador de Ganho Automático revelou-se um trabalho interessante de desenvolver ao permitir trabalhar em temas sobre os quais possuía pouco contato. Ao longo do projeto surgiram algumas dificuldades devido à minha menor experiência nesta área, que foram sendo resolvidas com muita perseverança e sempre com o assinalável auxílio do meu orientador. 4.1 Objetivos realizados Durante a realização do projeto, foram atingidos os objetivos propostos inicialmente:  Justificou-se o FPGA como plataforma de desenvolvimento;  Desenvolveu-se os esquemas de instrumentação;  Estudou-se exemplos em linguagem HDL;  Desenvolveu-se o algoritmo de controlo automático de ganho;  Implementou-se o sistema final;  Realizaram-se testes para aprovar o sistema. 4.2 Limitações & trabalho futuro Independentemente da solução apresentada ser funcional, ela podia ser otimizada usando outros mecanismos que não foram possíveis neste trabalho. Já foi referido que o ganho é calculado através de um método de aproximação o que leva a uma resposta relativamente lenta do sistema. Esta solução é válida para a aplicação em causa (UWBCSUA) mas pode-se tornar algo inadequada quando transposta para outras aplicações. Para o desenvolvimento deste projeto, devido a algumas limitações de tempo que foram provocadas por anomalias no Software iniciais e que gastaram imenso tempo a resolver, acabou por não se poder testar muitas alternativas,
  78. 78. Controlador de ganho automático baseado numa plataforma FPGA Conclusões Paulo Lima 66 principalmente aquelas que não resolvessem um problema de imediato, mas pelo contrário levantassem mais um problema auxiliar. Assim, como trabalho futuro, surge: Implementação de uma ALU para cálculo matemático de forma a calcular o ganho a aplicar; Melhoramento do algoritmo de controlo; Acrescentar uma estrutura para definir a amplitude de sinal pretendido, uma vez que neste momento o programa trabalha com valores pré-definidos. 4.3 Apreciação final A nível pessoal, considero a realização deste projeto uma experiência enriquecedora e uma excelente maneira de terminar um longo percurso de três anos de aprendizagem. Inicialmente, aquando da escolha do projeto, o meu contato com FPGA era praticamente nulo e pouco sabia acerca do tema onde ele se insere, mas um dos motivos que fortemente me influenciou nesta escolha foi saber que a programação seria efetuada através do Matlab/Simulink, uma vez que Programação é uma das minhas áreas favoritas. Avaliando o projeto, trata-se de uma aplicação específica desenvolvida para ser integrada noutra aplicação, sendo que da forma como se encontra atualmente tem parâmetros pré-definidos que a restringem um pouco, tendo que ser alterada a partir do seu código de implementação. No entanto, devido à forma rápida como o código pode ser alterado e compilado vejo aplicação noutros projetos que envolvam qualquer tipo de controlo de sinais. Em conclusão final pode-se dizer que aprofundei vários conceitos aprendidos ao longo da licenciatura para desenvolver este projeto, utilizei a pesquisa necessária e espírito crítico nos domínios que não conhecia e realizei os objetivos a que me tinha proposto inicialmente.
  79. 79. Controlador de ganho automático baseado numa plataforma FPGA Bibliografia Paulo Lima 67 5 Bibliografia [1] J. P. A. Pérez, S. C. Pueyo, B. C. López, “Automatic Gain Control – Techniques and Architectures for RF Receivers”, Chap 2 – AGC Fundamentals, ISBN: 978-1-4614-0166-7, Springer, 2011. [2] National Instruments, “Datasheet do TL026C”, 1998. [3] Xilinx, “Virtex-7 FPGA Family”, [Online]: http://www.xilinx.com/products/silicon-devices/fpga/virtex-7 [Consultado a: 07-09-2013]. [4] Xilinx, “Spartan-3A Starter Kit”, [Online]: http://www.xilinx.com/products/boards-and-kits/HW-SPAR3A-SK-UNI-G.htm [Consultado a: 07-09-2013]. [5] MathWorks, “Matlab 2013b”, [Online]: http://www.mathworks.com/company/newsroom [Consultado a: 03-12-2013]. [6] MathWorks, “Matlab 2010b”, [Online]: http://www.mathworks.com [Consultado a: 07-09-2013]. [7] MathWorks, “Matlab Getting Start Guide R2011b”, 2011. [8] MathWorks, “Simulink Getting Start Guide R2013b”, 2013. [9] Xilinx, “System Generator for DSP User Guide”, 2012. [10] U. Chakraborty, T. Tewary, R. P. Chatterjee, “Exploiting the Loss-Frequency Relationship using RF Communication in Underwater Communication Networks” no. 3, pp. 1–4, 2009. [11] A. Gkikopouli, G. Nikolakopoulos, S. Manesis, “A survey on Underwater Wireless Sensor Networks and applications” in 2012 20th Mediterranean Conference on Control & Automation (MED), pp. 1147–1154, 2012.
  80. 80. Controlador de ganho automático baseado numa plataforma FPGA – Bibliografia Paulo Lima 68 [12] M. J. Brawner, S. Kurak, “Submarine Communications Modernization - Technology Insertions for Interoperability and Supportability in the 2015 Timeframe” in MILCOM 2005, 2005 IEEE Military Communications Conference, pp. 1–7. [13] “The study of remotely teleoperated robotic manipulator system for underwater construction” in Proceedings of the 2004 International Symposium on Underwater Technology (IEEE Cat. No.04EX869), pp. 269–276. [14] O. Hegrenas, E. Berglund, O. Hallingstad, “Model-aided inertial navigation for underwater vehicles” in 2008 IEEE International Conference on Robotics and Automation, pp. 1069–1076, 2008. [15] K. J. Edwards, A. T. Fisher, C. G. Wheat, “The deep subsurface biosphere in igneous ocean crust: frontier habitats for microbiological exploration” Frontiers in microbiology, vol. 3, p. 8, Jan. 2012. [16] C. R. German, E. Ramirez-Llodra, M. C. Baker, P. A. Tyler, “Deep-water chemosynthetic ecosystem research during the census of marine life decade and beyond: a proposed deep-ocean road map” PloS one, vol. 6, no. 8, p. e23259, Jan. 2011. [17] X. Zhao, Z. Bao, Z. Liu, H. Zhau, Q. Chai, “An in-depth analysis of reservoir architecture of underwater distributary channel sand bodies in a river dominated delta: A case study of T51 Block, Fuyu Oilfield, Jilin” Petroleum Exploration and Development, vol. 40, no. 2, pp. 194–201, Apr. 2013. [18] C. L. Antrim, “What Was Old Is New Again: Economic Potential Of Deep Ocean Minerals The Second Time Around” in Proceedings of OCEANS 2005 MTS/IEEE, pp. 1–8. [19] W. H. Smith, “Global Sea Floor Topography from Satellite Altimetry and Ship Depth Soundings” Science, vol. 277, no. 5334, pp. 1956–1962, Sep. 1997. [20] T. Lay, H. Kanamori, C. J. Ammon, M. Nettles, S. N. Ward, R. C. Aster, S. L. Beck, S. L. Bilek, M. R. Brudzinski, R. Butler, H. R. DeShon, G. Ekström, K. Satake, S. Sipkin, “The great Sumatra-Andaman earthquake of 26 December 2004” Science, vol. 308, no. 5725, pp. 1127–33, May 2005. [21] T. A. Stojanovic, C. J. Q. Farmer, “The development of world oceans & coasts and concepts of sustainability” Marine Policy, vol. 42, pp. 157–165, Nov. 2013.
  81. 81. Controlador de ganho automático baseado numa plataforma FPGA – Bibliografia Paulo Lima 69 [22] C. Izaguirre, M. Menéndez, P. Camus, F. J. Méndez, R. Mínguez, I. J. Losada, “Exploring the interannual variability of extreme wave climate in the Northeast Atlantic Ocean” Ocean Modelling, vol. 59–60, pp. 31–40, Dec. 2012. [23] D. J. Wei, L. H. Zhang, H. W. Zhang, F. Liu, “Finite Element Analysis of the Strength of Ladder Type Structure of the Deep-Water AUV” Advanced Materials Research, vol. 690– 693, pp. 1903–1908, May 2013. [24] A. Birk, M. Pfingsthorn, H. Bulow, “Advances in underwater mapping and their application potential for Safety, Security, and Rescue Robotics (SSRR)” in 2012 IEEE International Symposium on Safety Security and Rescue Robotics (SSRR), pp. 1–3, 2012. [25] F. Audo, S. Perhirin, V. Quintard, M. Guegan, A. Perennou, Y. Auffret, “Raman amplification in an optically high-powered data link dedicated to a 10 km long extension for submarine cabled observatories” in Journal of Optics, vol. 15, no. 5, p. 055703, May 2013. [26] R. H. Rahman, C. R. Benson, M. R. Frater, “Routing challenges and solutions for underwater networks” in 2012 Military Communications and Information Systems Conference (MilCIS), pp. 1–7, 2012. [27] C. Cao, M. Zukerman, W. Wu, J. H. Manton, B. Moran, “Survivable Topology Design of Submarine Networks” Journal of Lightwave Technology, vol. 31, no. 5, pp. 715–730, Mar. 2013. [28] J. Partan, J. Kurose, B. N. Levine, “A survey of practical issues in underwater networks” ACM SIGMOBILE Mobile Computing and Communications Review, vol. 11, no. 4, p. 23, Oct. 2007. [29] Professor Gustavo Weber Denardin, “Apostila de Microcontroladores”. [30] Kenton Williston, “Microprocessors vs. DSPs: Fundamentals and Distinctions” in Berkley Design Technology, 2005. [31] Oyvind Harboe, “FPGA introduction” in ZYLIN Consulting website, 2008. [32] Analog Devices, “Datasheet do AD9244”, 2005. [33] Texas Instruments, “Datasheet do LM7171”, 1999. [34] National Instruments, “Multisim”,
  82. 82. Controlador de ganho automático baseado numa plataforma FPGA – Bibliografia Paulo Lima 70 [Online]: http://www.ni.com/multisim/pt [Consultado a: 03-12-2013]. [35] Texas Instruments, “Datasheet do LM7805”, 2004. [36] Fairchild Semiconductor, “Datasheet do LM7905”, 2013. [37] ST Microelectronics, “Datasheet do LD1117V33”, 2005. [38] Texas Instruments, “Datasheet do DAC904”, 2002. [39] National Semiconductor, “Datasheet do LM6172”, 1999. [40] Peter J. Ashenden, “The VHDL Cookbook First Edition”, Dept. Computer Science University of Adelaide South Australia, 1990. [41] Alex Vidigal Bastos, “Verilog”.

×