• Non ci sono risultati.

CAPITOLO 4

N/A
N/A
Protected

Academic year: 2021

Condividi "CAPITOLO 4"

Copied!
17
0
0

Testo completo

(1)

CAPITOLO 4

Software e Firmware di Gestione

Per quanto riguarda l’invio dei parametri della sinusoide, così come per la configurazione della sezione del DSP atta alla generazione dei campioni (la McASP), è stato necessario progettare un software ed un firmware appositi, sviluppati in linguaggio C++ ed in linguaggio grafico G.

Il programma utilizzato per lo sviluppo del codice in C++,

necessario inoltre per l’invio dello stesso al DSP, è Code Composer Studio v.2; lo sviluppo con questo linguaggio ci ha permesso di sfruttare librerie e funzioni già disponibili, fornite da Orsys, e specificatamente create per gestire il DSP TMS320C6713 [20]. Per quanto riguarda invece la parte relativa all’impostazione dei parametri della sinusoide, si è sfruttato il linguaggio G, mediante il programma Lab View 5.1, distribuito da National Instruments. In questo modo l’utente dispone di un’interfaccia user friendly per comandare l’applicazione di Ottica Adattiva. Sarà poi un collegamento seriale ad inviare i dati al DSP che li elaborerà, fornendoli alla scheda audio per la generazione della sinusoide.

Lo stesso software LabView è stato utilizzato per la gestione dei parametri delle altre applicazioni del progetto SPADA.

(2)

4.1 Gestione della McASP

In questo paragrafo verrà descritta la McASP sia da un punto di vista delle caratteristiche, sia per quanto riguarda i parametri con cui è stata configurata, per funzionare secondo le specifiche del modulatore PWM.

4.1.1 Caratteristiche Tecniche della McASP

Il DSP TMS320C6713 ([20]) dispone di due periferiche audio on-board, le cosiddette McASP (Multichannel Audio Serial Port)[21]. In realtà delle due (McASP0 e McASP1) ne utilizziamo solo una in quanto sufficiente per gli scopi del progetto.

La McASP funziona come porta seriale sincrona general-purpose, ottimizzata per applicazioni audio multicanale. I formati di trasmissione possibili, sono tre:

• TDM (Time Division Multiplexing); • I2S (Inter-Integrated Sound);

• DIT (Digital audio Interfase Trasmission),

Per la sua relativa semplicità, nonché in base ai protocolli di comunicazione gestibili dal modulatore PWM, si è scelta la seconda soluzione per lo sviluppo della nostra applicazione.

Vediamo di analizzare meglio le caratteristiche di questa periferica dal punto di vista dell’architettura interna. In Figura 4.1 è mostrato lo schema a blocchi della McASP.

(3)

Figura 4.1: Schema a blocchi della McASP.

Ogni pin può essere programmato come McASP pin o come General Purpose I/O. Entrambe le sezioni di trasmissione e ricezione sono dotate, indipendentemente l’una dall’altra, di una macchina a stati, che controlla le interazioni tra le varie unità della rispettiva sezione, segnala le eventuali situazioni di errore in un apposito registro e determina lo stato della porta seriale; un’unità di formattazione dati; e un sequenziatore per il formato di trasmissione TDM.

La periferica ha inoltre delle parti in comune per entrambe le sezioni: innanzitutto i serializzatori, che possono essere usati in entrambe le direzioni; l’unità per il controllo degli errori nella generazione dei clock; il blocco GPIO per stabilire le funzionalità dei pin come detto sopra.

(4)

• AXRm[n]: hanno la funzione della vera e propria trasmissione/ricezione dei dati audio.

• AFSRm: “Frame Sync Receive”, pin dedicato al segnale di sincronizzazione dei frame in ricezione. Determina il sample rate in ingresso.

• AFSXm: pin dedicato al segnale di sincronizzazione dei frame in trasmissione. Determina il sample rate ovvero la frequenza dei campioni in uscita.

