Você está na página 1de 14

Técnicas Avançadas de Aquisição de Dados com a linha Placas de Aqu

Avançadas de Aquisição de Dados com a linha Placas de Aqu http://zone.ni.com/devzone/cda/tut/p/id/6576 Improve your

http://zone.ni.com/devzone/cda/tut/p/id/6576

Improve your ni.com experience. Login or Create a user profile.

your ni.com experience. Login or Create a user profile. Document Type : Tutorial NI Supported :
your ni.com experience. Login or Create a user profile. Document Type : Tutorial NI Supported :

Document Type: Tutorial NI Supported: Yes Publish Date: 26/Nov/2009

Técnicas Avançadas de Aquisição de Dados com a linha Placas de Aquisição de Dados Intelligent DAQ

Overview

Intelligent DAQ (Aquisição de Dados Inteligente) é a aquisição de dados multifunção que incorpora processamento embarcado e definido pelo usuário, para uma completa flexibilidade de temporização e trigger (disparo) do sistema. Ao invés de uma tecnologia ASIC para controle da funcionalidade do dispositivo, a linha intelligent DAQ usa um sistema de controle de temporização baseado em FPGA, para tornar todas os recursos de I/O analógicos e digitais configuráveis para cada tipo de aplicação. Este tutorial mostrará como inplementar tarefas de aquisição de dados completamente flexíveis e customizadas usando as placas inteligentes da Série R e o módulo LabVIEW FPGA.

Table of Contents

1. Introdução

2. Temporização e Trigger

3. Sincronismo

4. Geração de Forma de Onda Analógica

5. Operações com Contador/Temporizador

6. Aplicações com I/O Digital

7. Métodos de Transferência de Dados

8. Conclusão

Introdução

Utilizando o módulo LabVIEW FPGA da National Instruments, os desenvolvedores de sistemas de aquisição de dados têm completa flexibilidade ao programar aplicações para qualquer tipo de operação de entrada ou saída de sinais. Sem ter nenhum conhecimento sobre ferramentas de programação de hardware, como VHDL, você pode embarcar código de LabVIEW em um chip FPGA e obter confiabilidade e temporização real em hardware.

Vamos começar relacionando os principais componentes de um hardware de aquisição de dados. Assumindo que você possui conversores analógico-digital (ADCs), conversores digital-analógico (DACs) e linhas de entrada e saída digitais, todas as operações de I/O precisam ser temporizadas e controladas de alguma forma. Os dispositivos de aquisição de dados tipicamente utilizam a tecnologia ASIC para incorporar a maioria das necessidades em suas funcionalidades. Uma placa da série M, por exemplo, usa o DAQ-STC2 para controlar temporização de trigger entre vários componentes de hardware. O hardware Intelligent DAQ, como as placas da Série R, se diferencia dos outros dispositivos de aquisição de dados do mercado pois ao invés da tecnologia fixa ASIC para controlar a funcionalidade dos dispositivos, o hardware inteligente usa um controlador baseado em FPGA para tornar todos os recursos analógicos e digitais configuráveir para cada tipo de operação. O chip reconfigurável FPGA é programado com o módulo LabVIEW FPGA, onde o conceito de fluxo de dados do LabVIEW ainda se aplica, mas com um novo conjunto de funções que operam os recursos de I/O em extremo baixo nível. Ao invés de abstrair tarefas comuns e funções com ferramentas do NI-DAQmx, os nós de I/O do LabVIEW FPGA irão trabalhar no nível mais elementar com completa flexibilidade em todos os canais. Nas próximas seções, vamos examinar exemplos específicos do NI-DAQmx e explorar como customizar diversas tarefas de aquisição de dados usando hardware Intelligent DAQ.

Temporização e Trigger

O uso mais comum de um dispositivo Intelligent DAQ em aquisição de dados avançada se dá na hora de customizar temporização e trigger. Abaixo está um diagrama de blocos exemplificando uma tarefa de entrada analógica com trigger, usando o NI-DAQmx.

Técnicas Avançadas de Aquisição de Dados com a linha Placas de Aqu

http://zone.ni.com/devzone/cda/tut/p/id/6576

Placas de Aqu http://zone.ni.com/devzone/cda/tut/p/id/6576 [+] Enlarge Image Figura 1. Entrada analógica com Trigger

