Escolar Documentos
Profissional Documentos
Cultura Documentos
2006/2007
Introduo
O objectivo primordial deste trabalho consiste na aquisio de uma srie de amostras
peridicas de um sinal varivel, atravs do circuito ADC de interface srie sncrona. Para
tal, pretende-se utilizar o protocolo SPI para a comunicao de uma FPGA SPARTAN 3
com um dispositivo ADC, desenvolvido no trabalho de laboratrio anterior, mas adaptado
para adquirir amostras individuais peridicas de um sinal analgico varivel sinusoidal,
armazenando diversos valores durante um determinado tempo e permitindo a visualizao
dos diversos valores no mostrador LCD/LED, atravs dos switches da placa. Os sinais
adquiridos devem ser comparados com o sinal analgico e ainda efectuadas as
transformadas FFT dos mesmos.
Para aquisio dos valores atravs do ADC, necessrio um protocolo de comunicao
entre o dispositivo de converso analgica digital, e o circuito que rege o seu
funcionamento. semelhana do laboratrio anterior, o ADC usado (MCP3202) rege-se
pelo protocolo SPI. O trabalho que se pretende desenvolver no laboratrio III , na
verdade, um seguimento lgico do que foi desenvolvido anteriormente, pois a diferena
entre os dois trabalhos consiste na adaptao do projecto para que este possa adquirir
diversos valores de um sinal varivel, ao invs de um nico de sinal constante e os possa
guardar numa memria, acedida posteriormente atravs da manipulao de switches na placa.
Como tal, e como o funcionamento do protocolo SPI e do ADC MCP3202 j foram
explicados no relatrio anterior (ver bibliografia), no haver um alongamento sobre esta
matria, de modo a evitar repetio de informao e redundncia. Pretende-se focar as
diferenas entre os dois projectos e destacar a forma como o primeiro projecto foi alterado
para a criao deste.
1 sesso de laboratrio
Material utilizado:
Ambiente de programao XILINX ISE MPLAB e compilador VHDL.
A primeira sesso de laboratrio consistiu na alterao do trabalho de laboratrio n 2, de
acordo com os requisitos indicados anteriormente. Para tal, criou-se um novo sinal externo,
um vector de cinco elementos do tipo entrada chamado switch, para que as alteraes feitas
nos switches da placa pudessem ser reconhecidas no interior do programa. Apesar de
existirem oito switches na placa SPARTAN 3, para ler nestes dispositivos um valor at 32
bastava utilizar os primeiros cinco e da a dimenso do vector. Para o programa, e de
acordo com o funcionamento da placa descrito no manual da mesma, um switch ligado vale
1 e um switch desligado vale 0. Para alm disso, criou-se o sinal interno indice, um natural
que pudesse ser incrementado medida que era feita cada uma das aquisies, no s como
um sinal de controlo para ter um critrio de paragem tal que quando indice atingisse o valor
32 parassem as aquisies, como tambm para servir de ndice para a transferncia de cada
uma das aquisies para posies de memria especficas. Foi ainda criado um sinal interno
vector de doze elementos, cuja funo descrita adiante e uma memria, um array de 32
vectores cada um com doze elementos. Posteriormente o sinal indice foi inicializado a 0 no
reset existente no processo que implementa o protocolo SPI. De seguida tentou-se que o
bloco de cdigo que implementa este protocolo corresse 32 vezes mediante um comando
de if que postula que enquanto o ndice for menor que 32 o bloco de cdigo deve ser
executado. No final de cada execuo do protocolo SPI, no instante onde no 2 trabalho de
laboratrio se voltava a por cs_FPGA a high acrescentaram-se algumas linhas de cdigo,
nomeadamente: a aquisio passada para a posio de memria correspondente ao valor
do ndice, o contador de 50kHz reinicializado, para que na segunda aquisio os passos
dependentes deste contador se voltem a executar, o ndice incrementado, o sinal state
reinicializado a 0 para que a nova aquisio se possa desencadear e a palavra de controlo
reinicializada a 1101, caso contrrio o programa esquece o seu valor. Para alm disto,
cs_FPGA continua a ser posto a high neste instante.
Assim, mediante este raciocnio, esperava-se que o protocolo fosse executado 32 vezes e as
aquisies sucessivas guardadas em posies de memria sucessivas. De seguida, foi
necessrio fazer com que o programa lesse o valor dos switches da placa e consoante o seu
valor mostrasse a aquisio correspondente no display de sete segmentos. Para tal,
acrescentou-se um elsif ao programa, para que quando o ndice valesse 32 fosse executada
esta parte do programa e no se sasse mais deste estado. Nele acrescentou-se o comando
vector<=tmp_ram(conv_integer(switch));
que l o valor dos switches na placa, converte o seu valor para um inteiro e envia a posio
de memria correspondente ao valor dos swiches para o sinal interno vector. Inicialmente,
este comando consistia num case, que para cada valor dos switches enviava o contedo da
posio respectiva de memria para vector, mas o comando indicado acima cumpre o
mesmo objectivo, poupando-se muitas linhas de cdigo.
em que os troos de cada quatro bits definidos para a primeira posio de memria
correspondem a 5, E e b em hexadecimal. Com este procedimento verificou-se o bom
funcionamento do circuito simulado para esta parte do projecto, encontrando-se o
resultado da simulao na Figura 2.
Kit SPARTAN 3;
Multmetro;
Osciloscpio;
Ligaes unifilares;
Breadboard;
"clock50Mhz"
"reset"
"digit<0>"
"digit<1>"
"digit<2>"
"digit<3>"
"seg<0>"
"seg<1>"
"seg<2>"
"seg<3>"
LOC
LOC
LOC
LOC
LOC
LOC
LOC
LOC
LOC
LOC
= "T9";
="L14";
= "D14";
= "G14";
= "F14";
= "E13";
= "N16";
= "F13";
= "R16";
= "P15";
"seg<4>"
"seg<5>"
"seg<6>"
"din_FPGA"
"dout_FPGA"
"cs_FPGA"
"clockSPI"
"switch<0>"
"switch<1>"
"switch<2>"
"switch<3>"
"switch<4>"
LOC
LOC
LOC
LOC
LOC
LOC
LOC
LOC
LOC
LOC
LOC
LOC
=
=
=
=
=
=
=
=
=
=
=
=
"N15";
"G13";
"E14";
"C5";
"C7";
"C9";
"D10";
"F12";
"G12";
"H14";
"H13";
"J14";
Assim, e porque o sinal do gerador de sinais escolhido tinha uma frequncia de 3.8Hz,
escolheu-se fazer uma amostragem de frequncia 5Hz, outra de frequncia 7.6Hz e outra
de frequncia 20Hz, correspondentes ao que era pedido. Para um melhor estudo da
frequncia de aquisio, ainda se fez uma amostragem de 40Hz, um valor muito superior
frequncia postulada pelo critrio de Nyquist. Assim, o programa foi mais uma vez alterado
em conformidade e carregado para a placa em cada um dos casos, tendo-se recolhido os
dados da aquisio provenientes do ADC atravs da sua visualizao nos displays por
manipulao dos switches. O tempo entre aquisies sucessivas foi controlado atravs da
visualizao do sinal cs_FPGA no osciloscpio, verificando-se que estava a ser cumprido
pelo programa
Como seria de esperar, obtm-se uma m reconstruo do sinal para uma frequncia de
aquisio muito inferior postulada pelo critrio de Nyquist. Por outro lado a qualidade da
reconstruo aumenta um pouco para uma frequncia de aquisio que obedece a este
critrio, percebendo-se j o carcter peridico, de uma s frequncia, do sinal. Este carcter
fica mais claro para uma frequncia de 20 Hz, onde a natureza sinusoidal do sinal j mais
perceptvel. Contudo, qualquer uma destas aquisies no permite uma clara percepo do
sinal original adquirido. de salientar que o critrio de Nyquist pode ser aplicado nestas
circunstncias, porque o sinal pode ser completamente reconstrudo com a informao
disponvel recorrendo a mtodos matemticos.
Figura 8 Transformada FFT dos resultados experimentais para faquisio (5Hz) <<2fsinal
Figura 9 Transformada FFT dos resultados experimentais para faquisio (7.6Hz) 2fsinal
Figura 10 Transformada FFT dos resultados experimentais para faquisio (20Hz) >2fsinal
Figura 11 Transformada FFT dos resultados experimentais para faquisio (40Hz) >>2fsinal