• ACLKRm: pin dedicato al bit clock in ricezione. La durata di un periodo di questo segnale coincide con la distanza temporale tra due bit successivi nella stringa ricevuta.

• ACLKXm: pin dedicato al bit clock in trasmissione. La durata di un periodo di questo segnale coincide con la distanza temporale tra due bit successivi nella stringa trasmessa.

• AHCLKRm: pin dedicato al clock ad alta frequenza ricevuto. Con tale segnale vengono campionati i bit costituenti la stringa ricevuta. • AHCLKXm: pin dedicato al clock ad alta frequenza trasmesso. Tale

segnale può essere usato come clock di sistema per un dispositivo a valle.

Nell’ambito della scheda Orsys i pin della McASP0 sono connessi al bus micro-line, tranne che per la linea AMUTEIN0, connessa all’FPGA. McASP1 è invece connessa al solo FPGA.

Per la nostra applicazione utilizziamo soltanto la McASP0.

4.1.2 Firmware della McASP

Per quanto riguarda la parte di gestione firmware della McASP si è dovuto prestare particolare attenzione, in quanto, tra tutte le periferiche presenti sul DSP TMS320C6713, è quella col più ampio numero di registri da inizializzare, in modo da farla funzionare in base alle specifiche. Per far questo è stato possibile utilizzare delle API presenti nelle CSL (Chip

(5)

Support Library) incluse nel pacchetto software di Code Composer Studio v2, utilizzato per la stesura e il funzionamento del programma, che ne hanno semplificato la realizzazione nonché l’interfacciamento con l’hardware. All’interno di esse infatti, sono dichiarate strutture e funzioni per la gestione della periferica e per l’inizializzazione dei registri della McASP con i corretti valori.

Il risultato finale ha permesso di ottenere in uscita dei campioni a 32 bit (di cui prendiamo solo i 24 più significativi), in formato IIS, con una frequenza di campionamento di 48,83 kHz. Tale frequenza è stata scelta in base alle frequenze di clock disponibili, per mezzo di divisione, ed in modo che rientrasse, comunque, nei range di funzionamento del modulatore PWM.

La prima cosa che il programma esegue dopo aver inizializzato i registri generali, aver abilitato le interrupt e caricato il programma sull’FPGA, è chiamare la funzione SpadaMcAspInit() la quale:

• abilita i pin della McASP al posto di quelli della McBSP, scrivendo nel registro DEVCFG del core processor;

• attivazione della linea INT10 per la gestione delle interrupt provenienti dalla connessione AXINT della McASP, non essendo prevista una connessione diretta;

• dichiarazione di un handler alla periferica McASP0;

• inizializzazione delle strutture dichiarate nella CSL con i parametri per impostare i campi dei registri della McAsp0;

• chiamata della funzione McASP_open(), che attiva la periferica, con argomento l’handler dichiarato in precedenza;

• chiamata della funzione McASP_config() per l’impostazione dei registri globali, dei registri di trasmissione e di controllo dei serializzatori; tale impostazioni permettono una trasmissione con le seguenti caratteristiche:

™ configurazione della funzionalità e della direzione dei pin della McASP connessi al bus micro-line. In particolare i pin AXR0, AFSX0, ACLKX0, AHCLKX0 e AMUTE sono

(6)

configurati come “McASP pin”, piuttosto che come GPIO (General Purpose IO). La polarità del pin AMUTE nel suo stato attivo viene impostata bassa in accordo alla polarità attiva del modulatore PWM presente sulla Scheda Audio; ™ configurazione del serializzatore 0 (RXBUF0) della McASP

come trasmettitore (è il registro dove vanno i campioni della sinusoide trasmessi alla Scheda Audio);

™ impostazione dell’evento per la richiesta di interruzione: il buffer di uscita è vuoto e pronto a trasmettere un nuovo campione al serializzatore;

™ formato di trasmissione IIS a 32 bit con il solo canale sinistro attivo;

™ frequenza dell’ High Frequency Clock impostata a 12,5 MHz. Con questo clock si va a pilotare il master clock del modulatore TAS5001 (Modulatore PWM);