[+] Enlarge Image

Figura 1. Entrada analógica com Trigger no NI-DAQmx

Ao invés de usar diferentes funções para configuração do canal, como mostrado na Figura 1, dispositivos Intelligent DAQ usam funções chamadas “Nós de I/O” para leitura e escrita em todos os canais analógicos e digitais. Vamos ver outro exemplo com as mesmas funcionalidades usando os Nós de I/O do LabVIEW FPGA.

funcionalidades usando os Nós de I/O do LabVIEW FPGA. [+] Enlarge Image Figura 2. Entrada analógica

[+] Enlarge Image

Figura 2. Entrada analógica com Trigger com Intelligent DAQ e LabVIEW FPGA

Você pode notar que não há funções de configuração para canais globais, frequência de amostragem, trigger, ou tarefas de Start, Stop ou Clear. Tudo foi substituído por um simples nó de leitura analógica, e toda a temporização é controlada por estruturas nativas do LabVIEW como Loops While e Cases. Em razão de todo o diagrama de blocos executar em um hardware FPGA, o código em LabVIEW executa com confiabilidade e tempo real em hardware. Vamos ver um pouco mais a fundo como este diagrama de blocos funciona. Ao invés de especificar uma taxa de amostragem em particular, o nó de entrada analógica usa o Loop For para adquirir cada amostra. O ADC correspondente atua digitalizando o sinal de entrada quando este nó é chamado. Se você quer amostrar o sinal a 100kHz, o tempo de atraso apropriado para aquele loop deverá ser 10 µs. A função Loop Timer garante um atraso altamente preciso no tempo, começando com a segunda iteração do Loop, dessa forma usamos uma estrutura de sequências para assegurar que o período do atraso ocorra entre as amostras. A estrutura de Case no LabVIEW FPGA é muito poderosa, pois ela basicamente representa um trigger de hardware para todo o código que está encaplsulado dentro da estrutura. Com todas as funções e estruturas executando em um hardware composto por portas lógicas, a estrutura de Case assegura que as amostras começarão a ser lidas no momento correto, com 10 µs de precisão. Por ultimo, não há necessidade de limpar o ID da tarefa, ou liberá-la da memória já que estamos trabalhando agora ao nível do hardware, com muito poucas camadas de abstração.

Os reais benefícios de se utilizar um Intelligent DAQ baseado em FPGA são a capacidade de personalizar todas as temporizações e trigger, bem como implementar processamento de sinais e tomada de decisão por hardware. Vamos ver agora o que é necessário para modificar nosso trigger de entrada analógica para uma dada aplicação mais personalizada. E se nós quiséssemos disparar a aquisição quando um canal ou outro atingir um certo nível? Isto é bem simples de se implementar no LabVIEW FPGA.

Técnicas Avançadas de Aquisição de Dados com a linha Placas de Aqu

http://zone.ni.com/devzone/cda/tut/p/id/6576

Placas de Aqu http://zone.ni.com/devzone/cda/tut/p/id/6576 [+] Enlarge Image Figura 3. Entrada analógica com trigger

[+] Enlarge Image

Figura 3. Entrada analógica com trigger personalizada com Intelligent DAQ e LabVIEW FPGA

Você pode ver que adicionamos um segundo nó de I/O e uma segunda função de comparação, assim como uma função Booleana OR ao diagrama de blocos. O hardware Intelligent DAQ dedica os ADCs para todos os canais de entrada analógica, assim ambos os canais serão amostrados simultaneamente, e se um deles exceder o limite especificado a estrutura de Case irá executar o case True e começar a aquisição com os mesmos 10 µs de precisão. Veja que não é possível gerar um trigger como este sem um Intelligent DAQ, e com outro hardware DAQ seria necessário a tomada de decisão por software, o que teria uma latência muito grande. Se nós quiséssemos expandir esta monitoração de dois canais para oito canais, ou então adicionar triggers digitais, o código personalizado não seria mais complicado. Adicionar um pré-trigger envolveria amostragem constante no canal de entrada e a passagem de dados por um buffer tipo FIFO. Uma vez que o trigger leu o buffer FIFO e as amostras subseqüentes, os dados são transferidos para o Host através de um canal de DMA.

