Você está na página 1de 17

Relatório de Sistemas de Aquisição de Dados

2006/2007

Engenharia Física Tecnológica

CIRCUITO DE AMOSTRAGEM E RETENÇÃO

Lisboa, 18 de Abril de 2007

Laboratório I

Trabalho realizado por:

Alexandra Gouveia, nº53760 João Mendes Lopes, nº53788 André Cunha, nº53757

Grupo 3; 4ªfeira 15:00-19:00h

Introdução

Um conversor analógico digital é constituído por um circuito de amostragem, que faz a amostragem do sinal, um circuito quantificador, que faz a aproximação do valor de tensão amostrado a um dos 2 n níveis possíveis por arredondamento e truncagem, um elemento que executa a codificação do valor amostrado e um interface final.

A amostragem faz-se utilizando circuitos de amostragem e retenção ou sample and hold,

utilizados para reter o valor analógico de um sinal enquanto o circuito quantificador executa as operações de aproximação ao valor retido, já que a mudança da voltagem de input do quantificador durante o processo de conversão analógica/digital, conduziria a erros

na determinação de um valor aproximado do sinal amostrado.

Um circuito deste género é constituído essencialmente por um seguidor que recebe o sinal analógico, um condensador que armazena a voltagem do sinal, um switch electrónico entre ambos os dispositivos, usado para ligar e desligar alternadamente o condensador do input analógico e um seguidor final cuja saída é ligada ao quantificador ou conversor A/D. Os seguidores não interferem com o funcionamento do circuito, servindo apenas para o isolar dos restantes troços do ADC graças à sua elevada impedância de entrada e reduzida impedância de saída. A taxa a que o switch é operado é a taxa de amostragem do sistema. Assim, quando o switch está ligado, o circuito encontra-se no estado sample ou seja, a saída do circuito é igual à entrada; quando o switch está desligado, o circuito encontra-se no estado hold ou seja, a saída do circuito é igual a uma constante, correspondente ao valor amostrado no instante de tempo em que o estado hold foi accionado. O switch é controlado por um sinal de relógio escolhido em função da taxa de amostragem desejada.

de relógio escolhido em função da taxa de amostragem desejada. Figura 1 – Esquema de um

Figura 1 – Esquema de um circuito sample and hold

Introdução

Introdução Figura 2 – Esquema de funcionamento de um circuito sample and hold Como qualquer circuito,

Figura 2 – Esquema de funcionamento de um circuito sample and hold

Como qualquer circuito, um dispositivo de amostragem e retenção tem um desempenho e características temporais não ideais, o que faz com que o sinal de saída não corresponda exactamente ao exemplificado na figura 2. São de salientar o overshoot, slew rate e tempo de abertura, causados pelos elementos amplificadores do T/H. Os dois primeiros são esquematizados na figura 3; o tempo de abertura é o tempo necessário para desligar o condensador do sinal que memoriza e depende de vários factores entre eles o ruído e o sinal de entrada, o que tem como consequência uma incerteza neste tempo e origina erros de amostragem. Todos estes factores limitam a resolução de conversão. Outra característica não ideal do circuito é o decaimento do sinal no estado hold , causado por correntes de perdas dos componentes ligados ao condensador que fazem com que este descarregue. A taxa desta descarga é a taxa de decaimento do circuito e provoca erros para períodos longos de duração do estado hold , podendo ser calculada através do declive da recta de decaimento.

ser calculada através do declive da recta de decaimento. Figura 3 – Não idealidades do sinal

Figura 3 – Não idealidades do sinal amostrado por um circuito sample and hold

O objectivo deste trabalho é a implementação de um circuito de amostragem e retenção comandado por um sinal periódico e a verificação do seu funcionamento, com particular incidência na análise da recta de decaimento do sinal amostrado e no ruído existente no estado hold. O sinal periódico é programado em VHDL. O trabalho foi executado em três sessões de laboratório.

Projecto e implementação do sinal periódico

1ª sessão de laboratório

Material utilizado:

Ambiente de programação XILINX ISE “MPLAB” e compilador “VHDL”.

