Terza parte del sistema di acquisizione dati: Elaborazione della stringa acquisita

Negli articoli precedenti abbiamo visto come è stato possibile realizzare il circuito vero e proprio del sistema di acquisizioni dati per il sensore ottico lineare ELIS-1024 nonchè la gestione dei segnali di controllo.In questo articolo vedremo come è stata elaborata la stringa di bit acquisita mediante le tecniche illustrate precedentemente.

La capacità di effettuare elaborazioni digitali su stringe di bit dipende, fortemente dalla potenza di calcolo dell’FPGA utilizzato. Tale capacità si esprime essenzialmente col numero di CLB di cui l’FPGA dispone. Essendo questo progetto di tesi mirato più alla semplicità e alla praticità che al numero di operazioni effettuabili dall’intero sistema, si è scelto di effettuare una semplice operazione di sottrazione, mirata ad eliminare l’offset di 2V presentato dalla tensione in uscita dell’ELIS-1024.

Questa operazione è tipicamente chiamata di “Offset” ed il suo scopo è quello di migliorare la visualizzazione della forma d’onda in uscita. L’operazione consiste nell’effettuare la sottrazione di 2V ad ogni valore di tensione di ciascun pixel. Per effettuare ciò si è realizzato un sommatore con ingressi a 12 bit, sempre in linguaggio VHDL.

In ingresso a questo sommatore saranno presentati due termini :

1. La stringa dei 12 bit in uscita dallo Shift Register.

2. La rappresentazione binaria di una tensione pari a -2V.

 

Per quanto riguarda il primo termine, è bastato connettere uno dei due ingressi relativi agli addendi della somma, al bus di uscita dello Shift Register. Per il secondo termine invece, è stata effettuata una conversione in binario su 12 bit del valore logico pari a - 2V.

Tenendo conto che il valore di tensione dell’LSB dell’ADS7818 è pari a circa 1,22mV, si divide il valore di 2V proprio per quest’ultimo, ottenendo il numero decimale da convertire in binario. Dopodiché della stringa ottenuta si effettua il complemento a 2 per ottenere la rappresentazione del valore negativo dei 2V. Una volta calcolata la stringa dei -2V, essa è stata riportata in ingresso al sommatore tramite un blocco logico scritto in VHDL.

L’operazione di somma deve essere anch’essa sincrona con un opportuno segnale di clock. Siccome lo Shift Register sarà completamente riempito soltanto al termine dell’intero periodo del CLKCMOS, allora la somma dovrà essere effettuata solo dopo tale intervallo di tempo.

Per questo si è scelto di sincronizzare l’operazione di somma sul fronte di discesa del CLKCMOS.

La prossima figura mostra lo schema e le relative connessione dei blocchi sommatore e offset realizzati.

Da questa figura è possibile notare, oltre ai 12 bit relativi al risultato dell’operazione, anche una seconda uscita dall’addizionatore chiamata Cout. Su questa uscita viene presentato il bit di segno che dipende dal risultato dell’operazione. Nel nostro caso questo bit non viene riportato in uscita poiché sappiamo a priori che la tensione in uscita dall’ELIS-1024 non sarà mai inferiore ai 2V, e quindi il risutalto della sottrazione sarà comunque positivo. Simulando con un’onda quadra l’uscita dell’ADC, è stato possibile effettuare una simulazione per verificare la correttezza dell’operazione di sottrazione. Il risultato di questa simulazione viene presentato di seguito:

Come si nota dall'immagine precedente, durante l’intervallo di tempo TLOW in cui il CLKCMOS è basso, parte la fase di acquisizione dei bit generati dall’A/D e riportati come ADCOUT. Si noti come il segnale AD11(valore esadecimale) relativo all’uscita dello Shift Register cambi sul fronte di salita del CLKADC. Il segnale B11 rappresenta la stringa relativa ai -2V precedentemente calcolata (rappresentata in esadecimale nella figura precedente).

