3.1 Gruntvannshabitat
3.3.5 Miljøfremmede stoffer i sedimenter
O sistema foi desenvolvido para a interrogação de FBGs sem a necessidade de um computador externo, sendo que o FPGA é empregado para realizar a aquisição e processamento de dados sensoreados. Para isto, o pico calculado, ou a diferença do pico de um par de FBGs, é mostrado nos visores de 7 segmentos presentes na placa de desenvolvimento que acompanha o FPGA. Este método é adequado para interrogações de baixa frequência, na qual permite o seu acompanhamento por um operador em tempo real. Os espectros refletidos também são transmitidos para o computador através da comunicação serial para visualizar o comportamento dinâmico do espectro inteiro refletido pelas FBGs e ao mesmo tempo poder verificar o resultado calculado pelo sistema desenvolvido.
Neste projeto, determinados espectros amostrados são transmitidos por comunicação serial, permitindo seu acesso por computadores. A comunicação entre o FPGA e o computador foi sincronizada por um sinal de comando enviado pelo computador, enquanto o FPGA transmite cada amostra do espectro refletido bit a bit pela linha serial.
3.6 Comunicação Serial 63 serial, baseando-se no esquema visto em (Chu 2008). Detalhadamente, uma fila circular para armazenar um período inteiro da amostragem do espectro refletido, onde os dados são transmiti- dos, amostra por amostra via comunicação serial. Para evitar de enviar um período incompleto do espectro refletido, foi verificado no início de cada rampa se a fila está vazia. Se sim, um novo período inteiro de amostragem serão inserido na fila; se não, nenhuma nova palavra será inserida na fila e as palavras continuam sendo retiradas e enviadas para a linha serial.
Como a velocidade de transmissão de dados é inferior a velocidade de aquisição, alguns espectros não são enviados para o computador. Atualmente a taxa de transmissão (baud rate) foi fixada em 115.200baud.
O desenvolvimento da comunicação serial sincronizada é baseado no UART (do inglês Universal Asynchronous Receiver and Transmitter) tratado na leitura (Chu 2008). Ela é basicamente composta por um sub-sistema de receptor e um sub-sistema de transmissor. O receptor recebe o comando do usuário do computador, ou seja uma solicitação da transmissão do espectro refletido pelo sistema de interrogação optoeletrônico, o qual é realizado pelo transmissor pela linha serial. O comando do computador é enviado bit por bit e o receptor recebe e remonta o dado digitado pelo usuário para interpretar a informação. Por outro lado, o transmissor carrega cada amostra do espectro refletido e a envia pela linha serial bit por bit, realizado em sequência por um registrador de deslocamento (shift register). A linha serial é dado de nível 1 quando está inativa. A transmissão de dados começa com um bit de 0, start bit, em seguida, os 8 bits de dados (data bits) e no último o bit final de 1, stop bit. Um exemplo de transmissão, configurada com 8 data bitse 1 stop bit, é mostrado na Figura 3.19.
d0 d1 d2 d3 d4 d5 d6 d7
idle start bit data bits stop bit
Figura 3.19: Forma de onda da linha serial de transmissão.
O registrador de deslocamento do transmissor envia as amostras do bit menos signi- ficativo para o bit mais significativo. Nenhuma informação de clock é contida na linha serial, por isso tanto o receptor e o transmissor estão de acordo com alguns parâmetros pre-determinados, como o número de bits por segundo (baud rate), número de bits dos data bits e stop bits.
3.6.1 Subsistema Receptor
Como não existe um clock na linha serial, o receptor utiliza a esquema de sobre-amostragem (oversampling) para recuperar a informação transmitida. A taxa de amostragem dela é 16 vezes do baud rate, isso quer dizer que cada bit na linha serial é amostrado por 16 vezes. Aqui o esquema de sobre-amostragem tem o papel de um sinal de clock. Como cada bit é amostrado por 16 vezes, o receptor sempre adquire o bit depois de contar 8 vezes, estimando o meio de cada bit. Como não tem informação do começo do start bit, cada bit pode ser estimado com uma porcentagem de atraso de 1
16. Um gerador de baud rate gera este sinal de sobre-amostragem,
produzindo pulsos 16 vezes maior do que o baud rate do sistema de comunicação.
Um diagrama de bloco conceitual do sistema de receptor é mostrado na Figura 3.20. O circuito de receptor recebe os bits e remonta a informação recebida do computador; o circuito de gerador de baud rate gera pulsos de sobre-amostragem; o circuito de interface indica o estado entre o receptor e o sistema que acessa as informações transmitidas pela comunicação serial.
Receptor
tick rx clk reset s_tick rx rx_done_tick dout clr_flag set_flag flagFlag FF
Baud
rate
Figura 3.20: Diagrama de bloco do sistema de receptor.
Para um baud rate de 115.200 pulsos por segundo, a taxa de amostragem do esquema de sobre-amostragem tem que ser 16 vezes deste valor, ou seja 1.843.200 pulsos por segundo (115200×16). Este circuito tem mesma função como o circuito de geração de frequência do sinal de sintonia, permitindo utilizar a ferramenta de instanciação de componente da linguagem VHDL. Para produzir um sinal de pulso de 1,8432MHz com a placa FPGA de 100MHz, necessita-se de um contador de 54-módulo ( 100×106
1,8432×106).
Para a modificação futura em outras aplicações, duas constantes, D_BIT e SB_TICK, são definidas para indicar respectivamente o número de data _bits e número de pulsos para os stop bits. O gráfico ASM na Figura 3.21 é uma ilustração do processamento das informações da
3.6 Comunicação Serial 65 linha serial, o qual contem três etapas principais: start, data e stop. Esta sequência representa o processo de identificar o start bit, os data bits e o stop bit. O sinal de pulso ,s_tick, é gerado pelo gerador de baud rate para sincronizar a transição de estados. Observa-se que existem 16 pulsos no intervalo de um bit de informação, devido ao esquema de sobre-amostragem. O registrador s conta o número de pulsos para cada bit na linha serial. O FPGA sempre adquire a informação no meio de intervalo de um bit, sendo que existem 16 pulsos no intervalo de cada bit. Por exemplo, no estado de start, ele conta pulsos de 0 até 7 para confirmar o start bit, e logo retorna a ser 0 para capturar os data bits. Como somente passou metade do tempo que o start bit está disponível na linha serial, o registrador s deve contar de 0 até 15 para chegar na metade do tempo do primeiro data bit. O mesmo ocorre para os bits restantes.
O registrador n registra números de data bits recebidos no estado data. Os data bits são deslocados e remontados no registrador b para representar a informação enviada pelo usuário. Um sinal de aviso, rx_done_tick, é um pulso que indica o término do processo de receptor.
Neste projeto, nenhuma informação é transmitida pelo FPGA enquanto não houver uma requisição. Uma requisição acontece quando o FPGA recebe um sinal de 1 byte qualquer, fazendo com que o próximo espectro lido seja transmitido pela linha serial. A verificação e o controle dos sinais são realizados no início de subida de cada rampa para que a comunicação seja sincronizada e o FPGA sempre envie espectro completo para o computador.
3.6.2 Subsistema Transmissor
A organização do sub-sistema transmissor é parecida com o sub-sistema receptor, como visto na Figura 3.22, o qual também é composto por três circuitos.
O circuito de interface é um buffer FIFO circular que pode armazenar um espectro interrogado completo, ou seja, composto por 256 amostras quando a rampa é de 8 bits 5. O
FPGA sempre verifica no início de cada rampa se o buffer circular está vazio. Se sim, um novo período inteiro de amostragem será inserido no buffer, somente as amostras durante a rampa de subida. Como o deslocamento da cavidade de Fabry-Perot em relação a voltagem aplicada é diferente no período de subida e no período de decida, somente as amostras na subida da rampa são adquiridas e analisadas.
O transmissor é semelhante ao receptor, como o gráfico ASM mostra na Figura 3.23.
rx = '0' s ← 0 T F idle start s_tick = '1' s = 7 T T s ← 0 n ← 0 s_tick = '1' T s = 15 T F F s ← s + 1 s ← 0 b ← rx & (b >> 1) data F F s ← s + 1 n = D_BIT - 1 F n ← n + 1 s_tick = '1' T s = SB_TICKS - 1 T rx_done_tick ← '1' F stop F s ← s + 1 T
Figura 3.21: Gráfico ASM da implementação do receptor em VHDL.
Percebe-se que o sistema inicia com o estado idle e passa gradualmente pelas etapas start, data, stope retorna para o estado inicial. O bit rx é configurado em cada etapa a ser enviado para a linha serial. No estado idle, a linha serial está ociosa e mantém o valor 1. Quando o sistema de transmissão recebe o sinal de 0 do tx_start, o sinal de um bit, tx recebe valor de 0 a ser transmitida pela linha, indicando os data bits que serão enviados em seguida, como é visto na Figura 3.19. Um registrador b é deslocado de um bit para direita cada vez ao detectar 16 pulsos do gerador de baud rate e o bit menos significativo é enviado para a linha serial. Um registrador n calcula quantos bits de cada amostra já são transmitidos. Como o receptor, duas constantes, D_BIT e SB_TICK, são utilizadas para indicar respectivamente o número de data _bits e número de pulsos para os stop bits. No estado de stop, tx é configurado por 1 também.
3.7 Melhoramento do Sistema 67