A primeira sessão de laboratório consistiu fundamentalmente na exposição dos objectivos do trabalho e na familiarização com o programa utilizado para a programação em VHDL, com fim à posterior programação de um sinal de relógio. Para tal, foi seguido um tutorial de iniciação à programação em VHDL, Programmable Logic Design - Quick Start Handbook, segundo o qual foi criado um projecto VHDL em ambiente de programação XILINX ISE “MPLAB” para o projecto de um contador. Foram definidas as entradas clock e reset como sinais do tipo in para a simulação do circuito em questão e o sinal count, um vector de de 4 bits do tipo inout, com MSB 3 e LSB 0. Assim, foi gerado automaticamente o projecto Contador com os portos referidos acima. Posteriormente foi adicionado ao código do projecto um código pré-feito e disponível no programa, cujos passos de acesso são explícitos no tutorial referido e cuja função é implementar um contador síncrono com o relógio. Posteriormente foi adicionado ao código um comando de reset do contador. O código, incluindo a importação das bibliotecas e a definição dos portos do contador, feitas na altura da criação do projecto, era o seguinte:

library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity contador is Port ( clock : in

reset : in STD_LOGIC; count : inout STD_LOGIC_VECTOR (3 downto 0)); end contador;

STD_LOGIC;

architecture Behavioral of contador is begin

process (clock, reset)

begin

if reset='1' then count <= "0000"; elsif clock='1' and clock'event then count <= count + 1; end if;

end process;

end Behavioral;

Projecto e implementação do sinal periódico

A função deste código é incrementar o sinal count quando o relógio é igual a 1 e existe um evento no relógio, neste caso uma transição de flanco positivo. O reset é assíncrono e é avaliado antes do relógio.

Depois de implementado o contador, procedeu-se ao seu teste, através da configuração do testbench ou ficheiro de teste, primeiro estruturando o clock num sinal quadrado de período 540ns e depois estruturando o sinal de reset para estar a 1 no primeiro flanco ascendente de relógio e a 0 no segundo, de forma a activar o reset e inicializar o contador a 0000. Posteriormente correu-se o teste em questão, verificando-se o bom funcionamento do circuito. Por se tratar de uma fase muito incipiente deste projecto, este teste não é aqui apresentado.

2ª sessão de laboratório

Material utilizado:

Ambiente de programação XILINX ISE “MPLAB” e compilador “VHDL”;

Kit SPARTAN 3.

Uma vez compreendido o funcionamento básico do ambiente de desenvolvimento de código VHDL e implementado um contador básico, pretendia-se alterar o código do contador implementado na aula anterior, de forma a conseguir obter um sinal de 1 bit, quadrado e de frequência de cerca de 1000Hz, aproveitando o relógio de 50MHz da placa SPARTAN 3. O objectivo deste procedimento era criar um sinal mais lento, que pudesse servir de controlo do switch no circuito de amostragem e retenção a ser implementado neste projecto.

Primeiro, mudou-se a dimensão do vector count para 25 bits de forma a que este pudesse contar até 50E6. Posteriormente decidiu-se mudar o circuito de forma ter uma linha de saída com frequência de cerca de 1000Hz que se pretendia que fosse o sinal a controlar o switch. Para tal foi declarado um novo porto do tipo out com o nome saida. Esta variável foi inicializada a 1 no bloco de código correspondente à própria inicialização do contador, ou seja quando o reset está a 1, já que se pretende que o sinal de saída esteja ligado quando o circuito começa a funcionar. Posteriormente, foi adicionado código à secção que se segue ou seja, quando o reset está a 0, a seguir à definição do contador. Neste código adicionado, apenas se pede que o sinal de saída venha a 0 quando o contador chegar a 25000 e volte a 1 quando o contador chegar a 50000 e nesse instante reinicialize o contador. Como o sinal de clock é de 50MHz, ou seja, tem um período de 20ns, e como o contador é síncrono com o relógio, quando o contador tiver contado até 25000 terão passado 0.5 s e a saída fica a 0 e quando o contador tiver contado até 50000 terão passado 1 s e a saída fica a 1. Como o contador reinicializa, o processo é repetido o que conduz à geração de uma onda quadrada de frequência 1kHz que era o que se pretendia.

Projecto e implementação do sinal periódico

O código descrito é o seguinte:

--declaração das bibliotecas utilizadas; library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;

--Declaração dos portos do programa; entity contador is

Port ( clock : in

STD_LOGIC;

reset : in STD_LOGIC; saida : out STD_LOGIC; count : inout STD_LOGIC_VECTOR (24 downto 0)); end contador;

--definição do comportamento do programa architecture Behavioral of contador is begin

process (clock, reset) begin

contador deve ser

inicializado a 0 e a saida a 1 if reset='1' then count <= (others =>'0'); saida <='1'; --se o reset estiver a 0 elsif clock='1' and clock'event then --definição do contador count <= count + 1; --se o contador chegar a 25000 a saída vem a 0 if count= 25000 then saida <='0'; end if;