Non appena si verifica il fronte di salita del CLKCMOS, termina la fase di conversione e comincia quella di acquisizione. In questa fase lo Shift Register risulta disabilitato e poi resettato. Infatti, il segnale AD11 non cambia fin quando CLKCMOS non ritorna al valore basso. Infine, come è possibile notare, la somma avviene in maniera sincrona al fronte di discesa del CLKCMOS, proprio come desiderato.

Ovviamente il risultato di questa simulazione non ha un valore significativo per quanto riguarda il risultato della somma ottenuta, dato che la stringa che rappresenta l’uscita dell’ADC è stata generata a caso. Però la temporizzazione dei segnali risulta essere alquanto chiara e quindi ci permette di essere sicuri che le operazioni vengono effettuate nei tempi giusti.

 

Conversione Parallelo/Seriale

La scelta dell’elaborazione della stringa acquisita dall’ADC in maniera parallela ha sicuramente ridotto il numero di operazioni eseguite per effettuare l’operazione di Offset, riducendo anche i tempi di elaborazione complessivi. Nasce però l’esigenza di poter presentare la stringa elaborata in uscita, in maniera seriale. Ciò è giustificato dal fatto che il sistema realizzato in questa tesi, è soltanto il punto di partenza del vero e proprio sistema di acquisizione ed elaborazione che sarà realizzato in seguito.

La conversione Parallelo/Seriale(P/S), può essere effettuata in maniera del tutto duale a come è stata realizzata l’acquisizione dei dati dall’ADC. Infatti, la soluzione presentata è quella di un convertitore Parallelo/Seriale, realizzato proprio con uno Shift Register. Tramite opportuni segnali di temporizzazione si effettuano le seguenti operazioni:

1. Caricamento dei dati nello Shift Register a 12 bit.

2. Shift sincronizzato dei dati in uscita con un opportuno segnale di clock.

 

Lo schema relativo alle connessioni del convertitore P/S è riportato nella figura successiva:

 

Descrizione del convertitore P/S a 12 bit

Il convertitore rappresentato precedentemente, presenta i seguenti ingressi:

CLK : Rappresenta il segnale di sincronizzazione opportunamente connesso al CLKADC.

MODE[1:0]: E’ un bus a 2 bit che permette di selezionare due delle tre operazioni del convertitore, ossia quella di caricamento dei bit e quella di shift. La terza è un operazione di attesa ma non è stata utilizzata.

RESET: Quando è allo stato logico alto resetta il valore dello Shift Register interno. L’uscita del convertitore P/S è SDOUT sulla quale vengono presentati i bit in maniera seriale.

Per spiegare il funzionamento del convertitore effettuiamo una simulazione introducendo un valore fittizio della stringa convertita dall’ADC con un onda quadra. I risultati della simulazione sono mostrati nella prossima figura:

Il segnale MODE0 è connesso al segnale MOD12 (impulso generato dal contatore modulo 12 quando arriva al suo conteggio massimo), mentre il segnale MODE1 è il negato del segnale MODE0(penultima figura).

L’operazione di caricamento dei dati nello Shift Register avviene quando i segnali MODE1 e MODE0 rappresentano il codice “01”. Connettendo il segnale MODE0 al MOD12 si fa in modo tale che il caricamento avvenga non appena è disponibile il risultato della sottrazione(S11).

Una volta caricati i bit nello Shift Register, il MOD12 torna a zero quindi si ottiene il codice “10” che comanda al convertitore di eseguire l’operazione di shift dei bit in uscita (DOUT). Quest’ultima operazione avviene in maniera sincrona col CLKADC proprio perché si vuole che i bit siano riportati tutti e dodici in uscita prima dell’arrivo di una seconda stringa utile rappresentante una seconda sottrazione.

 

Articoli precedenti correlati:

 

https://it.emcelettronica.com/realizzazione-del-pcb-mediante-software-target-3001-v11-ligth

https://it.emcelettronica.com/realizzazione-dei-segnali-di-controllo-sistema-di-acquisizione-dati

https://it.emcelettronica.com/seconda-parte-del-sistema-di-acquisizione-dati

Scarica subito una copia gratis

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend