Sei sulla pagina 1di 13

29/02/2008

Tecniche di Acquisizione avanzata con le


Intelligent DAQ

Massimiliano Banfi
System Engineer, National Instruments

Agenda

• Introduzione
• LabVIEW FPGA per il Test
• Implementare Temporizzazioni e Trigger
customizzati
• Streaming ad elevata velocità utilizzando la
tecnologia DMA
• Costruire una personalità DAQ
• Domande

1
29/02/2008

Cos’è un Intelligent DAQ?


• I/O temporizzato basato su FPGA
• Processamento definito dall’utente nell’FPGA
• Temporizzazione Hardware: veloce ed
affidabile

Il modulo LabVIEW FPGA

2
29/02/2008

Classico DAQ Intelligent DAQ


FPGA aperta per definire
I/O Control Definito: ASIC per il timing e
timing e triggering
il trigger

Analog I/O Multiplexati, Campionamento Simultaneoo independente


condiviso

Fino a 160 linee


Digital I/O Fino a 32 linee digitali hardware timed

counters personalizzabili
Counters 2 counter
in ogni linea digitale

I diversi strati dell’intelligent DAQ

Software
NI-DAQmx
NI-RIO Driver
DriverSoftware
Software

Operating System

PCI Bus

Hardware LabVIEW
Fixed FPGA
ASIC Hardware

I/O
ADCs DACs DIO

3
29/02/2008

Programmazione della Intelligent DAQ

Trigger analogico classico con il driver


NI-DAQmx

4
29/02/2008

Trigger analogico classico con le


Intelligent DAQ

Trigger analogico classico con le


Intelligent DAQ

5
29/02/2008

Trigger analogico multirate con le


Intelligent DAQ

Trigger analogico multirate con le


Intelligent DAQ

6
29/02/2008

Come funziona il DMA


• Una FIFO tra l’FPGA e l’host (RT o Windows)
– La FIFO garantisce di non perdere i dati: AFFIDABILITA’
Hardware

• La FIFO si compone di due blocchi


– Block memory nell’FPGA
– RAM nell’host (RT o Windows)

• Le memorie sono collegate tra di loro attraverso


un engine
– L’engine può esserre configurato, attivato o fermato
dall’utente

DMA API nell’FPGA


• Timeout input
– -1: Tempo infinito di attesa
– 0: Esegue ed esce immediatamente
– Valore Positivo: Tempo di attesa in ticks
– Tipicamente usati 0 o -1
• 0 deve essere utilizzato all’interno di un SCTL
• Timeout output
– Deve essere gestito a meno che il Timeout non sia -1

7
29/02/2008

Componenti dello Streaming

'0$
&RQWUROOHU

Buffer

FIFO

Componenti dello Streaming

'0$
&RQWUROOHU

Buffer

FIFO

8
29/02/2008

Componenti dello Streaming

'0$
&RQWUROOHU

Buffer

FIFO

DMA lettura e scrittura dall’host


• Numero di elementi (Read)
– L’Host può accedere a multipli elementi nella FIFO in
una singola operazione
• Timeout input
– Valori concessi: -1, 0, numero positivo intero
– Il timeout è specificato in ms
– Il raggiungimento del timeout è un errore da gestire
• Elements remaining/empty elements remaining
– Un metodo per monitorare il processo

9
29/02/2008

Costruire una personalità DAQ

• Step 1: Definire i requisiti


• Step 2: Progettare la macchina a stati
• Step 3: Sviluppare la macchina a stati sull’host

Costruire una personalità DAQ : Step 1

Esempi di requisiti:
– Due canali analogici simultanei
– Custom trigger – trigger su due valori analogici
– Frequenza di campionamento configurabile
– Acquisizione dati continua e affidabile

10
29/02/2008

Costruire una personalità DAQ : Step 2

• Progettare la macchina a stati


– L’host invia i comandi al dispositivo e legge gli stati
del dispositivo.
Idle
Start
Stop

Stop

Error Running

Overflow

Costruire una personalità DAQ : Step 3

• Sviluppare I ruoli della macchina a stati sull’host


(test e verifica: debug)
• Simulare per verificare la logica e le transizioni
• Implementare ogni stato nella propria state
machine
• Compilare

11
29/02/2008

Fotografia di un Block Diagram FPGA

12
29/02/2008

Creare l’applicazione Host

• Progettare le “proprie” API


– Si è scelto di utilizzare un subset dell’ NI-DAQmx
API

Applicazione Host

13

Potrebbero piacerti anche