--se o contador chegar a 50000 a saída vem a 1 e o contador é reinicializado a 0 if count= 50000 then saida <='1'; count <= (others =>'0'); end if; end if; end process; end Behavioral;

--se

o

reset

estiver

a

1,

o

Projecto e implementação do sinal periódico

Para poder testar o bom funcionamento do circuito, foi criado um ficheiro de teste VHDL testbench. Para configurar o ficheiro de teste criou-se o referido relógio de período 20ns e configurou-se o reset para estar a 1 aos 50ns e voltar a 0 ao 70ns de forma a poder desencadear o funcionamento do código projectado anteriormente. O teste em questão foi corrido e verificou-se o bom funcionamento do circuito simulado. No entanto, como o resultado da simulação é apresentado em ns, embora se possa definir a extensão temporal da mesma, era impossível apresentar neste relatório uma imagem da referida simulação, cuja extensão era enorme. Assim, e para efeito exclusivo da apresentação de um teste ao código no relatório, alterou-se o código para que a variável saída ficasse a 0 aos 10ns e a 1 aos 20 ns. O código do ficheiro de teste é apresentado em seguida, bem como o resultado da simulação nestas condições.

LIBRARY ieee; USE ieee.std_logic_1164.ALL; USE ieee.std_logic_unsigned.all; USE ieee.numeric_std.ALL;

ENTITY Testesaida3_vhd IS END Testesaida3_vhd;

ARCHITECTURE behavior OF Testesaida3_vhd IS

-- Component Declaration for the Unit Under Test (UUT) COMPONENT contador PORT(

clock : IN std_logic; reset : IN std_logic; saida : INOUT std_logic; count : INOUT std_logic_vector(24 downto 0) ); END COMPONENT;

--Inputs SIGNAL clock :

SIGNAL reset :

std_logic := '0'; std_logic := '0';

--BiDirs SIGNAL saida : std_logic; SIGNAL count : std_logic_vector(24 downto 0);

Projecto e implementação do sinal periódico

BEGIN

-- Instantiate the Unit Under Test (UUT) uut: contador PORT MAP( clock => clock, reset => reset, saida => saida, count => count

); clock <= not clock after 10 ns; tb : PROCESS BEGIN

-- Wait 50 ns for global reset to finish wait for 50 ns; reset <='0'; wait for 50 ns; -- Place stimulus here reset <='1'; wait for 20 ns; reset <='0';

wait; -- will wait forever END PROCESS;

END;

wait ; -- will wait forever END PROCESS ; END ; Figura 4 – Simulação de

Figura 4 – Simulação de 1000ns do circuito implementado (foi omitida a variável count)

do circuito implementado (foi omitida a variável count ) Figura 5 – Simulação de 1000ns do

Figura 5 – Simulação de 1000ns do funcionamento da variável count

Projecto e implementação do sinal periódico

Pode-se verificar o bom funcionamento de todas as variáveis em questão. Chama-se a atenção para o facto do primeiro período da variável saída ser mais longo em 20ns que os seguintes, devido ao facto de ser ligado quando o reset está a 1 e não a 0, o que não constitui um problema. Omitiram-se os bits superiores a 4 do contador, uma vez que estes estão sempre a zero, já que neste caso, como se diminuiu o período do sinal saída para poder apresentar um teste no relatório, o contador não chega a incrementar o suficiente para que estes bits fiquem a 1. Foi ainda implementado um código ligeiramente diferente do descrito acima, que foi testado nas mesmas condições e funciona igualmente bem, embora não tenha sido utilizado nas fases posteriores deste projecto. Este código apenas difere do anterior no facto de ter um contador adicional mais lento, cujos incrementos são feitos em cada s. O código descrito é o seguinte:

library IEEE; use IEEE.STD_LOGIC_1164.ALL; use IEEE.STD_LOGIC_ARITH.ALL; use IEEE.STD_LOGIC_UNSIGNED.ALL;

entity contador is Port ( clock : in

reset : in STD_LOGIC; saida : inout STD_LOGIC; useg_en : inout STD_LOGIC; count : inout STD_LOGIC_VECTOR (24 downto 0)); end contador;

STD_LOGIC;

architecture Behavioral of contador is

signal cntmhz : STD_LOGIC_VECTOR (6 downto 0);

begin

process (clock, reset) begin