Se nós quiséssemos amostrar um segundo canal de entrada analógica usando o driver NI-DAQmx, o diagrama de blocos não seria muito diferente daquele mostrado na Figura 1. Existiriam algumas limitações, pois ambos os canais estariam forçadamente referenciados ao mesmo trigger e à mesta taxa de amostragem. Vamos ver as diferentes opções para amostragem de múltiplos canais usando Intelligent DAQ e LabVIEW FPGA.

de múltiplos canais usando Intelligent DAQ e LabVIEW FPGA. [+] Enlarge Image Figura 4. Entradas analógicas

[+] Enlarge Image

Figura 4. Entradas analógicas simultâneas com trigger no Intelligent DAQ

A Figura 4 (acima) nos mostra como amostrar simultaneamente dois canais analógicos diferentes, baseado no trigger analógico vindo do canal 0. Uma vez que todos os dispositivos DAQ inteligentes possuem ADCs independentes, dois canais dentro do mesmo nó de I/O serão amostrados exatamente ao mesmo instante. Os típicos dispositivos DAQ Multifunção multiplexariam todos os canais em um único ADC, fazendo com que todos compartilhem o mesmo clock e linhas de trigger. A Figura 5 (abaixo) mostra que o hardware Intelligent DAQ pode amostrar diferentes canais de entrada analógica em taxas diferentes e independentes. Colocando os nós de I/O em loops independentes, cada canal pode ser amostrado em diferentes taxas, e então transferir os dados também independentemente através de dois canais de DMA.

Técnicas Avançadas de Aquisição de Dados com a linha Placas de Aqu

http://zone.ni.com/devzone/cda/tut/p/id/6576

Placas de Aqu http://zone.ni.com/devzone/cda/tut/p/id/6576 [+] Enlarge Image Figure 5. Entradas analógicas Multi-taxas

[+] Enlarge Image

Figure 5. Entradas analógicas Multi-taxas com Intelligent DAQ

Finalmente, se quiséssemos que ambos os canais tivessem taxas de amostragem independentes, assim como triggers independentes, poderíamos colocar cada nó de I/O em estruturas de loops paralelos como mostrado na Figura 6. Isto ilustra uma total vantagem do paralelismo no FPGA, onde cada tarefa usará seus próprios recursos dedicados e executará de forma completamente independente de qualquer outra tarefa de aquisição.

independente de qualquer outra tarefa de aquisição. [+] Enlarge Image Figura 6. Entradas analógicas Multi-taxas

[+] Enlarge Image

Figura 6. Entradas analógicas Multi-taxas com trigger no Intelligent DAQ

Finalmente, se quiséssemos que ambos os canais tivessem taxas de amostragem independentes, assim como triggers independentes, poderíamos colocar cada nó de I/O em estruturas de loops paralelos como mostrado na Figura 6. Isto ilustra uma total vantagem do paralelismo no FPGA, onde cada tarefa usará seus próprios recursos dedicados e executará de forma completamente independente de qualquer outra tarefa de aquisição.

Sincronismo

Há muitas opções de sincronismo embutidas no driver DAQmx para correlacionar entradas e saídas de uma só vez. Abaixo está o diagrama de blocos de um canal analógico de entrada e outro de saída sincronizados com um trigger digital, feito especificando-se um trigger digital para a entrada analógica e usando-se o sinal de trigger de disparo analógico para sincronizar com a geração do sinal de saída.

Técnicas Avançadas de Aquisição de Dados com a linha Placas de Aqu

http://zone.ni.com/devzone/cda/tut/p/id/6576

Placas de Aqu http://zone.ni.com/devzone/cda/tut/p/id/6576 [+] Enlarge Image Figura 7. Entrada e saída analógica

[+] Enlarge Image

Figura 7. Entrada e saída analógica sicronizadas com NI-DAQmx

Para implementar o mesmo esquema de sincronismo com o hardware Intelligent DAQ, você nem precisa de identificação de tarefas e roteamento de sinais na placa. Aqui está como ficaria no LabVIEW FPGA.

de sinais na placa. Aqui está como ficaria no LabVIEW FPGA. [+] Enlarge Image Figura 8.

[+] Enlarge Image

Figura 8. Entrada e saída analógica sincronizadas com Intelligent DAQ

Mais uma vez estamos usando a estrutura de Case para implementar um trigger de hardware em um chip FPGA, e uma borda de subida no canal digital 0 inicia o código do case True. Os nós de entrada e saída são chamados simultaneamente na estrutura de sequências com quase nenhum Jitter (desvio indesejado de tempo), e se quisermos que eles tenham taxas independentes, podemos simplesmente colocar os nós de I/O analógicos em loops separados. É importante notar que a função de geração de seno mostrada nesse diagrama é um VI Expresso cujos parâmetros você pode configurar de forma interativa.

O diagrama de blocos do Intelligent DAQ mostrado na Figura 8 tem as mesmas funcionalidades do VI do DAQmx da Figure 7, mas se nós quiséssemos personalizar essa tarefa, apenas os Intelligent DAQ proveriam a flexibilidade para fazê-lo. Para adicionar um Trigger de pausa, por exemplo, bastaria adicionar uma estrutura de Case ao redor do Loop While e usar outra linha de I/O digital para selecionar entre os cases True ou False. O poder de programar o hardware traz infinitas possibilidades para temporização de I/O e sincronismo.

Outro exemplo de sincronismo multifunção é a geração finita de pulsos com contadores da placa e usar a saída do contador como clock de amostragem analógica. Este processo é a abordagem comum para se implementar uma aquisição finita com regeneração de trigger. Abaixo está um exemplo do código DAQmx necessário para essa aquisição.

exemplo do código DAQmx necessário para essa aquisição. [+] Enlarge Image Figura 9. Entrada analógica e

[+] Enlarge Image

Figura 9. Entrada analógica e regeneração de trigger com NI-DAQmx

Agora vamos comparar isto com um diagrama do LabVIEW FPGA com a mesma funcionalidade.

Técnicas Avançadas de Aquisição de Dados com a linha Placas de Aqu

http://zone.ni.com/devzone/cda/tut/p/id/6576

Placas de Aqu http://zone.ni.com/devzone/cda/tut/p/id/6576 [+] Enlarge Image Figura 10. Entrada analógica e

[+] Enlarge Image

Figura 10. Entrada analógica e regeneração de trigger com Intelligent DAQ e LabVIEW FPGA

Na Figura 10 é óbvio que há menos passos de configuração em razão do código em LabVIEW executar no hardware. Com uma simples linha de entrada digital e estrutura de loop For, estamos criando uma aquisição analógica com regeneração de trigger. O diagrama de blocos da Figura 9 anterior usa dois contadores onboard para criar um trem de pulsos com regeneração de trigger, e basicamente os dispositivos DAQ multifunção têm apenas dois contadores para se trabalhar. Com o hardware Intelligent DAQ, no entanto, você pode configurar qualquer linha digital para ser um contador usando o LabVIEW FPGA. Vamos falar de mais implementações de contador/termporizador com Intelligent DAQ na próxima seção.

Podemos usar a flexibilidade da temporização por hardware dos Intelligent DAQ no sentido de realizar aquisição de dados disparada por frequência. Enquanto não é possível fazer isso com dispositívos típicos DAQ, a rápida tomada de decisão por hardware pode ser usada para calcular a frequência do sinal de entrada e selecionar o código desejado através da estrutura de Case. Para sincronização de múltiplos dispositivos, os Intelligent DAQ podem também usar o barramento RTSI para placas PCI ou o barramento de trigger dos módulos PXI. Essas linhas externas de temporização e sincronismo também podem ser acessadas por nós de I/O no diagrama de blocos.

Geração de Forma de Onda Analógica

Muitos dos dispositivos DAQ Multifunção possuem canais de saída analógica que inplementam um buffer FIFO para geração contínua de uma forma de onda analógica. A forma de onda a ser gerada pode usar o FIFO como um buffer circular, e continuamente gerar uma série de valores analógicos sem precisar sequer de uma atualização do Host. Isto contribui para melhor desempenho do barramento de comunicação, uma vez que o dado não é constantemente enviado para o dispositivo. Se a forma de onda necessita ser alterada, no entanto, a tarefa de saída deve ser recomeçada para escrever novos dados no buffer FIFO. Outra opção seria continuamente enviar dados para o buffer FIFO do dispositivo, o que pesaria na latência da sua tarefa de saída. Os Intelligent DAQ lhe dão a capacidade de guardar formas de onda de saída em hardware, e também de usar trigger de hardware para trocar essas formas de onda, e dessa forma poder criar um gerador de forma de onda arbitrária.

Abaixo temos um exemplo de um gerador de funções que usa linhas digitais de entrada para disparar o trigger de mudanças na forma de onda de saída. Baseando-se na combinação das linhas digitais 0 e 1, obtemos quatro diferentes estados, ou Cases, para saída analógica.

quatro diferentes estados, ou Cases, para saída analógica. [+] Enlarge Image Figura 11a. Gerador de Funções

[+] Enlarge Image

Figura 11a. Gerador de Funções com Intelligent DAQ. Case 0 – Saída Zero

Técnicas Avançadas de Aquisição de Dados com a linha Placas de Aqu

http://zone.ni.com/devzone/cda/tut/p/id/6576

Placas de Aqu http://zone.ni.com/devzone/cda/tut/p/id/6576 [+] Enlarge Image Figure 11b. Gerador de Funções com

[+] Enlarge Image

Figure 11b. Gerador de Funções com Intelligent DAQ. Case 1 – Senóide

Se ambas as linhas estão em zero, o Case 0 executa e como mostrado na Figura 11a, a saída será de valor constante 0 V. Se a linha 0 está configurada, e a linha 1 em zero, o Case 1 executa e gera uma senóide na saída analógica 0. Este Case de geração senoidal (Figura 11b) usa o VI Expresso sine generator com o qual você pode configurar de forma interativa uma forma de onda senoidal com os valores inteiros requeridos pelo LabVIEW FPGA.

com os valores inteiros requeridos pelo LabVIEW FPGA. [+] Enlarge Image Figura 11c. Gerador de Funções

[+] Enlarge Image

Figura 11c. Gerador de Funções com Intelligent DAQ. Case 2 – Onda quadrada

O Case 2 (Figura 11c) simplesmente inverte um valor Booleano a cada iteração do loop While. Se o valor é 1, o inteiro 15000 é escrito na saída analógica 0, o qual corresponde à representação do valor 15000 em um registrador DAC de 16-bits. Um inteiro sinalizado de 16-bits pode ter valores entre -32768 e 32767. Com um range de saída de -10 a 10 V, escrevendo-se -32768 na saída analogica 0, resultará em -10 V, e escrevendo-se 32768, resultará em 10 V. Neste exemplo estamos escrevendo 15000, que resultará em cerca de 5 V. (Aqui está o cálculo: 15000/32767 * 10 V = 4.5778 V) Basicamente, o Case 2 gerará uma onda quadrada que oscilará entre 0 e 4.578 V.

2 gerará uma onda quadrada que oscilará entre 0 e 4.578 V. [+] Enlarge Image Figura

[+] Enlarge Image

Figura 11d. Gerador de Funções com Intelligent DAQ. Case 3 – Dente de serra

O último case (Figura 11d) executa quando ambas as linhas DIO 0 e DIO 1 estão configuradas, e assim uma tabela de look-up (tabela de busca) é usada para continuamente gerar uma onda dente de serra. O VI “look-up table” é outro VI Expresso com o qual você pode guardar valores arbitrários de formas de onda e indexá-los programaticamente. Neste exemplo configuramos uma onda dente de serra para ser gerada no canal de saída analógica 0.

Guardando todos os valores no FPGA, você elimina a dependência de disponibilidade do barramento, bem como garante o desempenho da temporização por hardware e a confiabilidade na atualização das formas de onda. Toda a flexibilidade de trigger e sincronismo descrita com as entradas analógicas nas seções anteriores também se aplicam

Técnicas Avançadas de Aquisição de Dados com a linha Placas de Aqu

http://zone.ni.com/devzone/cda/tut/p/id/6576

para saída analógica., e com os Intelligent DAQ você pode atualizar diferentes canais de saída analógicas em diferentes taxas, completamente independentes umas das outras. Isto significa que você pode modificar a frequência de um único sinal periódico sem afetar as saídas dos demais canais. Tenha em mente que esta funcionalidade não é possível na maioria dos dispositivos de aquisição de dados.

Veja Também:

Geração de forma de onda arbitrária com Hardware Reconfigurável e módulo LabVIEW FPGA

Operações com Contador/Temporizador

Como mencionado anteriormente, os dispositivos DAQ multifunção têm apenas dois contadores, mas os Intelligent DAQ podem implementar a funcionalidade de um contador em qualquer linha digital disponível. Os nós de I/O digital podem tomar vantagem de uma estrutura especial chamada timed loop no LabVIEW FPGA, com a qual você pode executar código em uma taxa específica, entre 2.5 a 200 MHz. Usando o clock de 40 MHz, por exemplo, você pode usar um timed loop de única iteração para criar um contador de 40 MHz em qualquer linha digital. A Figura 12 (abaixo) é um exemplo de como ficaria o diagrama de blocos.

(abaixo) é um exemplo de como ficaria o diagrama de blocos. [+] Enlarge Image Figura 12.

[+] Enlarge Image

Figura 12. Simples contador de eventos com Intelligent DAQ

Uma vez que o valor de contagem é enviado ao indicador no tipo de dado U32 (Inteiro 32 bits), este código produzirá um contador de 40 MHz, e 32-bits no chip do FPGA. Você pode copiar e colar este código várias vezes para criar múltiplos contadores, todos eles funcionando em diferentes linhas digitais e totalmente paralelos um ao outro. O real valor utilizado no Intelligent DAQ, no entanto, é aquele customizado pelas operações do contador. Você pode optar por incrementar o contador a cada três bordas de descida, ou a trigger uma aquisição analógica baseada no valor do contador. Muitas operações complexas de contadores, como geração de trem de pulsos finitos ou contagem de eventos em cascata requerem o uso de dois contadores, o que geralmente significa usar todo o recurso disponível de uma placa multifunção. Com até 160 linhas digitais, o máximo número de contadores em um hardware Intelligent DAQ é raramente limitado pela disponibilidade de I/Os mas é usualmente determinado pelo tamanho do chip FPGA. Em razão do código em LabVIEW executar no silício, não há necessidade de armar, ou rearmar contadores, e você tem controle total sobre as operações.

A Figura 13 (abaixo) é um exemplo do uso de contadores para gerar um trem de pulsos contínuo com trigger de pausa no NI-DAQmx.

trem de pulsos contínuo com trigger de pausa no NI-DAQmx. [+] Enlarge Image Figura 13. Geração

[+] Enlarge Image

Figura 13. Geração de trem de pulsos contínuo com trigger de pausa no NI-DAQmx

No LabVIEW FPGA, o trigger de pausa não necessita configuração, pois uma simples estrutura de case implementa a mesma funcionalidade no silício. Aqui está como essa funcionalidade ficaria se implementada com Intelligent DAQ (Figura 14).

Técnicas Avançadas de Aquisição de Dados com a linha Placas de Aqu

http://zone.ni.com/devzone/cda/tut/p/id/6576

Placas de Aqu http://zone.ni.com/devzone/cda/tut/p/id/6576 [+] Enlarge Image Figura 14. Geração de trem de pulsos

[+] Enlarge Image

Figura 14. Geração de trem de pulsos contínuo com trigger de pausa com Intelligent DAQ

Neste caso, a linha digital 0 é o trigger de pausa, e o pulso ocorre na linha digital 1. O timed loop de única iteração é usado para obter 25 ns de resolução em cada pulso, pois será o valor de um único ciclo usando a referência de 40 MHz.

Veja Também:

Saída PWM com o módulo LabVIEW FPGA

Aplicações com I/O Digital

Com até 60 linhas digitais temporizadas por hardware, há muitas aplicações digitais possíveis de se fazer com o hardware Intelligent DAQ. Já discutimos o uso de I/O digital para trigger, sincronismo, e contador/temporizador, mas os Intelligent DAQ também podem ser usados para testes de erros em transmissões bit-a-bit, monitoração de padrões digitais, modulação por largura de pulso (PWM), encoder de quadratura, e protocolos de comunicação digital. Interfaces customizadas, ou até mesmo serial pode ser programada diretamente nos diagramas de temporização digital. O SPI, por exemplo, é um protocolo serial comum para comunicação com componentes como microcontroladores e ADCs. A Figura 15 (abaixo) é um diagrama dos tempos que ilustra as três linhas requeridas para comunicações SPI de 16-bits.