™ frequenza dello shift clock: 3,125 MHz; ™ sample rate: 48,83 kHz.

• Attivazione nell’ordine di:

a. divisore di frequenza per la generazione del clock ad alta frequenza;

b. divisore di frequenza per la generazione del bit clock;

c. richieste di interruzione tramite le funzioni C6xIntHook(),

C6xIntEnable(), C6xGlobalIntEnable();

d. azzeramento del registro XSTAT che segnala situazioni di errore della periferica;

e. serializzatore 0;

f. macchina a stati della sezione di trasmissione.

Le operazioni a, b, e, ed f, vengono eseguite modificando il registro GBLCTL (Global Control Register) della McASP. I bit di tale registro sono sincronizzati e agganciati ai clock (ACLKX, per i bit da 8 a 12, e ACLKR, per i bit da 0 a 4) e prima di effettuare la programmazione è necessario che siano

(7)

funzionanti. Tale registro riceve come clock il segnale AUXCLK generato dal PLL con frequenza pari a 25 MHz, un ordine di grandezza inferiore alla frequenza del core processor, con cui vengono eseguite le istruzioni. Per l’utilizzo delle nuove impostazioni è quindi necessario effettuare una rilettura dello stesso, per verificare che sia sempre sincronizzato ai clock. L’operazione di rilettura viene eseguita tramite la funzione

MCASP_getGblctl().

In Figura 4.2 sono mostrati i clock generati dalla McASP.

Figura 4.2: Andamento dei segnali AHCLKX, AFSX e AXR0 della McASP misurati sul connettore micro-line. Si vede in figura la frequenza pari rispettivamente a 3,125Mhz e 4,83Khz del clock ad alta

frequenza e del segnale di sincronizzazione dei frame.

4.2 Generazione della Sinusoide

Come esposto nei Capitoli precedenti, è necessario generare una sinusoide che faccia muovere uno speaker, o meglio una membrana con una faccia riflettente, in modo da variare la lunghezza focale locale su ogni singolo SPAD secondo la curvatura del fronte incidente su di esso. Tale

(8)

sinusoide genera una “contro curvatura” in modo da compensare quella creata dall’atmosfera ed è ottenuta dai campioni generati dalla McASP, mandati successivamente alla Scheda Audio.

Per il calcolo dei campioni è stata sfruttata la funzione sin(), presente nella libreria di funzioni matematiche fornita con Code Composer Studio, che riceve come argomento un valore di tipo double. La scelta di tale funzione è stata fatta dopo aver verificato la non pesantezza della stessa per il codice, utilizzando delle Watch Window, gestibili dal software, con le quali abbiamo potuto valutare le risorse del DSP richieste per eseguire l’operazione.

Il valore dei campioni è stato calcolato inizialmente secondo la seguente formula: 32 2 *sin * 2 Sample Sineamplitude=  π   arg (4.1)  Il valore dell’ampiezza, Sineamplitude (su 8 bit), è impostabile tramite LabView e rimane lo stesso per ogni campione in quanto è la funzione seno, compresa tra -1 e 1, che scala opportunamente l’altezza di ogni campione in base al suo argomento. Quello che cambia infatti, è il valore di argn(unsigned a 32 bit), il quale viene incrementato ogni volta di

un delta dipendente dal valore Sinefrequency (anch’esso stabilito dall’utente via LabView e che stabilisce il valore della frequenza del seno che vogliamo generare).

Il principio su cui si basa il calcolo dell’argomento del seno è stato mutuato dall’architettura proposta da J. Tierny [22] per un sintetizzatore digitale di frequenza ed è mostrato in Figura 4.3.

Lo schema proposto sfrutta le proprietà di overflow del modulo 2 32

(nel nostro caso K = 32, infatti) di un accumulatore a 32 bit. Vediamo come.

(9)

Figura 4.3: Architettura del sintetizzatore digitale di frequenza.

Indichiamo con θ

( )

n l’argomento del seno:

( )

32 arg 2 2 n n θ = π   (4.2)