--se o reset estiver a 1, tanto o contador de mhz como o contador de microsegundos são inicializados if reset='1' then cntmhz <= (others =>'0'); useg_en <='0'; --se o reset estiver a 0, o clock passa a dominar o comportamento do circuito elsif clock='1' and clock'event then --em cada iteração do clock, o contador de mhz

incrementa

cntmhz <= cntmhz + 1; --quando o nosso contador de mhz chega a 50,

passa 1 microsegundo

if cntmhz= 50 then cntmhz <= (others =>'0'); useg_en <='1'; --usamos agora, por questões de naturalidade, um contador de microsegundos count <= count + 1;

Projecto e implementação do sinal periódico

--quando contamos 500 microsegundos, o nosso sinal sai a 1 if count= 500 then saida <= '1'; end if; --quando contamos 1000 microsegundos, o nosso o sinal vai a 0 e obtemos desta forma um sinal quadrangular de período igual a 1000 microsegundos o que equivale a 1kHz if count= 1000 then saida <= '0'; count <= (others =>'0'); end if;

else

useg_en <='0'; end if; end if; end process;

end Behavioral;

Uma vez verificado o bom funcionamento do código implementado, pretendiam-se ligar as variáveis count(23) e count(24) do contador simulado à placa SPARTAN 3, bem como a variável clock e reset, de forma a poder ver os LED’s da placa a piscar à frequência das duas saídas de maior período do contador, como uma iniciação à utilização da placa. Assim, a placa foi ligada ao computador e alimentada e foi adicionada uma nova fonte ao projecto contador do tipo Implementation Constraints File onde se pudessem definir os pontos da placa (LED’s, botão de reset e função de relógio) a ligar às variáveis definidas no código. O que a placa SPARTAN 3 faz é receber o código numa memória flash incorporada na placa e implementar este mesmo código, traduzindo-o em sinais reais, que podem depois ser utilizados num circuito real. Assim, o ficheiro adicionado ao projecto foi editado por consulta do manual da placa da seguinte maneira:

NET "clock" LOC = "T9"; NET "reset" LOC = "L14"; NET "count<24>" LOC ="P11"; NET "count<23>" LOC ="P12";

Posteriormente, através do comando Implement Design e Generate Programming File, o código foi traduzido e implementado na placa através da programação da memória flash referida. Carregando no botão de reset da placa foi possível ver os LED’s da placa a piscar à frequência esperada.

Implementação e teste do circuito de amostragem e retenção

3ª sessão de laboratório

Material utilizado:

Ambiente de programação XILINX ISE “MPLAB” e compilador “VHDL”;

Kit SPARTAN 3;

Multímetro;

Osciloscópio;

Ligações unifilares;

Breadboard;

Fonte de alimentação DC e gerador de sinais;

OpAmp com entrada do tipo FET LF353;

Switch 74HCT4066;

1 resistência de 47k ;

1 condensador de 1 F.

Uma vez implementado o circuito de relógio procedeu-se à montagem do circuito de amostragem e retenção na breadboard de acordo com o esquema que constava no enunciado:

de acordo com o esquema que constava no enunciado: Figura 6 – Esquema de montagem do

Figura 6 – Esquema de montagem do circuito de amostragem e retenção

Como não foi encontrada no laboratório uma resistência de 100k substituiu-se a mesma por uma de 47k , cujo valor foi confirmado com um multímetro, sem prejuízo do funcionamento do circuito. Uma vez que o esquema de montagem do circuito já indicava a numeração dos pinos dos integrados entre os quais se deviam estabelecer as ligações, apenas se consultaram as datasheet’s dos mesmos para verificar o nível de voltagem da sua alimentação.

Implementação e teste do circuito de amostragem e retenção

Depois de ter o circuito montado e verificado, procedeu-se à ligação da entrada 5 do integrado OpAmp LF353 ao gerador de sinais da base de experimentação, que funciona como o sinal que se pretende amostrar, escolhendo o modo sinusoidal. Editou-se de seguida, novamente, o Implementation Constraints File, acrescentando a linha

NET "saida" LOC ="C5";

que permitiu ligar o sinal de relógio projectado na sessão de laboratório anterior à entrada 13 do integrado Switch 74HCT4066 que corresponde a uma das entradas de controlo deste integrado. A massa do circuito foi ligada à massa da placa. Antes de verificar o funcionamento do circuito, ligou-se o Canal 1 do osciloscópio à saída do gerador de sinais. Verificou-se que o sinal sinusoidal a amostrar tinha uma frequência de cerca de 335Hz e uma amplitude de 1.6V pico a pico. Posteriormente, traduziu-se e implementou-se novamente o código na placa. Finalmente, ligou-se o Canal 1 do osciloscópio à saída C5 da placa, correspondente ao sinal de relógio de controlo do circuito, cuja frequência corresponde à frequência de amostragem (1kHz) e o Canal 2 do osciloscópio à saída do circuito de amostragem e retenção, correspondente ao pino 1 do integrado OpAmp LF353.

Foram feitas duas aquisições do sinal de controlo do circuito e da saída do mesmo com uma escala temporal de 500 s e de 250 s respectivamente.

escala temporal de 500 s e de 250 s respectivamente. Figura 7 – Aquisição do sinal

Figura 7 – Aquisição do sinal de controlo e do sinal de saída do circuito S&H (sinal de controlo simétrico) a 500 s

Implementação e teste do circuito de amostragem e retenção

e teste do circuito de amostragem e retenção Figura 8 – Aquisição do sinal de controlo

Figura 8 – Aquisição do sinal de controlo e do sinal de saída do circuito S&H (sinal de controlo simétrico) a 250 s

O objectivo deste procedimento foi a visualização do comportamento do sinal de saída do circuito de uma forma global e do comportamento particular da recta de decaimento para posterior análise do declive da mesma, que, como foi dito na introdução deste trabalho é um parâmetro de funcionamento do circuito implementado e a sua determinação um dos objectivos deste trabalho. Foram feitas ainda duas aquisições. Primeiro mudou-se o código do controlador do switch para que tivesse um comportamento assimétrico, ou seja, o relógio está a 1 durante 0.001s e a 0 1/5 deste tempo ou seja 0.0002s. O código foi novamente implementado na placa e feita uma aquisição nestas condições:

na placa e feita uma aquisição nestas condições: Figura 9 – Aquisição do sinal de controlo

Figura 9 – Aquisição do sinal de controlo e do sinal de saída do circuito S&H (sinal de controlo assimétrico, a 1 durante 0.001s e a 0 durante 1/5 deste tempo)

Implementação e teste do circuito de amostragem e retenção

De seguida mudou-se novamente o código do controlador do switch para que tivesse um comportamento assimétrico, mas deste vez contrário ao comportamento anterior ou seja, o relógio está a 0 durante 0.001s e a 1 1/5 deste tempo ou seja 0.0002s. O código foi novamente implementado na placa e feita uma aquisição nestas condições:

na placa e feita uma aquisição nestas condições: Figura 10 – Aquisição do sinal de controlo

Figura 10 – Aquisição do sinal de controlo e do sinal de saída do circuito S&H (sinal de controlo assimétrico, a 0 durante 0.001s e a 1 durante 1/5 deste tempo)

Uma vez feitas as aquisições necessárias à confirmação do bom funcionamento do circuito deu-se esta sessão de laboratório por terminada. Segue-se a análise dos sinais obtidos, nomeadamente da recta de decaimento do estado hold em cada uma das aquisições e do ruído presente no mesmo estado.

Análise dos resultados

Da observação dos resultados, o primeiro aspecto a salientar é o comportamento diferente do sinal de saída para valores de tensão positiva e negativa. Fazendo uma análise qualitativa, observa-se que, enquanto para valores positivos, o sinal permanece num valor constante quando o clock está a 0 (ou seja, no estado hold), para valores negativos, o sinal mantém um comportamento aproximado do comportamento sinusoidal da tensão de entrada (embora não exactamente igual). Tal facto deve-se à lógica TTL inerente ao switch do circuito. Circuitos com uma lógica deste género apenas estão preparados para tensões de entrada entre 0 e 5V. Como tal, para valores negativos da tensão de entrada, o switch não “bloqueia” totalmente a passagem de corrente ou seja, não consegue manter o estado hold. Este apenas funciona devidamente para valores entre 0 e 5V, que é o caso dos valores positivos do sinal de entrada do circuito. Assim, a aquisição representada na Figura 8 não é válida para a análise do bom funcionamento do circuito, visto que praticamente só capturou valores de tensão negativos, tendo o comportamento errático observado. Para contornar o problema, sugerem-se dois procedimentos (que, obviamente, dependem dos objectivos pretendidos pelo utilizador e não serão práticos para a maior parte das situações, aplicando-se apenas a situações muito específicas): a utilização de um díodo rectificador de sinal ou uma diminuição da frequência do clock de forma a que o estado hold apenas encontre valores de tensão positiva no sinal de entrada.