três linhas requeridas para comunicações SPI de 16-bits. Figura 15. Diagrama para Comunicação SPI Como mostrado

Figura 15. Diagrama para Comunicação SPI

Como mostrado no diagrama dos tempos, cada um dos 16 bits de dados são passados serialmente a cada ciclo de clock enquanto a linha chip select está em zero. Agora vejamos como isto ficaria programado em LabVIEW FPGA usando três linhas digitais no hardware Intelligent DAQ.

usando três linhas digitais no hardware Intelligent DAQ. [+] Enlarge Image Figura 16. Diagrama de Blocos

[+] Enlarge Image

Figura 16. Diagrama de Blocos de uma comunicação SPI de 16 bits

O loop mais externo da Figura 16 mantém o código executando continuamente, e o controle boleano começa a transferência de dados usando a estrutura de Case . O primeiro quadro da estrutura de sequências zera a linha chip

Técnicas Avançadas de Aquisição de Dados com a linha Placas de Aqu

http://zone.ni.com/devzone/cda/tut/p/id/6576

select e então no quadro intermediário é escrito o bit de dado e pulsado o clock 16 vezes. Finalmente, o terceiro quadro configura a linha chip select novamente e retorna a linha de dados para seu valor padrão zero. Este exemplo simples ilustra uma das muitas possibilidades de comunicação digital com a Intelligent DAQ. Se fosse necessário implementer um handshaking, precisaria de dois canais para as linhas ACK (pronto) e REQ (pause), uma para o clock e linhas de dados trabalhando em paralelo.

Voce pode perceber geralmente bounces (oscilações de borda) nos sinais digitais, especialmente quando na utilização de contatos eletromecânicos, mas há várias formas de adicionar um filtro de debounce nas linhas digitais com o LabVIEW FPGA. Um filtro digital de debounce remove falsas mudanças de estado assegurando que as transições mantenham seus valores por uma certa duração, assim evitando leituras errôneas que resultam do efeito de bounce. A Figura 17 é um exemplo de como isso pode ser feito com Intelligent DAQ.

um exemplo de como isso pode ser feito com Intelligent DAQ. [+] Enlarge Image Figura 17.

[+] Enlarge Image

Figura 17. Diagrama de Blocos de um filtro digital no hardware Intelligent DAQ

Veja Também:

Comunicação SPI no LabVIEW FPGA Implementação de I2C no LabVIEW FPGA Desenvolvendo uma entrada SPDIF no LabVIEW FPGA Interface RS-232 usando o módulo LabVIEW FPGA

Métodos de Transferência de Dados

A maior diferença entre um dispositivo DAQ tradicional com o driver NI-DAQmx e os Intelligent DAQ é a maneira que a transferência de dados é implementada. O driver NI-DAQmx abstrai todas as trasnferências do dispositivo para o computador Host, enquanto que isto deve ser todo programado em LabVIEW para as plataformas FPGA. Há muitas formas de se bufferizar dados no dispositivo, e diferentes métodos de transferência, como canais DMA e requisição de interrupções.

Um buffer tipo no LabVIEW FPGA é configurado na janela de projeto (Project Explorer) do LabVIEW, e pode ser implementado usando tanto a memoria interna da placa quanto lógica em hardware. A Figura 18 mostra como configurar um buffer FIFO de números inteiros na memória interna a partir do Project Explorer.

Técnicas Avançadas de Aquisição de Dados com a linha Placas de Aqu

http://zone.ni.com/devzone/cda/tut/p/id/6576

Placas de Aqu http://zone.ni.com/devzone/cda/tut/p/id/6576 Figura 18. Configuração de FIFO no LabVIEW FPGA Estando o

Figura 18. Configuração de FIFO no LabVIEW FPGA

Estando o FIFO criado, ele pode ser usado para transferir dados entre múltiplos loops no diagrama de blocos do LabVIEW FPGA. O exemplo da Figura 19 mostra dados sendo escritos em um FIFO no loop da esquerda, e a leitura dos dados do FIFO no loop da direita.

esquerda, e a leitura dos dados do FIFO no loop da direita. Figura 19. Diagrama de

Figura 19. Diagrama de Blocos no LabVIEW FPGA com FIFO e múltiplos loops

Canais DMA (Acesso Direto à Memória), que também são implementados usando FIFOs do LabVIEW FPGA, são configurados de forma similar no Project Explorer.

Técnicas Avançadas de Aquisição de Dados com a linha Placas de Aqu

http://zone.ni.com/devzone/cda/tut/p/id/6576

Placas de Aqu http://zone.ni.com/devzone/cda/tut/p/id/6576 Figura 20. Configuração de DMA no LabVIEW FPGA Figura 21.

Figura 20. Configuração de DMA no LabVIEW FPGA

Figura 20. Configuração de DMA no LabVIEW FPGA Figura 21. Diagrama de Blocos no LabVIEW FPGA

Figura 21. Diagrama de Blocos no LabVIEW FPGA com FIFO DMA e enpacotamento de dados.

Todas as transferências de FIFO DMA são de 32 bits, então quando se passa dados de um canal de entrada analógica de 16-bits, é mais eficiente combinar as amostras e passar dois canais de uma só vez. Isto é conhecido como empacotamento de dados, e mostrado na Figura 21. Quando os dados são passados diretamente para a memória do PC Host, ele pode ser lido usando-se as funções locais do LabVIEW executando no sistema operacional Windows (Figura 22).

Técnicas Avançadas de Aquisição de Dados com a linha Placas de Aqu

http://zone.ni.com/devzone/cda/tut/p/id/6576

Placas de Aqu http://zone.ni.com/devzone/cda/tut/p/id/6576 Figura 22. Código de interface no Host, com leitura de DMA

Figura 22. Código de interface no Host, com leitura de DMA e desempacotamento de dados

Como mostrado na Figura 22, o diagrama do Host referencia o VI do FPGA e então lê continuamente o FIFO DMA em um loop. O dado de 32-bits é separado em dois canais de 16-bits que são exibidos nos gráficos. O VI de interface do Host pode também ler e escrever em qualquer controle ou indicador do VI FPGA, e nesse caso o botão de controle de parada é escrito da mesma forma.

Veja Também:

Usando FIFO DMA em Aplicações de Aqusição em Alta Velocidade para Dispositivos de I/O Reconfiguráveis

Conclusão

Enquanto arquiteturas fixas ASICs como o DAQ-STC2 atendem perfeitamente os requisitos da maioria das necessidades de aquisição de dados, uma completa flexibilidade e customização pode ser alcançada com o hardware reconfigurável baseado em FPGA dos dispositivos Intelligent DAQ. Com o LabVIEW FPGA, tarefas de trigger e sincronismo se tornam simples como o desenhar graficamente o que você quer que aconteça; e com linhas digitais e analógicas independentes, os Intelligent DAQ podem aproveitar o real paralelismo que os FPGAs oferecem. Dentre amostragem simultânea, contadores customizados e tomasdas de decisão a 40 MHz, os dispositivos DAQ Inteligentes da Série R têm revolucionado as possibilidades de aquisição de dados multifunção.

Links Relacionados:

O que posso fazer com LabVIEW FPGA? Tutorial Interativo do LabVIEW FPGA Perguntas comuns sobre DAQ Inteligentes da Série R Seminários Web sobre DAQ Inteligentes Perguntas comuns sobre controle baseado em FPGA

Leia outros artigos em português

Legal This tutorial (this "tutorial") was developed by National Instruments ("NI"). Although technical support of this tutorial may be made available by National Instruments, the content in this tutorial may not be completely tested and verified, and NI does not guarantee its quality in any way or that NI will continue to support this content with each new revision of related products and drivers. THIS TUTORIAL IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND AND SUBJECT TO CERTAIN RESTRICTIONS AS MORE SPECIFICALLY SET FORTH IN NI.COM'S TERMS OF USE (http://ni.com /legal/termsofuse/unitedstates/us/).

My Profile | RSS | Privacy | Legal | Contact NI © 2010 National Instruments Corporation. All right s reserved.

|

Contact NI © 2010 National Instruments Corporation. All right s reserved. | E-Mail this Page 13

E-Mail this Page

Técnicas Avançadas de Aquisição de Dados com a linha Placas de Aqu

http://zone.ni.com/devzone/cda/tut/p/id/6576