dove argn rappresenta il contenuto dell’accumulatore all’istante

clk

n t

f = . In pratica dividiamo l’angolo giro in 232 parti e poi con arg

(unsigned a 32 bit) stabiliamo la parte di angolo giro da inserire nella funzione. Otteniamo così un definizione dell’argomento su 32 bit.

Per il calcolo di un campione successivo è sufficiente sommare una fase all’argomento del seno del campione precedente:

1

argn+ =argn+ ∆Φ (4.3)

dove ∆Φ è definito come:

32 *2 clk Sinefrequency f ∆Φ = (4.4)

Infatti, visto che conosciamo sia la frequenza di uscita della sinusoide Sinefrequency (la scegliamo noi), sia la frequenza di uscita dei campioni fclk= 48,83 kHz e visto che:

(10)

( ) (

1

)

2 * clk n n Sinefrequency t θ θ π − − = ∆ (4.5) è facile ricavare il valore di ∆Φ sviluppando l’espressione precedente:

32 * 2 clk f Sinefrequency= ∆Φ (4.6)

da cui si ottiene effettivamente l’espressione (4.4).

Il valore di ogni campione viene inserito, interrompendo il programma principale, nell’ apposito registro di trasmissione McASP_XBUF0 della McASP che lo passa alla Scheda Audio la quale dopo averlo modulato in PWM, ne estrae la portante che è appunto il campione della sinusoide(vedi Capitolo 3).

Il risultato finale sull’oscilloscopio è mostrato in Figura 4.4.

Figura 4.4: Segnale uscente dalla scheda audio. In blu e verde i segnali dei singoli canali, in rosso il segnale differenziale.

Il sistema che è mostrato in Figura 4.4 è alimentato a 10 V ma è possibile alimentarlo con tensioni diverse, purché non si scenda sotto i 3,3 V, limite di funzionamento del modulatore e dell’amplificatore. Le sinusoidi celeste

(11)

e verde rappresentano i due segnali sul canale sinistro (il segnale infatti è differenziale): come si vede sono in opposizione di fase. Il segnale rosso è la sinusoide ottenuta facendo la differenza dei segnali suddetti, sinusoide che si presenterà all’altoparlante in uscita: l’ampiezza di questa risulta il doppio di quella delle singole sinusoidi.

In Figura 4.5, invece, è mostrato uno dei due segnali del canale sinistro (in verde) insieme al clock di campionamento a 48,83 kHz (in celeste).

Figura 4.5: Clock di campionamento (celeste) e sinusoide sul canale sinistro (verde).

Come spiegato in precedenza e come richiesto dalle specifiche di progetto, oltre ad ampiezza e frequenza deve essere possibile cambiare anche la fase con passi di 1 grado. Questa parte è stata facilmente implementata aggiungendo all’argomento del seno il termine di fase (Sinephase), in modo che il campione finale sia calcolato secondo la seguente formula:

(12)

32

2 *sin *arg

2

Sample Sineamplitude=  π +Sinephase

  (4.7) In Figura 4.6 è mostrato l’effettivo funzionamento del sistema: in celeste si possono vedere due sinusoidi sfasate di 90°, come impostato nel pannello di gestione dei parametri di LabView. Il canale è sempre lo stesso; si è semplicemente riacquisito il nuovo segnale dopo lo sfasamento, mantenendo la persistenza sull’acquisizione precedente. In rosso sempre il segnale differenziale in uscita, ottenuto dalle due sinusoidi uscenti dall’amplificatore.

Figura 4.6: Effettivo funzionamento della scheda audio: in celeste un canale di uscita con sovrapposta la stessa dopo aver aggiunto uno

sfasamento di 90°.

4.3 Interfaccia LabView

Per la gestione dei parametri da passare alla Scheda Audio si è sfruttato il software per strumentazione virtuale LabView 5.1, distribuito

(13)

da National Instruments, che ci ha permesso, grazie alla sua elevata flessibilità ed intuitività nella programmazione, di creare un pannello user frendly per la gestione e l’invio al DSP, tramite protocollo RS232, dei parametri della sinusoide (Figura 4.7)