Observando o comportamento dos valores positivos do sinal de saída em todas as aquisições, concluímos que o sinal, em primeira análise, se comporta como esperado, efectuando o hold com o clock a 0 e “seguindo” o valor de tensão de entrada para valores de clock a 1. Observa-se que após os estados hold, o sinal possui um declive de módulo muito elevado de forma a poder retomar rapidamente os valores de tensão de entrada, se o seu valor no final deste período se encontrar muito afastado do valor da tensão de entrada. De forma a analisar se existe decaimento do sinal e ruído durante o estado hold, foram efectuadas regressões lineares relativas às rectas proporcionadas por estes estados.

relativas às rectas proporcionadas por estes estados. Figura 11 – Regressão linear referente ao 1º estado

Figura 11 – Regressão linear referente ao 1º estado hold da figura 7

Análise dos resultados

Obteve-se a seguinte regressão: V(t) = B*t + A , com B = -9.7 ± 4.2 (V/s) e A = 0.73 ±0.09 (V). Como seria de esperar, o declive da recta é negativo, o que mostra que existe decaimento do sinal durante o estado hold, devido à não idealidade do circuito. Contudo, tendo em conta que o erro do declive é de 43% e para os valores que o sinal atinge, considerar que o valor se mantém constante para o intervalo de tempo considerado é uma

aproximação válida. Se o intervalo de tempo fosse maior, era necessário ter mais atenção ao decaimento do sinal. Do erro de A retira-se o ruído inerente ao sinal ou seja o afastamento médio dos pontos à recta, que neste caso é de 12%. Este valor não é muito elevado, já que o ruído não impede a visualização clara do comportamento do sinal em estudo. De forma a se poder efectuar um melhor estudo do decaimento do estado hold, apresenta-

se aqui a regressão linear efectuada para um tempo de hold prolongado (Figura 9).

efectuada para um tempo de hold prolongado ( Figura 9 ). Figura 12 – regressão linear

Figura 12 – regressão linear referente ao 1º estado hold da figura 9

Os valores obtidos a partir da regressão foram V(t) = B*t + A, com B = -4.2 ± 1.9 (V/s) e

A = 0.6 ± 0.005 (V). Mais uma vez, o declive obtido é negativo, mas com um erro muito

elevado, de 45%. As conclusões a tirar são as mesmas de anteriormente, já que se verifica o decaimento, mas devido ao elevado erro, considerar o valor de tensão constante durante o estado hold permanece uma aproximação válida, mesmo com o aumento de tempo para este

estado.

Foi feita a análise de todas as rectas do estado hold obtidas nas diversas aquisições. Contudo, como os resultados e as conclusões obtidas são em tudo semelhantes às já relatadas até agora, optou-se por não apresentar esses resultados, para evitar fornecer informação repetitiva e desnecessária, de forma a não extender em demasia o relatório. Todas as regressões efectuadas devolveram declives negativos com taxas de erro a rondarem os 50%, pelo que a aproximação a valor constante é considerada válida para todas elas, validando o bom funcionamento do circuito. Verificou-se também em todas as aquisições a reduzida presença de ruído, de percentagem variável em relação ao sinal mas nunca excedendo os 12% e cuja existência nunca impediu a compreensão clara da natureza do sinal.

Conclusões

Com este trabalho foi possível compreender o funcionamento do circuito sample and hold, bem como as não idealidades a ele inerentes. Também foi possível a familiarização com a linguagem VHDL que será útil em futuros trabalhos, bem como com o funcionamento da placa SPARTAN 3. A análise dos dados recolhidos conduziu aos resultados esperados, nomeadamente ao facto de se verificar que o circuito implementado possui imperfeições, mais especificamente correntes de fuga dos componentes ligados ao condensador, o que conduz ao aparecimento de uma recta de decaimento no estado hold, mas cujo impacto no funcionamento do circuito é de pouca importância. O mesmo se pode concluir, no que toca à presença de ruído no mesmo estado. De uma forma geral, pode-se concluir que foram cumpridos os objectivos deste trabalho e apreendidas os novos conhecimentos a ele associados.

Bibliografia

http://paginas.fe.up.pt/~jms/E3/conversoresAD.pdf;

http://en.wikipedia.org/wiki/Sample_and_hold;

Programmable Logic Design - Quick Start Handbook;

Manual do kit SPARTAN 3;

datasheet do integrado 74HCT4066;

datasheet do integrado LF353.