Figura 4.7: Pannello di impostazione dei parametri della sinusoide.

Il valore dell’ampiezza (Amplitude) è impostabile su 256 livelli (8 bit), quello della frequenza (Frequency) da 1500 a 3000 Hz su 32 bit; la fase (Phase) è impostabile da 0 a 360 gradi.

Message 1, Message 2 e Message 3 rappresentano rispettivamente i valori, espressi in esadecimale, dell’ampiezza, della frequenza e della fase. Quello che però viene trasmesso alla scheda è Message Tx, ottenuto concatenando le tre stringhe suddette. In questo modo la seriale trasmette un’unica stringa, interrompendo solo una volta il programma principale. Successivamente sarà proprio quest’ultimo ad estrapolare i valori, interpretandoli correttamente. Dopo la trasmissione si accende la spia

Parameters Sent, avvisandoci che la trasmissione è avvenuta.

Il pannello dispone di altri due LED per la visualizzazione luminosa della corretta ricezione dei dati. Message Rx, infatti, contiene i parametri appena trasmessi che, se uguali a quelli di Message Tx fanno accendere la spia Parameters Received; altrimenti segnalano l’errore,

(14)

accendendo Error. Il pannello prevede anche un pulsante per inviare un segnale di silenzio, nel nostro caso una stringa di tutti “0”: Mute.

I dati sono inviati tramite protocollo RS-232. La porta seriale è sulla Scheda Audio e manda i parametri direttamente sul Back Panel. Tali valori giungeranno al DSP il quale gestirà la McASP in modo da generare i campioni, che verranno nuovamente inviati alla Scheda Audio che, una volta generata la sinusoide, la manderà in uscita sul connettore LEMO.

4.4 Gestione dell’Ottica Adattiva

4.4.1 Calcolo del Segnale di Curvatura

A questo punto abbiamo tutti gli elementi necessari per realizzare il calcolo del segnale di curvatura di cui abbiamo bisogno. In base alle considerazioni fatte nel Capitolo 2, è possibile dire che se il fronte incedente ha una curvatura positiva le immagini intrafocali sono più luminose, quelle extrafocali più scure; il contrario avviene se il fronte ha una curvatura negativa. Abbiamo visto che tramite la sinusoide è possibile regolare la lunghezza focale f della membrana. La relazione seguente indica la luminosità L dell’obiettivo, ovvero quanta luce entra e quindi quanti fotoni verranno contati:

f L

D

= (4.8)

dove f è la lunghezza focale e D il diametro del telescopio. Se la focale f aumenta, aumenta la luminosità, viceversa se diminuisce. Al telescopio arriverà un fronte aberrato e quindi con una curvatura variabile dello stesso fronte. La pupilla di osservazione è divisa in 60 settori, ciascuno osservato da un singolo SPAD che conta i fotoni che arrivano dall’oggetto astronomico. Più fotoni arrivano più illuminato sarà il relativo pixel.

(15)

Il conteggio dei fotoni va eseguito alternativamente su due registri, chiamati A e B. Il periodo del conteggio è stabilito dalla sinusoide precedentemente descritta. Infatti, secondo le specifiche di progetto, dovrà essere: 2 Sinusoide A B T T =T = . (4.9)

Se l’immagine è fuori fuoco, ovvero il fronte è aberrato, avremo un risultato del conteggio diverso nei due registri, il quale darà luogo in uscita ad un segnale di curvatura C ≠ 0.

Vediamo come gestire i segnali che abbiamo a disposizione per far in modo che, all’interno del conteggio globale dei fotoni, si riescano a stabilire gli intervalli in cui contare A e B. Infatti, appurato che riusciamo a contare precisamente grazie ai ricevitori (vedi Capitolo 3), si tratta semplicemente di gestire la sinusoide in modo da immagazzinare i conteggi ogni semiperiodo della stessa, estrapolandoli dal conteggio continuo eseguito dall’ FPGA.

Per far questo possiamo sfruttare il segnale AO_SYNC, generato dal comparatore inserito sulla Scheda Audio che riceve in ingresso le singole sinusoidi, raddrizzate tramite due diodi, dal cui confronto generiamo il segnale suddetto (Figura 4.8). Il segnale AO_SYNC va direttamente all’FPGA il quale gestisce il conteggio. Attivando l’Ottica Adattiva possiamo pensare di allineare il conteggio dei fotoni, ovvero le finestre Tw in cui l’FPGA conta in free running i fotoni, con il trigger dato da AO_SYNC: questo segnale è alto proprio per un semiperiodo della sinusoide. Inoltre rappresenta proprio un’onda quadra, per cui attraverso di esso possiamo gestire il conteggio alternativamente di A e B. Il risultato di tali conteggi, oltre a gestire il calcolo dei segnali di curvatura da mandare al sistema di attuazione, viene fornito su file per un’analisi futura dell’esperimento.

(16)

Figura 4.8: Segnali in ingresso al comparatore sulla scheda audio, raddrizzati da due diodi.

4.4.2 Gestione dei Parametri di Controllo

della Sinusoide

La sinusoide risulta fondamentale per cambiare la focale del telescopio in modo da calcolare il segnale di curvatura secondo la seguente espressione, ricavata nel Capitolo 2:

( )

(

2

)

4 *sin 2 m d f t Amp πυt = + Φ (4.10)

dove Amp è l’ampiezza, υ è la frequenza e Φ la fase; d è il diametro della membrana riflettente. Vediamo quindi come interpretare questi parametri nella gestione dello specchio.

(17)

Una variazione dell’ampiezza determina una cambiamento delle focali raggiungibili durante un periodo della sinusoide. Più Amp sale minori saranno le focali raggiunte, maggiore sarà l’ampiezza dell’oscillazione dello specchio. L’argomento della funzione seno, costituito da due termini uno regolato dal valore della frequenza l’altro da quello della fase, stabilisce, appunto, la frequenza con la quale ci spostiamo tra i due piani focali. In particolare, il valore della fase permette di avere una regolazione fine nel controllo, in modo che, dopo un calcolo preliminare del segnale di curvatura (impostando Amp e υ ), che sarà adesso ragionevolmente molto vicino al valore nullo, si possano correggere anche le minime variazioni introdotte dall’atmosfera.

Figura

Figura 4.1: Schema a blocchi della McASP.
Figura 4.2: Andamento dei segnali AHCLKX, AFSX e AXR0 della  McASP misurati sul connettore micro-line
Figura 4.3: Architettura del sintetizzatore digitale di frequenza.
Figura 4.4: Segnale uscente dalla scheda audio. In blu e verde i segnali  dei singoli canali, in rosso il segnale differenziale
+5

Riferimenti

Documenti correlati

La cappella dell’Addolorata presenta segni di degrado evidenti sia sulla volta che sulle pareti laterali, a cui sarà necessario porre rimedio con interventi mirati.. Al di là

[r]

La misurazione delle forze di reazione del terreno durante la corsa degli scarafaggi, ha dimostrato che le loro zampe agiscono principalmente come elementi di propulsione e che la

Una particella d’aria raggiunta dal suono del diapason si muove con un particolare moto periodico: il moto armonico.. Ecco ora alcune idee essenziali sul moto armonico e la

Among major economies, debt is the main factor responsible for low growth, an issue that hits both public and private (households and businesses) accounts.. Deleveraging has

The fact that interaction is much more frequent in A than in C may be driven by a solidarity effect (t-consumers reward t-sellers’ tax-honesty in A by increasing their

Se l’uso di rame arsenicale dovesse essere confermato da nuove analisi su materiali da scavo e di sicura attribuzione Qijia, troverebbe un ulteriore elemento di sostegno l’ipotesi

Altre attività di cui si occupa il sistema sanitario italiano sono: la tutela dell’infanzia e della maternità; l’educazione alla salute nei bambini e negli adolescenti