Università degli Studi di Napoli - infn.it L’o ietti Ào è studiare dei fenomeni riguardanti i...
Transcript of Università degli Studi di Napoli - infn.it L’o ietti Ào è studiare dei fenomeni riguardanti i...
Università degli Studi di Napoli
Federico II
FACOLTÀ DI SCIENZE MM. FF. NN.
Corso di Laurea Specialistica in Fisica
Tesi di Laurea
Implementazione di encoder/decoder SpaceWire e
realizzazione del sistema di monitoring della CLK
Board per la missione EUSO Balloon
Relatori: Candidata:
Prof. Alberto Aloisio Grazia Scognamiglio
Dott. Giuseppe Osteria matr. N94/88
Correlatore:
Prof. Sergio Cavaliere
Anno Accademico 2011-2012
2
3
Indice
Introduzione
Capitolo I
1. I raggi cosmici ............................................................................................................ 11
2. Lo spettro energetico ................................................................................................ 12
4. Composizione chimica .............................................................................................. 15
4. Isotropia dei raggi cosmici ........................................................................................ 16
5. Bilancio energetico e origine dello spettro di potenza ............................................. 18
6. Origine e propagazione dei raggi cosmici ................................................................. 19
6.1. Modelli bottom-up ................................................................................................. 21
6.2. Modelli top-down ................................................................................................... 21
6.2.1. Il meccanismo di Fermi I ........................................................................... 23
7. L’effetto GZK ............................................................................................................. 26
8. Gli sciami atmosferici estesi (EAS) ............................................................................ 30
8.2. Modello di Heitler ............................................................................................. 33
8.3. Modello di sovrapposizione per le cascate adroniche ...................................... 36
9. Emissione di radiazione nello sviluppo degli EAS ..................................................... 37
9.2. Luce di fluorescenza .......................................................................................... 37
9.3. Radiazione Cherenkov....................................................................................... 38
10. Tecniche di rivelazione degli UHECR ..................................................................... 39
10.2. Array di rivelatori a terra .............................................................................. 39
10.3. Rivelatori di luce di fluorescenza .................................................................. 41
10.4. Rivelatori radio e rivelatori acustici .............................................................. 42
11. I limiti della rivelazione al suolo ............................................................................ 42
4
Capitolo II
1. L’osservatorio JEM-EUSO .......................................................................................... 44
1.1. Principi di osservazione ..................................................................................... 48
1.2. Descrizione dell’apparato sperimentale ........................................................... 50
1.3. Il telescopio per rivelare gli UHECR ................................................................... 52
1.4. L’elettronica di JEM-EUSO................................................................................. 57
1.5. L’unità di elaborazione dei dati ......................................................................... 66
2. L’esperimento EUSO-Balloon .................................................................................... 70
2.1. Gli obiettivi di EUSO-Balloon ............................................................................. 71
2.2. Panoramica dell’esperimento ........................................................................... 73
2.3. Architettura di EUSO-Balloon ........................................................................... 76
Capitolo III
1. La trasmissione dell’informazione digitale ............................................................... 78
1.1. Ridondanza dell’informazione .......................................................................... 79
1.2. Rivelazione e correzione degli errori di trasmissione ....................................... 80
2. I protocolli di comunicazione .................................................................................... 84
2.1. Suddivisione dei protocolli ................................................................................ 87
3. I protocolli di comunicazione adottati dal Data Processor di JEM-EUSO ed EUSO-
Balloon .............................................................................................................................. 88
3.1. Il protocollo SpaceWire ..................................................................................... 91
3.2. Il protocollo SPI ............................................................................................... 105
Capitolo IV
1. I vantaggi della progettazione su FPGA .................................................................. 110
5
1.1. Il flusso di progetto di una FPGA ..................................................................... 111
1.2. L’evaluation board Virtex-5 della Xilinx .......................................................... 114
1.3. L’ambiente di sviluppo ISE .............................................................................. 117
1.4. EDK: il tool di progettazione di sistemi embedded ......................................... 118
1.4.1. Xilinx Platform Studio (XPS)..................................................................... 119
1.4.2. Software Development Kit (SDK) ............................................................. 121
2. Implementazione di codificatori e decodificatori del protocollo SpaceWire ......... 122
2.1. Il ricevitore e il trasmettitore .......................................................................... 123
2.2. Le interfacce .................................................................................................... 124
2.3. Ricezione e trasmissione ................................................................................. 124
3. Implementazione di una logica di monitoring dei parametri vitali della clock board
127
3.1. Il MicroBlaze di EDK .................................................................................... 128
3.2. Il System Monitor ............................................................................................ 128
3.2.1. Il sensore di temperatura ........................................................................ 132
3.2.2. Il sensore delle tensioni di alimentazione ............................................... 133
3.3. L’IP Core SPI ..................................................................................................... 134
Capitolo V
1. Verifica del funzionamento di ricevitore e trasmettitore SpaceWire ..................... 137
1.1. Simulazione comportamentale ....................................................................... 137
1.2. Verifica hardware del funzionamento di un sistema costituito da un ricevitore
e un trasmettitore ....................................................................................................... 140
1.2.1. Debouncing dei push button ................................................................... 153
1.2. Un sistema più elaborato ..................................................................................... 156
2. Monitoring dei parametri vitali della CLK Board: System Monitor e protocollo SPI
157
2.1. L’acquisizione dei dati dal SysMon ................................................................. 160
2.2. Verifica del funzionamento dello slave SPI ..................................................... 161
6
2.3. Inviare i dati del SysMon mediante protocollo SPI ......................................... 167
2.4. Il test con Arduino ........................................................................................... 170
Conclusioni
Bibliografia
7
Introduzione
Il presente lavoro è stato svolto nell’ambito del progetto di ricerca del gruppo di Napoli
JEM-EUSO e ha avuto come scopo la realizzazione hardware di dispositivi comunicanti
mediante i protocolli di comunicazione stabiliti dalle missioni.
JEM-EUSO è un ambizioso progetto portato avanti dalle più importanti agenzie spaziali
internazionali, svolto in collaborazione con oltre 70 gruppi di ricerca in tutto il mondo.
L’obiettivo è studiare dei fenomeni riguardanti i raggi cosmici di altissima energia
(UHECR, acronimo di Ultra High Energy Cosmic Rays), particelle cariche provenienti dal
cosmo che raggiungono la Terra con
energie superiori a 1018 eV.
Il flusso dei raggi cosmici è una
funzione decrescente dell’energia
secondo una legge di potenza il cui
andamento è mostrato in Figura 1.
La difficoltà principale che si è
incontrata finora nella rivelazione
degli UHECR è dovuta al bassissimo
flusso caratteristico delle particelle
con energie superiori a 1018 eV. In
corrispondenza di questo valore,
detto “energia di caviglia”, il flusso
è pari a circa 1 particella per km2
Figura 1 Flusso dei raggi cosmici in funzione dell’energia. Assume un valore elevato per le particelle poco energetiche, ma diminuisce all’aumentare dell’energia.
8
all’anno e diminuisce se si prendono in considerazione energie più elevate.
Il telescopio JEM-EUSO raccoglierà informazioni circa la composizione, la direzione di
arrivo e l’energia di queste particelle, al fine di dare risposta ai grandi quesiti che le
riguardano circa l’origine, le sorgenti e i meccanismi di propagazione, fornendo una
mole di dati sperimentali superiore a quella degli apparati attualmente in funzione.
Questo sarà possibile perché JEM-EUSO sarà posizionato sulla Stazione Spaziale
Internazionale e acquisirà le informazioni desiderate da una prospettiva diversa rispetto
a quella degli esperimenti al suolo utilizzati fino ad oggi.
I raggi cosmici di energie elevatissime richiedono delle tecniche di rivelazione indirette,
in cui la ricerca è focalizzata sul risultato dell’interazione delle particelle primarie con
l’atmosfera terrestre. Uno sciame atmosferico esteso (EAS) consiste in una cascata di
particelle secondarie provocata dal passaggio di un UHECR. Un EAS si sviluppa attraverso
l’atmosfera fino a raggiungere una profondità massima dipendente dall’energia, dalla
massa, dal numero atomico e dal numero di massa del raggio cosmico primario. Le
particelle secondarie generate nello sviluppo di un EAS sono rivelabili in quanto
emettono luce di fluorescenza o Cherenkov di intensità proporzionale all’energia del
raggio primario e all’angolo che ne identifica la direzione di moto rispetto allo zenit.
JEM-EUSO rivelerà le radiazioni UV generate dagli EAS, utilizzando un telescopio
costituito da un sistema ottico a lenti di Fresnel e una superficie focale formata da
moduli di fotorivelatori (PDM). Tutti i segnali acquisiti saranno distinti dal rumore di
fondo e dagli eventi non interessanti mediante il passaggio attraverso vari livelli di
trigger prima di essere elaborati e inviati alla CPU principale per le manipolazioni
successive. L’ultimo livello di trigger, coincidente con lo stadio finale dell’acquisizione di
un evento interessante, avviene nelle Cluster Control Board, i quali ricevono i dati dai
PDM, li selezionano e li inviano alla CPU.
Un sistema elettronico così elaborato richiede la presenza di una logica dedicata alla
gestione dei segnali di cadenza e un’altra per il monitoraggio dei vari sottosistemi.
La scheda di clock, o CLK Board, ha il compito di generare i segnali di clock e distribuirli ai
dispositivi elettronici. Effettua, inoltre, le misure di tempo vivo e tempo morto dei
9
rivelatori e implementa l’interfaccia con il GPS, il quale contribuisce a fornire le
informazioni temporali associate agli eventi UHECR.
Il sistema di Housekeeping, invece, ha il compito di monitorare e inoltrare comandi di
controllo ai vari sottosistemi di JEM-EUSO. Questo modulo può rivelare guasti,
malfunzionamenti, generare allarmi e avviare operazioni di sicurezza, quando
necessario.
È indispensabile che i vari moduli della logica di acquisizione dei dati di JEM-EUSO
comunichino tra loro nella modalità più sicura e affidabile, utilizzando i protocolli di
comunicazione ritenuti più adatti a soddisfare determinate esigenze. La CPU principale
riceve i dati dalle CCB e dalla CLK Board mediante un protocollo di comunicazione
standard sviluppato appositamente per le applicazioni spaziali, che prende il nome di
SpaceWire. Il modulo di Housekeeping, invece, acquisisce informazioni relative ai
parametri di funzionamento vitali della CLK Board tramite un protocollo seriale a bassa
velocità molto diffuso, noto come SPI (Serial Peripheral Interface).
Il lancio di JEM-EUSO è previsto per il 2017, anche se è in corso lo sviluppo di un
prototipo più piccolo ma con una struttura complessiva molto simile a quella del
telescopio. Il nome della missione è EUSO Balloon e, come suggerisce il nome, il
prototipo di JEM-EUSO effettuerà dei voli su un pallone stratosferico al fine di verificare
il funzionamento dei componenti principali ed effettuare le prime misure. Il primo volo
di EUSO Balloon è previsto per il 2014.
Il gruppo JEM-EUSO di Napoli ha il compito di realizzare la CLK Board per la missione
JEM-EUSO e l’intero sistema di acquisizione ed elaborazione dei dati di EUSO Balloon.
L’obiettivo di questa tesi è stata la realizzazione di trasmettitori e ricevitori di
informazioni secondo i protocolli SpaceWire o SPI, attraverso i quali la CLK Board potrà
comunicare le informazioni GPS relative all’evento, assieme alle misure di tempo vivo e
tempo morto, alla CPU e i valori dei parametri di funzionamento più importanti della
scheda al sistema di Housekeeping.
Ciò è stato possibile mediante l’utilizzo di FPGA, dispositivi logici programmabili con un
codice scritto in linguaggi di descrizione dell’hardware HDL. In entrambi i casi, per
10
verificare la comunicazione è stato necessario implementare un ricevitore e un
trasmettitore su due evaluation board e collegarli fisicamente mediante dei cavi.
La realizzazione dei due progetti è stata profondamente diversa.
Per l’implementazione di ricevitore e trasmettitore SpaceWire è stato utilizzato come
punto di partenza un open core dalle caratteristiche assolutamente generiche, scritto in
linguaggio VHDL, a cui sono state apportate le necessarie modifiche e aggiunti dei
componenti per facilitare le operazioni di lettura e scrittura delle informazioni
scambiate.
L’altro progetto ha richiesto la realizzazione di una logica che fosse in grado, oltre che di
trasmettere e ricevere dati mediante protocollo SPI, di effettuare le misure relative a
temperatura e tensioni di alimentazioni della CLK Board.
Attraverso un componente hardware caratteristico delle FPGA che saranno utilizzate
nella missione EUSO Balloon, è stato realizzato un sistema che acquisisce i parametri
vitali della CLK Board e li invia tramite le linee del collegamento SPI su richiesta di un
interlocutore che funge da master.
La presente tesi si articola in cinque capitoli.
Il primo capitolo introduce l’obiettivo di ricerca di JEM-EUSO, illustrando provenienza,
composizione, meccanismi di accelerazione e tecniche di rivelazione dei raggi cosmici,
con particolare attenzione alla tematica degli UHECR.
Nel secondo capitolo sono analizzati gli obiettivi scientifici di JEM-EUSO, sono descritti
dettagliatamente i principi di funzionamento del telescopio e i suoi componenti
principali.
Nel terzo capitolo è esposta l’importanza di utilizzare protocolli di comunicazione
adeguati all’interno di un sistema complesso. Sono, inoltre, presentati i due protocolli
oggetto del mio lavoro: lo SpaceWire e lo SPI.
Nel quarto capitolo sono descritti i dispositivi e le tecniche di progettazione adottati, i
tool e i core di cui si è fatto uso.
Nel quinto capitolo sono presentate le operazioni effettuate per verificare il
funzionamento dei dispositivi hardware progettati.
11
Capitolo I
Questa tesi è stata svolta nell’ambito della missione JEM-EUSO, un telescopio spaziale
che avrà lo scopo di raccogliere dati sperimentali circa i raggi cosmici di altissime energie
(UHECR).
In questo capitolo, sarà descritto lo stato di conoscenze attuale riguardo queste
particelle, saranno presentate le teorie elaborate per spiegare la loro origine e
propagazione, e saranno esposte le tecniche di rivelazione utilizzate dagli apparati
sperimentali attualmente in attività.
1. I raggi cosmici
I raggi cosmici sono particelle e nuclei atomici di alta energia che colpiscono la Terra da
ogni direzione; come dice il nome stesso, provengono dal cosmo, cioè dallo spazio che ci
circonda.
L’esistenza dei raggi cosmici fu scoperta dal fisico tedesco Victor Hess agli inizi del
ventesimo secolo [1]. All’epoca, gli scienziati si trovavano di fronte ad un problema che
non riuscivano a spiegare: sembrava che nell’ambiente ci fosse molta più radiazione di
quella che poteva essere prodotta dalla radioattività naturale. Nel 1923, Hess caricò su
un pallone aerostatico un elettroscopio a foglie e verificò sperimentalmente che la
quantità di particelle cariche, e quindi di radiazione, aumentava con l’altitudine: questo
significava che la radiazione sconosciuta non aveva origine terrestre, come la
12
radioattività naturale, ma proveniva dallo spazio esterno. Per questa sua scoperta, Hess
ricevette il premio Nobel nel 1936.
Dal 1920 al 1950, i raggi cosmici furono di estrema importanza per la fisica delle alte
energie, in quanto hanno costituito una sorgente naturale di particelle, spesso
sconosciute; proprio il loro studio portò, nel 1936, Carl Anderson alla scoperta del
positrone [2] e del muone [3].
Da misure fatte su palloni aerostatici a grande altitudine o su satelliti, si è scoperto che i
raggi cosmici sono costituiti da protoni (circa 90%), da nuclei di elio (circa 10%), e da una
piccolissima percentuale di elettroni, fotoni, neutrini e particelle esotiche; la loro energia
cinetica si estende per oltre 12 ordini di grandezza, fino a raggiungere e superare i 1020
eV.
Il numero di particelle cariche, di provenienza cosmica, che raggiungono la Terra, è
funzione decrescente dell’energia. Per energie basse (al di sotto di 1014 eV), quindi, il
flusso dei raggi cosmici primari è elevato ed è possibile effettuare misure mediante
l’utilizzo di palloni aerostatici e satelliti. E’ molto difficile, invece, riuscire ad osservare
raggi cosmici con energie superiori a 1015 eV e, per avere un’adeguata statistica, è
necessario disporre di superfici molto estese: a tale scopo, vengono utilizzati rivelatori al
suolo, che non consentono, però, di rivelare i raggi cosmici primari, ma esclusivamente
quelli secondari originati dall’interazione con l’atmosfera, rendendo necessaria una
ricostruzione indiretta delle informazioni riguardanti le particelle primarie.
2. Lo spettro energetico
In Figura 2, è riportato lo spettro energetico dei raggi cosmici che raggiungono la Terra:
esso si estende per oltre 12 ordini di grandezza e arriva a sfiorare i 1021 eV. Il flusso può
variare da 200 particelle per metro quadro per secondo, per le energie più basse, fino a
una particella per chilometro quadro per secolo, per energie più elevate (E ≈ 1020 eV).
Durante la loro accelerazione e propagazione nel mezzo interstellare, costituito
principalmente da idrogeno con densità di 1 atomo/cm3, i raggi cosmici perdono tutti gli
13
elettroni e raggiungono l’atmosfera terrestre sotto forma di nuclei completamente
ionizzati, le cui traiettorie, pertanto, risentono dei campi magnetici galattici.
Per energie minori o uguali a 108 eV, il flusso rimane quasi costante: le particelle, infatti,
non riescono neanche ad entrare nel sistema solare proprio a causa delle deflessioni
indotte dal campo magnetico interplanetario.
Nella regione che va da 108 eV fino a 1010 eV, lo spettro presenta una significativa
correlazione con i venti solari, in quanto anch’essi causano deflessioni magnetiche, e
risulta fortemente ridotto nei periodi di intensa attività solare.
Per energie maggiori di 109 eV, il flusso è indipendente dal tempo e non si osservano più
correlazioni con l’attività solare.
Lo spettro può essere descritto da una legge di potenza:
dove il parametro γ, detto indice spettrale, è funzione di E e può assumere i seguenti
valori:
γ ≈ 2.7 per energie inferiori a 1015 eV,
γ ≈ 3 per energie comprese tra 1015 eV e 1017 eV,
γ ≈ 3.2 per energie comprese tra 1017 eV e 1018 eV,
γ ≈ 2.6 per energie superiori ai 1018 eV.
Analizzando la forma dello spettro, è possibile verificare la presenza di tre punti in
corrispondenza dei quali la pendenza subisce una variazione.
1. Primo ginocchio, per E ≈ 3 ∙ 1015 eV.
Poiché i raggi cosmici che possiedono questa energia sono confinati all’interno
del campo magnetico galattico, le loro sorgenti si trovano probabilmente
all’interno della Via Lattea. Le principali spiegazioni per il cambiamento di
pendenza possono essere la perdita di efficienza dei meccanismi di produzione o
la ridotta capacità del campo magnetico galattico di confinarli.
2. Secondo ginocchio, per E ≈ 4 ∙ 1017 eV.
Il secondo ginocchio potrebbe essere dovuto a un cambiamento delle particelle
primarie [4] o a un inizio della transizione tra sorgenti galattiche a
extragalattiche.
14
3. Caviglia, per E ≈ 3 ∙ 1018 eV.
E’ probabilmente il risultato del passaggio da una popolazione di raggi cosmici di
origine prevalentemente galattica ad una di origine prevalentemente
extragalattica.
Figura 2: Il flusso dei raggi cosmici che raggiungono la Terra in funzione dell’energia.
Come conseguenza dell’interazione con la radiazione cosmica di fondo, è previsto anche
un altro cambiamento di pendenza, per energie superiori a 5 ∙ 1019 eV, che prende il
nome di soppressione GZK. L’estrema rarità degli eventi, tuttavia, rende difficile
determinare chiaramente lo spettro in questa regione a causa dell’incertezza statistica.
15
4. Composizione chimica
I raggi cosmici contengono tutti i nuclei degli elementi presenti nella tavola periodica,
dall’idrogeno all’uranio. Essi rappresentano l’unico campione di elementi della Galassia
direttamente osservabile dal sistema solare e contengono informazioni circa
l’evoluzione delle Stelle, la struttura e i meccanismi di sistemi in grado di accelerare
particelle cariche ad alte energie e le proprietà del mezzo interstellare o intergalattico
che attraversano.
In Figura 3, sono riportate le abbondanze relative dei raggi cosmici e quelle solari: le due
curve sono molto simili, a parte un eccesso, nei raggi cosmici, di elementi leggeri (Li, Be,
B) e di elementi con numero atomico poco inferiore a quello del ferro. Questa
somiglianza porta ad interpretare i raggi cosmici come un campione dei prodotti della
nucleosintesi stellare, modificato dall’interazione con il mezzo interstellare durante la
propagazione nella Galassia.
A energie inferiori a 1014 eV, la composizione chimica dei raggi cosmici è stata misurata
direttamente mediante l’utilizzo di rivelatori posti al di sopra dell’atmosfera terrestre, e
risulta essere molto simile a quella del mezzo interstellare [5][6]. Per energie superiori,
l’osservazione dei raggi cosmici non può avvenire direttamente, ma attraverso solo lo
studio di sciami atmosferici estesi (EAS).
La composizione chimica dei raggi cosmici può fornire informazioni anche
sull’andamento dello spettro energetico. Al fine di spiegare il cambiamento di pendenza
nella regione della caviglia, sono stati avanzati tre modelli che richiedono ipotesi sulla
composizione dei raggi cosmici alla sorgente.
Dip model
Secondo il dip model [7], i raggi cosmici extragalattici sono protoni alla sorgente e le
caratteristiche dello spettro possono essere spiegate in termini dei processi di
interazione che avvengono durante la propagazione verso la Terra.
16
Figura 3: Abbondanze relative dei raggi cosmici (linea nera) e dei raggi solari (linea blu).
Modello a composizione mista
Il modello a composizione mista [8] parte dall’ipotesi che la composizione dei raggi
cosmici extragalattici sia uguale a quella misurata nella nostra galassia a basse energie.
Ciò richiederebbe sorgenti galattiche con un’energia di accelerazione massima superiore
a quella prevista nel dip model.
Modello tradizionale
Nel modello tradizionale [9], la caviglia è dovuta all’intersezione di una componente
extragalattica appiattita e una componente galattica ripida. In questo caso, lo spettro
dei raggi cosmici galattici si estenderebbe fino a raggiungere energie pari a diversi EeV.
4. Isotropia dei raggi cosmici
Oltre che dallo spettro e dalla composizione, è possibile ottenere informazioni sui
meccanismi di origine e propagazione dei raggi cosmici anche dalla loro direzione di
17
arrivo, quando le energie non sono basse e gli effetti del campo magnetico galattico non
ne impediscono lo studio.
Il contributo solare allo spettro dei raggi cosmici è trascurabile ad energie superiori ai
GeV; ciò vuol dire che tutta la radiazione cosmica osservata ad energie più elevate
proviene dallo spazio interstellare.
Una volta entrati nell’eliosfera, le particelle di più bassa energia, tipicamente E ≤ 10
GeV/nucleone, sono soggette a una modulazione del flusso dovuta all’interazione con i
venti solari (effetto che scompare a energie superiori) e a una randomizzazione della
direzione di arrivo causata dal campo magnetico interplanetario.
Simulazioni della propagazione dei raggi cosmici nell’eliosfera mostrano che, anche alle
energie del TeV/nucleone, la direzione di arrivo sulla Terra è diversa da quella di
ingresso nell’eliosfera. Infatti, il raggio di curvatura nel campo magnetico interplanetario
(≈ 10 μG) di un protone da 1 TeV è circa 20 volte la distanza media Terra-Sole (≈ 1.5 ∙
1011 m). Ad energie maggiori di 10 TeV/nucleone, l’eliosfera è praticamente trasparente,
per cui, se i raggi cosmici si propagassero liberamente nella Galassia, la loro
distribuzione dovrebbe essere altamente anisotropa, con direzioni di provenienza
concentrate sul piano galattico, in particolare verso il centro galattico.
Per le energie superiori a 1016 eV, definendo Imax e Imin, rispettivamente, l’intensità
massima e quella minima dei raggi cosmici sulla sfera celeste, l’anisotropia osservata δ è
definita dalla relazione:
Poiché, quindi, maggiore è l’energia delle particelle, minore è la differenza tra la
direzione di arrivo e quella di origine, i raggi cosmici con energia elevata raggiungono
l’atmosfera terrestre indisturbati, in quanto l’elevata energia fa sì che i campi magnetici
galattici ed extragalattici non possano deviarne la direzione. Giunti nell’atmosfera
terrestre, esiste una probabilità elevata di interazione con le molecole di gas che la
compongono, con conseguente generazione di EAS.
Tuttavia, i dati raccolti fino ad oggi non sono sufficienti per affermare con certezza
l’anisotropia della direzione di arrivo di queste particelle.
18
5. Bilancio energetico e origine dello spettro di potenza
Supponendo la radiazione cosmica isotropa, detta I l’intensità della radiazione, la densità
N(E) di particelle con velocità v si può esprimere come:
mentre la densità di energia ρE locale, cioè alla Terra, risulta:
Assumendo questo valore rappresentativo della densità di energia in tutta la Galassia, la
potenza necessaria a sostenere il flusso dei raggi cosmici osservato è:
dove VD è il volume del disco galattico:
e τ ≈ 3 ∙ 106 anni è il tempo di confinamento nella Galassia.
In Tabella 1 è riportata la potenza stimata delle emissioni più rappresentative della
Galassia. La luminosità dei raggi cosmici è seconda solo a quella emessa nel visibile.
Sorgente Potenza (erg/s) Onde radio-micronde 3 ∙ 1038
Radiazione ottica 1044
Radiazione X 2 ∙ 1039
Radiazione γ (> 70 MeV) 2 ∙ 1039
Radiazione cosmica 5 ∙ 1040
Tabella 1: Potenza stimata delle emissioni più rappresentative della Galassia.
I raggi cosmici costituiscono, dunque, una delle componenti principali della Galassia, con
una densità di energia confrontabile con quella di altre grandezze, come mostrato in
Tabella 2.
19
Componenti Densità di energia
(eV/cm3) Raggi cosmici 1
Campo magnetico 0.2 0.8
Radiazione visibile 0.6
Radiazione di fondo 0.265
Gas interstellare 1
Tabella 2: Densità di energia di alcune componenti galattiche.
Si è visto che la distribuzione di energia segue la legge di potenza:
e non una legge di distribuzione maxwelliana, come ci si aspetterebbe per una
popolazione di particelle classiche che ha raggiunto l’equilibrio termodinamico a
temperatura T:
In generale, le distribuzioni di energia che seguono una legge di potenza descrivono
particelle che non si trovano in equilibrio termico. L’origine di distribuzioni di questo tipo
va ricercata nei processi stocastici che accelerano le particelle fino ad elevate energie
attraverso una successione di piccoli incrementi di energia. Il guadagno energetico è
determinato da una serie di eventi casuali non correlati tra loro in cui sistemi con
elevata energia cinetica interagiscono con le singole particelle cosmiche. A causa della
grande energia di questi sistemi, l’equilibrio non è mai raggiunto e vi è un continuo
flusso di energia alle particelle.
6. Origine e propagazione dei raggi cosmici
L’ipotesi più accreditata circa l’origine dei raggi cosmici è che essi vengano prodotti in
oggetti cosmici attivi, sia all’interno della Galassia (pulsar, supernovae) che all’esterno
20
(AGN, quasar, radiogalassie). I raggi cosmici raggiungono l’atmosfera terrestre dopo aver
attraversato il mezzo interstellare galattico e, in alcuni casi, quello extragalattico, che
sono costituiti da nuvole di gas (tipicamente idrogeno) ionizzati dai venti stellari. A
influenzare la propagazione dei raggi cosmici ci sono anche i campi magnetici delle
galassie e la radiazione cosmica di fondo.
Note la distribuzione di massa, le sezioni d’urto dei processi di spallazione1 e la densità
di particelle nel mezzo interstellare, dai dati forniti dagli esperimenti in acceleratori di
particelle è possibile stimare lo spessore di materiale interstellare attraversato dai raggi
cosmici: si conclude che, per riprodurre i dati osservati, è necessario che sia attraversata
una quantità di materia L0 ≈ 10 g/cm3. Se ρn ≈ 1 protone/cm3 è la densità del mezzo
interstellare e mp è la massa del protone, il cammino libero medio percorso dai raggi
cosmici nella Galassia è:
A basse energie (E < 1014 eV), i risultati ottenuti fino ad oggi suggeriscono che l’origine
dei raggi cosmici sia galattica, nonostante lo spessore della Via Lattea sia pari a soli 0.3
kpc. Infatti, una particella con carica Ze e impulso p, in moto nel campo magnetico
galattico B, ha un raggio di curvatura dato dalla relazione di Larmor:
Il confinamento magnetico dei raggi cosmici è efficiente solo se ρ è minore del raggio
della Galassia.
Oltre 1015 eV, tra il primo ginocchio e la caviglia, le varie ipotesi includono sia sorgenti
galattiche che extragalattiche.
Intorno alla caviglia e per energie superiori, il valore del raggio di Larmor, che, al
crescere dell’energia, diventa maggiore delle dimensioni della Galassia, è tale da far
supporre dominante la componente extragalattica. Per spiegare l’accelerazione dei raggi
1 La spallazione è il processo tramite il quale un nucleo pesante viene frammentato in nuclei più
leggeri in seguito a una collisione con una particella di energia molto elevata, che colpisce tutto
quello che incontra lungo il suo tragitto.
21
cosmici di altissima energia, sono state formulate numerose teorie, divise in due
tipologie: bottom-up o top-down.
6.1. Modelli bottom-up
Secondo i modelli bottom-up, i raggi cosmici sono prodotti e accelerati in sorgenti
astrofisiche.
Il potere di accelerazione di una sorgente dipende fortemente dalla sua estensione R e
dal campo magnetico B presente al suo interno. L’energia massima è pari a quella di una
particella il cui raggio di Larmor sia delle dimensioni della sorgente stessa:
dove βc è la velocità caratteristica del centro di scattering magnetico.
Una particella che supera questa energia non può essere confinata nella regione di
accelerazione e viene emessa nel mezzo interstellare. Il plot di Hillas, mostrato in Figura
4, illustra l’intensità del campo magnetico B in funzione delle dimensioni R della
sorgente, consentendo di porre dei vincoli: infatti, solo poche sorgenti astrofisiche,
come i nuclei galattici attivi, gli hot spot delle radio galassie, i gamma ray burst, o le
stelle di neutroni, possono soddisfare queste condizioni.
Oltre ai meccanismi di accelerazione, sono presenti anche dei meccanismi di perdita. Di
conseguenza, l’energia massima che può essere trasferita dipende dal bilancio tra il
processo di accelerazione e la perdita di energia di particelle, ovvero dalla situazione
locale.
6.2. Modelli top-down
Le teorie top-down assumono che le particelle primarie, sia quelle cariche che quelle
neutre, derivino dal decadimento di particelle elementari X supermassive (con massa
superiore a 1021 eV).
22
Secondo questo modello, le particelle X decadono in quark e leptoni; i quark producono
getti di adroni costituiti principalmente da pioni e, in piccola percentuale, da nucleoni; i
pioni decadono in fotoni, muoni, neutrini ed elettroni.
Figura 4: Intensità del campo magnetico in funzione delle dimensioni della sorgente su scala logaritmica.
In generale, i modelli top-down prevedono una componente dominante di fotoni alle
alte energie: un test cruciale consiste, quindi, nel misurare la frazione di fotoni presente
nei raggi cosmici primari.
Le sorgenti di particelle X potrebbero essere difetti topologici, come monopoli magnetici
o stringhe cosmiche, originati nelle transizioni di fase dell’universo primordiale: sono,
infatti, stabili, e possono sopravvivere a lungo con le particelle X intrappolate al loro
interno. Altre possibili sorgenti potrebbero essere particelle supermassive con una vita
media più lunga dell’età dell’universo.
23
6.2.1. Il meccanismo di Fermi I
Attualmente, il meccanismo più accreditato per spiegare l’accelerazione delle particelle
cariche a energie molto alte è di tipo bottom-up ed è stato proposto da Fermi nel 1949
[9]. Secondo questo modello, le particelle sono accelerate gradualmente tramite
collisioni con plasma magnetizzato in movimento.
Dopo un urto, una particella in moto attraverso una nuvola magnetica incrementa la
propria energia di una quantità proporzionale alla propria energia iniziale E0 [11]:
Dopo n collisioni, l’energia della particella risulta:
Detta Pesc la probabilità di fuga dal sistema della particella ad ogni ciclo di accelerazione,
la probabilità Pn che la particella sia ancora nel sito dopo n urti è:
Se N0 è il numero di particelle presenti all’istante iniziale nella regione di accelerazione,
dopo n collisioni il numero di particelle che fuoriesce dalla regione con energia En è:
Ponendo
nel limite , si ottiene
Da quest’ultima equazione è possibile ricavare lo spettro differenziale di energia:
che è una relazione del tutto analoga a quella osservata sperimentalmente.
24
Indicando con Tcycle il tempo caratteristico di un ciclo di accelerazione e con Tesc il tempo
dopo il quale la particella fuoriesce dalla regione di accelerazione, si ha che il numero
massimo di urti è:
e l’energia massima trasferibile alla particella si può riscrivere come:
E’ evidente che, se la sorgente di raggi cosmici ha una vita breve, o se le particelle
riescono ad allontanarsi dalla regione di accelerazione dopo breve tempo, l’energia
massima trasferibile ai raggi cosmici tramite meccanismo di Fermi è piuttosto limitata.
Fermi considerò come possibili siti di accelerazione delle nubi di gas magnetizzato. Si
consideri una particella con energia E1 rispetto al sistema di riferimento del laboratorio
che entra in una disuniformità del campo magnetico con un angolo θ1 rispetto alla
direzione di moto relativo particella-nube (Figura 5).
Nel sistema di riferimento solidale alla nuvola magnetizzata, l’energia della particella è:
dove v = βc è la velocità della nube e γ il fattore di Lorentz. Se i processi di urto
all’interno della nuvola sono elastici, l’energia si conserva e l’energia in uscita è
uguale a . Nel sistema di riferimento del laboratorio, si ha, quindi:
con angolo di uscita dalla nuvola nel sistema ad essa solidale. Nell’ipotesi di β 1,
integrando sull’angolo θ, si ottiene che, nel sistema di riferimento del laboratorio, il
guadagno energetico della particella è:
Il modello appena descritto riproduce correttamente l’andamento a legge di potenza
dello spettro, ma, sostituendo i valori tipici per Tesc, Tcycle e β, si ottiene γ ≈ 30, in forte
disaccordo con il valore sperimentale. Poiché, inoltre, β ≈ 10-2, il ΔE è piccolo e l’intero
meccanismo risulta poco efficiente.
25
La teoria originariamente proposta da Fermi è nota come Fermi I ed è stata perfezionata
nel corso degli anni, tenendo conto delle onde d’urto che si generano nelle esplosioni di
supernovae e in altri processi astrofisici.
Figura 5: Una particella con energia E1 nel sistema di riferimento del laboratorio entra in una disuniformità del campo magnetico con un angolo θ1 rispetto alla direzione di moto relativo tra particella e nube; ne esce
con energia E2 con un angolo θ2.
Il modello perfezionato è noto come meccanismo di Fermi II e prevede che
l’accelerazione delle particelle avvenga in corrispondenza dei fronti d’onda piani in moto
nel mezzo interstellare con velocità supersonica (Figura 6).
In questo caso, il guadagno medio di energia dipende linearmente dal β del fronte
d’onda:
Oltre ad essere un meccanismo più efficiente, risulta γ ≈ 2, compatibile con il valore
misurato.
Anche il modello di Fermi II è semplificato, in quanto non tiene conto della perdita di
energia sia nella sorgente che durante la propagazione; esso non descrive l’arrivo sulla
Terra di raggi cosmici con energie superiori a 1020 eV.
26
Figura 6: Meccanismo di Fermi II: interazione con un’onda d’urto (shock).
7. L’effetto GZK
Poco dopo la scoperta della radiazione cosmica di fondo (CMB), Greisen [12] e,
indipendentemente, Zatsepin e Kuzmin [13] teorizzarono l’interazione dei raggi cosmici
di altissima energia (UHECR, acronimo di Ultra High Energy Cosmic Rays) con i fotoni
della radiazione fossile; in particolare, predissero un cut-off nello spettro all’energia
critica di 7 ∙ 1019 eV, provocato da una soppressione del flusso di raggi cosmici dovuta
alla collisione con i fotoni della CMB.
Un protone, la cui energia superi i 50 EeV, interagisce in maniera anelastica con i fotoni
che costituiscono la radiazione cosmica di fondo: si ha, così, la produzione di pioni,
secondo i due canali di decadimento:
L’energia di soglia è data dalla relazione:
dove є è l’energia del fotone, mp è la massa del protone e mπ la massa del pione. Per є
dell’ordine di 10-3 eV, si ha il valore di 7 ∙ 1019 eV previsto per l’energia di cut-off.
Ad energie inferiori al GZK cut-off, il meccanismo dominante è, invece, la produzione di
coppie elettrone-positrone:
L’energia di soglia di questo processo è
27
e assume un valore pari a 0.5 EeV.
La lunghezza di interazione l(E) è il cammino libero medio di una particella prima che
avvenga un’interazione non elastica; è definita dalla relazione:
dove μ è il coseno dell’angolo compreso tra i momenti iniziali delle particelle, nb è la
densità delle particelle bersaglio per unità di energia, β è la velocità del proiettile, βb è la
velocità del bersaglio, σ è la sezione d’urto, funzione del quadrato dell’energia s del
centro di massa (come mostrato in Figura 7).
Figura 7: Sezione d’urto totale per la produzione di foto-pioni in funzione dell’energia: la linea continua è relativa ai protoni, quella tratteggiata ai neutroni.
La lunghezza di attenuazione, invece, rappresenta la lunghezza dopo la quale un fascio
incidente su un materiale risulta attenuato di un fattore 1/e; è definita come il prodotto
tra la lunghezza di interazione e l’inelasticità η:
dove E’ è l’energia della particella meno energetica.
28
In Figura 8, sono riportate le lunghezze di attenuazione di fotoni, protoni e nuclei di
ferro in vari background e per diversi processi.
Sfruttando la dipendenza dall’energia presentata da sezione d’urto e da inelasticità
(Figura 9), i fisici Stecker e Berezinsky hanno calcolato la perdita di energia dei protoni
durante la propagazione nello spazio intergalattico.
Figura 8: Lunghezze di attenuazione di fotoni, protoni e nuclei di ferro in vari background e per vari processi;
è anche rappresentato il limite di red shift.
Dai risultati ottenuti, si è fatta l’ipotesi che i raggi cosmici con energia maggiore di quella
corrispondente al cut-off GZK provengano dal superammasso locale2.
L’effetto GZK non è un taglio, ma piuttosto una soppressione del flusso di raggi cosmici
ad altissima energia: infatti, protoni provenienti da distanze inferiori ai 50 Mpc o
neutrini possono avere energie maggiori di quella di GZK.
2 Il Superammasso Locale, chiamato anche Superammasso della Vergine, è il superammasso di
galassie che contiene anche la Via Lattea.
29
Il numero di UHECR aventi energie iniziali maggiori del GZK cut-off determina l’intensità
di questo effetto. Nel 2002, Scully e Stecker [14] hanno calcolato in funzione del redshift
l’energia di GZK, definita come il valore in corrispondenza del quale il flusso si riduce di
un fattore 1/e. In Figura 10, sono mostrati gli spettri teorici previsti assumendo un
andamento come E-2.75 nel caso di sorgenti con una distribuzione uniforme (linea
centrale) o con distribuzione che segue il tasso di formazione stellare (linea inferiore).
Figura 9: Energia di un protone in funzione della distanza di propagazione in corrispondenza di diversi valori iniziali.
La curva superiore, invece, segue un andamento E-2.35, che richiede un ordine di
grandezza in più nell’energia iniziale e manifesta un effetto di accumulazione.
30
Figura 10: Spettri teorici previsti nel caso di sorgenti con una distribuzione uniforme (linea centrale) o che segue il tasso di formazione stellare (linea superiore). La curva superiore, invece, mostra un effetto di
accumulazione.
8. Gli sciami atmosferici estesi (EAS)
A causa del flusso molto basso, i raggi cosmici di alta energia non possono essere rivelati
in maniera diretta, poiché l’area efficace dei rivelatori risulta troppo piccola per
compensare la ripida discesa dello spettro.
L’osservazione di queste particelle diviene possibile soltanto mediante la rivelazione
degli Extensive Air Shower (EAS), ovvero di sciami di particelle prodotti dall’interazione
dei raggi cosmici primari con i nuclei pesanti presenti nell’atmosfera (Figura 11).
Quando il raggio cosmico primario interagisce con un nucleo bersaglio dell’atmosfera, si
verifica la produzione di un numero elevato di adroni, i quali decadono in altre particelle
o, a loro volta, interagiscono con l’atmosfera. Questo meccanismo di ripete finché
l’energia delle particelle secondarie diviene inferiore alla soglia per l’ulteriore
produzione di particelle; a quel punto, lo sciame si attenua.
31
Figura 11: Uno sciame atmosferico esteso (EAS) generato dall’interazione di un protone cosmico con l’atmosfera.
Un EAS consiste, dunque, in una cascata di particelle secondarie che si sviluppa
attraverso l’atmosfera finché non raggiunge il numero massimo di particelle ad una
profondità che dipende dall’energia, dalla massa, dal numero atomico e dal numero di
massa del raggio cosmico primario.
Gli sciami atmosferici estesi sono costituiti dalle tre componenti illustrate in Figura 12.
32
Figura 12: Le tre componenti che costituiscono gli EAS: adroni, muoni e radiazione elettromagnetica.
Componente adronica.
Sono parte di questa componente tutte le particelle interagenti mediante
interazione forte. Il core dello sciame è costituito da adroni altamente energetici
che danno vita alle altre componenti tramite decadimento e produzione di
pioni.
Componente muonica.
E’ formata da muoni e neutrini derivati dal decadimento di pioni carichi e kaoni.
I prodotti di questi decadimenti danno origine alla parte più penetrante degli
sciami.
Componente elettromagnetica.
33
E’ costituita da raggi γ, elettroni e positroni. I pioni neutri prodotti dai
decadimenti adronici decadono immediatamente in fotoni, alimentando, così, la
cascata.
In ogni interazione adronica, circa il 30% dell’energia viene trasferito alla componente
elettromagnetica mediante il decadimento del mesone π0. Negli sciami elettromagnetici,
il 90% circa dell’energia è dissipata per ionizzazione, mentre la restante energia è
trasportata da muoni e neutrini attraverso il decadimento di pioni carichi.
In Figura 13, è mostrato il flusso stimato dei raggi cosmici secondari con energia
superiore ad 1 GeV in atmosfera: il numero delle particelle delle componenti adronica
ed elettromagnetica, dopo aver raggiunto un massimo, diminuisce rapidamente con la
profondità, mentre il numero di muoni, dopo una crescita iniziale, raggiunge un plateau.
Ciò avviene per due motivi:
1. i muoni, in prima approssimazione, perdono energia soltanto nei processi di
eccitazione o di ionizzazione;
2. il numero di muoni che raggiunge il suolo cresce lentamente all’aumentare
dell’energia.
Non è facile distinguere gli sciami originati da nuclei da quelli originati da fotoni, essendo
lo studio delle particelle primarie molto complesso. Tuttavia, la composizione può essere
studiata mediante l’osservazione della distribuzione delle particelle sul fronte dello
sciame o dell’altezza della prima interazione.
8.2. Modello di Heitler
Il fisico tedesco Walter Heinrich Heitler [15] ha sviluppato un semplice modello per
descrivere le cascate puramente elettromagnetiche.
34
Figura 13: Flusso dei raggi cosmici secondati con energia superiore ad 1 GeV in atmosfera. Le componenti adronica ed elettromagnetica, dopo aver raggiunto un massimo, diminuiscono rapidamente con la
profondità, mentre la componente muonica, dopo una crescita iniziale, raggiunge un plateau.
In questo modello, vengono trascurati l’effetto Compton e lo scattering multiplo, lo
sviluppo dello sciame viene assunto, per semplicità, bidimensionale, e si assume che lo
sviluppo dello sciame sia caratterizzato soltanto dai fenomeni di bremsstrahlung per gli
elettroni e di produzione di coppie per i fotoni (entrambi processi dominanti a energie
superiori a 100 MeV): in queste ipotesi, ogni interazione porta alla conversione di una
particella in due.
Si definisce lunghezza di radiazione, e si indica X0, la distanza mediamente percorsa da
fotoni e da elettroni di alta energia prima di emettere, rispettivamente, coppie e-e+ e
radiazione bremsstrahlung. Secondo il modello di Heitler, ad ogni step del processo
ciascuna particella secondaria trasporta metà dell’energia della particella primaria da cui
è stata generata. Se si assume che la radiazione di bremsstrahlung e la produzione di
35
coppie siano caratterizzati, in prima approssimazione, dallo stesso parametro X0, lo
sciame può essere rappresentato da un albero i cui rami si dividono ogni X0.
Figura 14: Sviluppo di uno sciame a partire da un fotone di energia E0.
In Figura 14, è raffigurato uno sciame che ha inizio da un fotone di energia E0: dopo aver
percorso una lunghezza di radiazione X0, si hanno un elettrone e un positrone, ciascuno
di energia E0/2; dopo 2 X0, l’elettrone e il positrone producono due fotoni tramite
bremsstrahlung, ottenendo un totale di 4 particelle, ciascuna di energia E0/4; dopo n
passi, sono presenti N(n)=2n particelle, ciascuna di energia E(n) = E0/2n. Lo sviluppo dello
sciame prosegue finché l’energia degli elettroni non scende al di sotto del valore critico
Ec, che si ha quando la perdita energetica per ionizzazione è uguale a quella per
radiazione. Al di sotto di Ec, il processo dominante è la ionizzazione. Assumendo che lo
sciame si arresti una volta raggiunta l’energia Ec, si ha:
Risolvendo rispetto a nmax:
Il numero massimo di particelle prodotte è:
36
8.3. Modello di sovrapposizione per le cascate adroniche
Le interazioni adroniche sono più complesse di quelle elettromagnetiche, perché un
adrone di altissima energia ha maggiori canali di decadimento ed è in grado di produrre
moltissime particelle diverse collidendo con i nuclei del mezzo che attraversa. Per
questo, anche partendo dalla stessa particella primaria ed energia iniziale, si possono
avere sciami molto differenti tra loro.
Il modello di sovrapposizione consente di descrivere lo sviluppo di cascate adroniche ad
alte energie. Si assume che il comportamento di un nucleo con numero di massa A ed
energia E sia equivalente a quello di A nucleoni indipendenti, ciascuno con energia E/A e
lunghezza di interazione in aria λ, e che la distribuzione dei punti in cui ciascun nucleone
interagisce per la prima volta con un nucleo bersaglio sia uguale a quella che si avrebbe
se i nucleoni entrassero separatamente in atmosfera.
La situazione può essere ancora descritta mediante il modello di Heitler, a patto di
sostituire all’energia iniziale E il valore E/A. Così facendo, il massimo dello sciame viene
raggiunto alla distanza:
A parità di energia iniziale, quindi, gli EAS generati da primari pesanti raggiungono il loro
massimo sviluppo a una profondità inferiore rispetto a quelli generati da protoni, ma il
numero di particelle resta invariato.
37
Figura 15: Modello di sovrapposizione per le cascate adroniche: si assume che il comportamento di un nucleo con numero di massa A ed energia E sia equivalente a quello di A nucleoni indipendenti, ciascuno con
energia E/A.
9. Emissione di radiazione nello sviluppo degli EAS
L’atmosfera terrestre intercetta le particelle primarie e ne assorbe la maggior parte
dell’energia, convertendola in luce di fluorescenza e radiazione Cherenkov.
9.2. Luce di fluorescenza
Le particelle secondarie perdono energia tramite ionizzazione ed eccitazione delle
molecole di aria. La luce di fluorescenza è emessa dopo un tempo compreso tra i 10 e i
50 ns, nella conseguente fase di diseccitazione, ed è approssimativamente isotropa.
Poiché l’aria è costituita per il 78% da azoto, quasi tutta l’emissione di fluorescenza è
generata dalle transizioni di N2 o di N2+.
In Figura 16 è riportato lo spettro energetico dell’azoto atmosferico, dal quale risulta
evidente che la maggior parte dell’emissione è concentrata in un intervallo di lunghezze
d’onda tra i 300 e i 450 nm, con dei picchi a 337.1 nm, 357.7 nm e 391.4 nm: in
corrispondenza di questi valori, la lunghezza di attenuazione è ≈ 15 km per un fascio
verticale, ovvero l’atmosfera è abbastanza trasparente.
38
Figura 16: Spettro energetico dell’azoto atmosferico.
In corrispondenza dei 391.4 nm, il processo di emissione consiste in una ionizzazione
diretta di una molecola di azoto seguita da un decadimento radiativo dello ione:
Per quanto riguarda i picchi a 337.1 nm e a 357.7 nm, avviene un processo in due fasi: la
ionizzazione di una molecola di azoto è seguita da una ricombinazione elettronica e da
decadimento radiativo della molecola eccitata:
I picchi al di sotto dei 320 nm non sono osservabili a causa dell’assorbimento dell’ozono,
mentre al di sopra dei 400 nm si ha un flusso maggiore di fotoni di background e
un’ottica sensibile anche a queste lunghezze d’onda presenterebbe una notevole
aberrazione cromatica.
9.3. Radiazione Cherenkov
Si ha emissione di luce Cherenkov quando una particella attraversa l’atmosfera con
velocità maggiore a quella della luce nell’atmosfera stessa.
39
I fotoni sono emessi ad un certo angolo θc, che si può esprimere in termini dell’indice di
rifrazione atmosferico n(ε), funzione dell’energia ε della radiazione, e della velocità β
della particella:
Negli EAS, numerose particelle possiedono velocità maggiore di quella della luce
nell’atmosfera e, così, producono una grossa quantità di radiazione Cherenkov. Il
contributo maggiore è quello di elettroni e positroni, in quanto sono le particelle cariche
più abbondanti negli sciami e possiedono una soglia relativamente bassa (21 MeV sul
livello del mare) per l’emissione Cherenkov.
10. Tecniche di rivelazione degli UHECR
La rapida diminuzione del flusso rende difficile l’osservazione diretta di raggi cosmici
primari di energia superiore a 1015 eV. Per questa ragione, gli esperimenti richiedono
apparati molto estesi e osservazioni indirette degli UHECR: le proprietà di queste
particelle, infatti, possono essere ricavate dall’analisi delle caratteristiche dei
corrispondenti sciami secondari.
10.2. Array di rivelatori a terra
La tecnica di rivelazione più usata per i raggi cosmici di alta energia prevede l’uso di
rivelatori di superficie in grado di campionare il fronte dello sciame mediante matrici di
rivelatori (Figura 17) e determinare, così, la funzione approssimata di distribuzione
laterale di un EAS.
I rivelatori utilizzati possono essere di vario tipo: negli esperimenti Volcano Ranch [16] e
AGASA [17] si utilizzano degli scintillatori, mentre l’Osservatorio Pierre Auger [18]
utilizza rivelatori Cherenkov ad acqua.
40
Figura 17: Rivelazione di un EAS mediante un array di rivelatori al suolo.
Le condizioni ideali si hanno quando i rivelatori si trovano in prossimità del massimo
dello sciame (che, in genere, si trova intorno ai 1500 m sopra il livello del mare), mentre
la distanza tra i rivelatori viene stabilita in base alla distribuzione laterale attesa dello
sciame nell’intervallo di energie osservate; per energie elevate, la distanza tra due
rivelatori è di poche centinaia di metri. La configurazione finale, ossia il numero e la
disposizione dei detector, è un compromesso tra l’area efficace e la capacità di
risoluzione.
I rivelatori al suolo non sono influenzati dalle condizioni atmosferiche e il duty cycle,
ovvero il tempo effettivo di presa dati rispetto al tempo totale in cui è attiva la
strumentazione, è del 100%. Il rumore di fondo è ridotto impostando un trigger che
richiede la presenza di un segnale in diverse stazioni vicine entro un intervallo di tempo
compatibile con i tempi di arrivo di uno sciame.
La ricostruzione di un EAS si articola in tre fasi.
41
1. Determinazione del core3 dello sciame in base alla posizione dei rivelatori e al
segnale registrato.
2. Determinazione dell’angolo di zenit in base alle differenza di tempi tra i
contatori.
3. Determinazione della distribuzione laterale4 dell’EAS in base alle ampiezze degli
impulsi, convertite nel numero di particelle equivalenti.
Note queste informazioni, è possibile determinare l’energia dei raggi cosmici primari e la
profondità Xmax del massimo dello sciame.
10.3. Rivelatori di luce di fluorescenza
Il numero di fotoni prodotto da raggi cosmici primari con energia superiore a 1017 eV è
abbastanza elevato da consentire ai rivelatori di luce di fluorescenza di osservare sciami
a grande distanza e di misurarne lo sviluppo longitudinale in funzione della profondità
atmosferica.
Un rivelatore di fluorescenza è costituito da un raccoglitore di luce, da un trasduttore
posto sulla superficie focale dell’ottica (in genere, una matrice di fotomoltiplicatori) e da
filtri ottici. Un apparato elettronico misura l’intensità e il tempo di arrivo del segnale in
ciascun fototubo.
Le misure di luce di fluorescenza devono essere effettuate in condizioni atmosferiche
molto buone (l’ideale sarebbe avere un cielo scuro, limpido e senza Luna) e con un
fondo luminoso molto basso: si rivela, dunque, di fondamentale importanza una scelta
oculata del sito di ubicazione del rivelatore. Il grande difetto che possiede questo tipo di
detector è quello di essere caratterizzati da un duty cycle piuttosto basso, inferiore al
20%.
3 La direzione di arrivo del primario definisce l’asse dello sciame e il punto di intersezione di
quest’asse con il suolo è detto core. 4 La densità di particelle a terra in funzione della distanza dall’asse è detta funzione di
distribuzione laterale.
42
Gli ultimi esperimenti realizzati, l’Osservatorio Auger e Telescope Array, sfruttano
tecniche ibride di osservazione, in quanto la combinazione di rivelatori al suolo e di
rivelatori di fluorescenza migliora la capacità di ricostruzione e permette di effettuare
una calibrazione incrociata.
10.4. Rivelatori radio e rivelatori acustici
Gli EAS possono produrre degli impulsi radio attraverso diversi meccanismi, il più
comune dei quali consiste nell’emissione di radiazione di sincrotrone a frequenze di 200
1000 MHz dovuta alle coppie elettrone-positrone che si propagano nel campo
magnetico terrestre.
Alcuni rivelatori, costituiti da una o più antenne interfacciate con un computer, sfruttano
questi impulsi radio e il fatto che l’ampiezza del segnale sia proporzionale all’energia
della particella primaria. I grandi vantaggi della rivelazione radio consistono nel fatto che
i segnali non vengono né assorbiti né deflessi e che il duty cycle teorico è del 100%.
Un’altra tecnica recentemente utilizzata è basata su sensori acustici posti sotto il mare o
sotto il ghiaccio: essi rivelano il segnale prodotto dalle cascate di particelle di alta
energia che, per tempi brevissimi, riscaldano il volume attraversato. La lunghezza di
assorbimento per le onde acustiche in acqua marina è, almeno, un ordine di grandezza
superiore a quella della radiazione Cherenkov; ne consegue che i segnali acustici
possono essere rivelati a distanze maggiori.
Nella Tabella 3 sono riportate le caratteristiche principali dei maggiori esperimenti per
la rivelazione di UHECR.
11. I limiti della rivelazione al suolo
Indipendentemente dal tipo di rivelatori utilizzati, gli esperimenti al suolo presentano
delle grosse limitazioni dovute al fatto che soltanto una piccola frazione di atmosfera
43
Tabella 3: Tabella riassuntiva dei principali esperimenti per la rivelazione di UHECR.
può essere monitorata, mentre, per rivelare un numero significativo di eventi UHECR
oltre il limite GZK, bisognerebbe esaminare una superficie molto vasta.
L’idea di misurare la luce di fluorescenza generata dagli EAS dallo spazio è stata avanzata
per la prima volta da John Linsley nel 1979. Questo tipo di osservazione è basata sugli
stessi principi delle tecniche di rivelazione a terra, ma consente di aumentare
sensibilmente la regione di atmosfera osservabile. È possibile accumulare una quantità
di eventi ad altissime energie sufficiente per ottenere una statistica significativa,
mantenendo buone la risoluzione angolare e l’energia.
44
Capitolo II
Nel capitolo precedente si è visto che la rivelazione di UHECR necessita di un campo di
vista molto esteso, poiché il flusso per energie superiori al valore di caviglia è inferiore a
1 particella per km2 all’anno. Gli apparati sperimentali attualmente operativi sono
principalmente rivelatori al suolo, che devono occupare superfici molto vaste per
ottenere una buona statistica.
Il progetto JEM-EUSO è nato con lo scopo di aumentare notevolmente il campo di vista
e, quindi, la mole di dati rivelabili. Ciò sarà possibile posizionando un telescopio sulla
Stazione Spaziale Internazionale, da cui sarà monitorata un’ampia zona di atmosfera
terrestre. Al fine di verificare il funzionamento delle parti principali di JEM-EUSO prima
del lancio, previsto nel 2017, è in fase di sviluppo anche la realizzazione di prototipi.
Il progetto è coordinato dall’agenzia spaziale giapponese e sarà realizzato in
collaborazione con oltre 70 gruppi di ricerca, tra cui un gruppo appartenente
all’Università Federico II di Napoli.
In questo capitolo, saranno descritti gli apparati sperimentali di JEM-EUSO e del
prototipo EUSO Balloon.
1. L’osservatorio JEM-EUSO
L’osservatorio JEM-EUSO (Extreme Universe Space Observatory on Japanese Experiment
Module) è la prima missione spaziale dedicata all’esplorazione degli estremi confini
dell’Universo attraverso la rivelazione dei raggi cosmici di altissima energia. Esso userà
45
l’atmosfera del nostro pianeta come un grande rivelatore per osservare gli UHECR dallo
Spazio, e non dal suolo (Figura 18).
EUSO era una missione dell’Agenzia Spaziale Europea (ESA), nata da un’idea italiana, che
doveva essere ospitata sulla Stazione Spaziale Internazionale come carico utile esterno
del modulo Columbus. EUSO terminò con successo una prima fase di studio, ma, a causa
di vincoli programmatici e finanziari, la proposta fu bloccata. In seguito, è stata
rivalutata da altre agenzie spaziali, tra cui JAXA e NASA, e diventerà carico utile da
ospitare a bordo del modulo giapponese JEM, appartenente anch’esso alla ISS: per
questo motivo, la missione è stata rinominata JEM-EUSO.
Attualmente, la missione JEM-EUSO è coordinata dall’Agenzia Spaziale Giapponese
(JAXA), in collaborazione con altre 73 istituzioni di 13 Paesi diversi.
Figura 18: Il telescopio JEM-EUSO sarà posizionato sulla Stazione Spaziale Internazionale, dove rivelerà gli UHECR interagenti con l’atmosfera terrestre.
46
JEM-EUSO è progettato per affrontare problemi fondamentali della fisica di base e
dell’astrofisica delle alte energie investigando la natura e l’origine dei raggi cosmici con
energia superiore a 5 ∙ 1019 eV ed estendendo, con una statistica notevolmente
ampliata, le misure dello spettro energetico oltre il cut-off GZK. Il telescopio consentirà
di effettuare accurate misure della direzione di arrivo, della composizione e dell’energia
delle particelle primarie usando un volume bersaglio molto più grande di quello che
sarebbe possibile dal suolo [19]; i dati raccolti faranno luce sull’origine degli UHECR,
sulle sorgenti che li producono, sul mezzo in cui si propagano e sui meccanismi che
avvengono ad energie molto più elevate di quelle raggiungibili con i moderni
acceleratori. Oltre a ciò, JEM-EUSO contribuirà allo studio dei fenomeni dell’atmosfera
terrestre e dei neutrini di alte energie.
Il telescopio JEM-EUSO verrà lanciato nel 2017 con il razzo H2B e sarà trasportato a
bordo della Stazione Spaziale Internazionale (ISS), ad una quota di 400 km, tra la
termosfera e l’esosfera (Figura 19), dal veicolo di trasporto H-II Transfer Vehicle (HTV);
sarà operativo per più di 3 anni, orbitando attorno alla Terra con un periodo di 90
minuti.
Figura 19: Strati in cui è divisa l’atmosfera terrestre. La Stazione Spaziale Internazionale dove si posizionerà JEM-EUSO si troverà a circa 400 km di quota, tra la termosfera e l’esosfera.
47
JEM-EUSO ha un campo di vista molto ampio (± 30°, corrispondente ad un’area a terra
compresa in un cerchio di 250 km) e la sua parte ottica è costituita da diverse lenti di
Fresnel. La superficie focale è formata da circa 5000 fotomoltiplicatori multianodici,
corrispondenti a 300000 pixel. JEM-EUSO sarà in grado di rivelare la traccia di un EAS
con una risoluzione temporale, o GTU5, di 2.5 μs e una risoluzione spaziale di circa 0.75
km (corrispondenti a 0.1°) in modalità nadir; sarà, inoltre, in grado di ricostruire la
direzione di arrivo degli UHECR con un’accuratezza di pochi gradi.
L’altra modalità di funzionamento, la modalità tilt, si otterrà inclinando il telescopio dalla
posizione di nadir: il vantaggio consiste in un aumento dell’area effettiva (Figura 20),
mentre lo svantaggio è un incremento dell’energia di soglia, in quanto crescono sia la
distanza media degli EAS che l’assorbimento atmosferico.
Figura 20: Area effettiva monitorabile in modalità nadir e in modalità tilt.
5 L’elettronica di acquisizione conta il numero di impulsi elettrici in periodi di tempo che
prendono il nome di Gate Time Unit (GTU) e li registra in memoria. 1 GTU equivale a 2.5 μs.
48
1.1. Principi di osservazione
L’osservazione degli UHECR in JEM-EUSO è basata sulla rivelazione delle radiazioni di
fluorescenza e Cherenkov prodotte dagli sciami atmosferici estesi (Figura 21).
Figura 21: JEM-EUSO rivelerà luce di fluorescenza e radiazione Cherenkov guardando l’atmosfera terrestre dall’alto durante la notte.
Un raggio cosmico di altissima energia interagisce con l’atmosfera producendo particelle
secondarie, che a loro volta interagiscono con i nuclei atmosferici dando vita a una
cascata. Le particelle più numerose negli EAS sono gli elettroni, che eccitano gli atomi e
le molecole di aria. Quando gli elettroni nei livelli metastabili tornano nello stato
49
fondamentale, emettono fotoni di fluorescenza, il cui picco si trova nella regione
dell’ultravioletto, con lunghezza d’onda compresa tra 330 e 400 nm.
Il passaggio di un UHECR, quindi, genera una traccia di luce di fluorescenza, isotropa e di
intensità proporzionale all’energia rilasciata nell’atmosfera e all’angolo rispetto allo zenit
della particella primaria.
Numerose particelle secondarie hanno velocità maggiori di quella della luce nell’aria ed
emettono fotoni Cherenkov fortemente collimati in un cono di raggio minore di 0.3°
lungo la traiettoria.
Gli EAS appaiono come dischi luminosi che si muovono alla velocità della luce, la cui
luminosità varia a seconda dell’intensità dello sciame e delle posizioni relative di sciame
e telescopio. Acquisendo un’immagine del moto di una traccia ogni pochi microsecondi,
è possibile determinare la direzione di arrivo del raggio cosmico primario; l’integrale
della luce registrata consente, invece, di determinare l’energia.
In Figura 22, è mostrato il profilo temporale dei fotoni provenienti da un EAS. La linea
nera rappresenta tutti i fotoni, mentre la linea rossa rappresenta la componente di
fluorescenza. Le componenti Cherenkov, diffuse dall’atmosfera o dalla superficie
terrestre, sono raffigurate con i colori celeste e rosa. Lo stretto picco alla fine del profilo
è detto marchio Cherenkov ed è dovuto ai fotoni Cherenkov riflessi dal punto d’impatto;
l’identificazione di tale marchio aiuta a localizzare il punto in cui lo sciame tocca il suolo.
In modalità nadir, JEM-EUSO controllerà, da un’altitudine nominale di 400 km, un’area di
circa 1.3 ∙ 105 km2 sulla superficie terrestre, orbitando attorno alla Terra a una velocità di
8 km/s. In questa configurazione, sono numerosi i vantaggi di JEM-EUSO rispetto agli
osservatori a terra. Infatti, la maggiore apertura fornisce misure del profilo dello sciame
con una statistica migliore e l’osservazione in orbita assicura la copertura dell’intera
sfera celeste. Inoltre, la distanza semistazionaria dagli EAS consente di migliorare la
ricostruzione dello sviluppo dal profilo temporale osservato correggendo l’attenuazione
nell’atmosfera con incertezza limitata.
Per rispettare i requisiti scientifici, le prestazioni del telescopio JEM-EUSO devono essere
tali da garantire l’accuratezza di diverse osservabili. I parametri più significativi che
50
definiscono le prestazioni del telescopio sono la risoluzione temporale, la dimensione
dei pixel e l’apertura effettiva della raccolta dei fotoni.
Figura 22: Profilo temporale dei fotoni provenienti da un EAS. La linea nera rappresenta tutti i fotoni, quella rossa i fotoni di fluorescenza. Le componenti Cherenkov sono raffigurate in grigio, rosa e celeste.
1.2. Descrizione dell’apparato sperimentale
Lo strumento in volo sarà costituito da un telescopio per gli UHECR e da un dispositivo
per il monitoraggio dell’atmosfera, entrambi controllati da un sistema di calibrazione.
Il telescopio è una fotocamera digitale che lavora nell’UV in grado di contare i singoli
fotoni. Le principali componenti sono le ottiche di raccolta, il rivelatore posto sulla
superficie focale (mostrati in Figura 23) e l’elettronica.
51
Figura 23: Rappresentazione schematica delle componenti principali del telescopio JEM-EUSO. Sono illustrati la superficie focale e le lenti costituenti il sistema ottico.
Il sistema ottico è composto da due lenti di Fresnel e da una lente di diffrazione. La luce
UV incidente sulla prima lente viene focalizzata con una risoluzione spaziale di 0.1° sulla
superficie focale, dove è presente un rivelatore composto da una griglia di circa 5000
fotomoltiplicatori multianodici (MAPMT). I MAPMT convertono l’energia dei fotoni in
impulsi elettrici della durata di 10 ns, che vengono contati dall’elettronica in periodi 1
GTU e memorizzati. Quando viene trovata una sequenza di segnali compatibile con un
evento UHECR, è inviato un segnale di trigger e tutti i dati utili vengono trasmessi al
centro operativo a terra, consentendo di risalire all’immagine memorizzata.
Per quanto riguarda il sistema di monitoraggio dell’atmosfera (AMS), JEM-EUSO userà
una fotocamera per infrarosso e un LIDAR (Light Detection And Ranging) con un laser
ultravioletto per osservare le condizioni dell’atmosfera. Il LIDAR ha il compito di
osservare la condizione delle nubi in alcuni punti del campo di vista di JEM-EUSO e
calibrare con elevata accuratezza la tavola di trasformazione tra l’altitudine della cima
della copertura nuvolosa e la sua temperatura, ottenuta dall’analisi delle immagini della
52
fotocamera nell’infrarosso. Poiché la lunghezza d’onda del laser è di 355 nm, essa si
trova nell’intervallo di interesse del telescopio, per questo la superficie focale verrà
utilizzata come unità ricevente del LIDAR.
JEM-EUSO sarà calibrato tramite una strumentazione che si troverà sia a bordo che al
suolo.
Il sistema di calibrazione on-board è composto da tre LED di differenti lunghezze d’onda,
tra 300 e 500 nm, installati nel cilindro del telescopio come sorgenti di luce diffusa.
Misurando con il rivelatore della superficie focale la luce proveniente da queste sorgenti
luminose dopo che è passata attraverso le lenti e che è stata riflessa dalla superficie
interna del coperchio, sarà possibile calibrare il guadagno e l’efficienza di rivelazione.
Inoltre, in una dozzina di siti a terra saranno installati dei lampeggiatori allo Xeno:
quando JEM-EUSO passerà sopra di essi, rivelerà il loro segnale e sarà in grado di
misurare l’assorbimento UV complessivo dell’atmosfera, calibrando, così, il dispositivo.
Per stimare l’errore sistematico nella misura dell’energia e della direzione di arrivo del
raggio cosmico primario, gli EAS saranno simulati tramite il laser UV proveniente dalle
postazioni LIDAR al suolo. L’osservazione del laser UV proveniente dalla Terra
permetterà anche di stimare la trasmittanza dell’atmosfera in funzione dell’altitudine. Il
sistema di calibrazione illustrato sarà usato in maniera complementare alla calibrazione
del dispositivo effettuata prima del lancio per studiare le possibili influenze causate dalle
variazioni a lungo termine nella sensibilità del dispositivo e del variabile ambiente
atmosferico.
1.1. Il telescopio per rivelare gli UHECR
1.1.1. Il sistema ottico
Il sistema ottico è in grado di rivelare la luce Cherenkov e di fluorescenza proveniente
dagli EAS e di determinare il punto di emissione con una risoluzione spaziale minore di
0.1°.
53
Figura 24: Illustrazione complessiva del funzionamento di JEM-EUSO.
In Figura 25 è illustrata l’ottica di JEM-EUSO: è costituita da un modulo a doppia lente di
Fresnel con un diametro esterno di 2.5 m, che osserva nella banda dell’UV. Le lenti di
Fresnel offrono una grande apertura, un ampio campo di vista (FoV) in un sistema con
massa ridotta e basso assorbimento. Le lenti saranno costruite con un materiale plastico
leggero e resistente alla radiazione, scelto affinché la dispersione cromatica e
l’assorbimento siano minimi. Per correggere l’aberrazione cromatica, è stata aggiunta
una lente di Fresnel di precisione tra le due lenti a doppia faccia curva.
Una lente di precisione di Fresnel risulta dalla composizione di un elemento ottico
rifrattivo (una superficie di Fresnel convenzionale) e di uno diffrattivo (una superficie di
Fresnel di precisione), in grado di ridurre le aberrazioni di colore, come mostrato in
Figura 26: la lente diffrattiva possiede dispersione opposta a quella rifrattiva, e riesce
così a eliminare l’aberrazione cromatica.
54
Figura 25: Il sistema ottico di JEM-EUSO, costituito da una due lenti di Fresnel separate da una lente di precisione di Fresnel.
Figura 26: Cancellazione delle aberrazioni cromatiche attraverso l’utilizzo di una lente di precisione di Fresnel.
Il sistema ottico deve raccogliere i fotoni di lunghezza d’onda compresa tra 330 e 400
nm e convogliarli verso un pixel del rivelatore posto sulla superficie focale con la
55
maggiore efficienza possibile. Per ottimizzare le prestazioni del sistema e raccogliere il
maggior numero possibile di fotoni, le ottiche devono rispettare i requisiti elencati in
Tabella 4 [20]. È richiesto un FoV maggiore di ± 30° perché maggiore è il campo di vista,
maggiore è la porzione di atmosfera che è possibile monitorare. La richiesta di un
diametro rispetto all’asse della pupilla di ingresso pari a 2.3 m nasce dal fatto che
l’apertura della pupilla deve essere la più grande possibile, compatibilmente con il
veicolo di trasporto sulla ISS, per riuscire a rivelare anche i più deboli segnali di luce
Cherenkov o di fluorescenza.
Tabella 4: Requisiti che deve possedere il sistema ottico per l’ottimizzazione del suo funzionamento.
1.1.2. La superficie focale
La superficie focale (FS) è costituita dal fotorivelatore e dall’elettronica di read-out ad
esso collegata.
Il rivelatore della FS ha una superficie curva di circa 2.35 m di diametro ed è costituito da
moduli di fotorivelatori (PDM), ognuno composto da 9 celle elementari (EC). Ogni EC è, a
sua volta, costituito da 4 tubi fotomoltiplicatori multianodici (MAPMT), come mostrato
in Figura 27. Sull’intera superficie focale sono presenti circa 1233 EC, corrispondenti a
circa 137 PDM, e un totale di più di 5000 (MAPMT) [21].
Gli impulsi in uscita dai MAPMT sono inviati direttamente agli ASIC (Application Specific
Integrated Circuit) dell’elettronica di front-end.
56
Figura 27: Struttura del rivelatore della superficie focale.
La superficie focale ha il compito di rivelare gli EAS, determinare la posizione di arrivo
dei fotoni in funzione del tempo e ricostruire lo sviluppo spaziale e temporale degli
sciami. Affinché possa fare tutto ciò, è necessario che la FS abbia le seguenti
caratteristiche:
sensibilità al singolo fotone, che consenta la rivelazione di EAS molto deboli;
risposta rapida (inferiore al μs);
dimensione di un pixel corrispondente a un angolo sulla Terra minore di 0.1°;
cross-talk tra pixel adiacenti inferiore al 10%;
rumore inferiore di due ordini di grandezza al background notturno provocato
dall’airglow;
efficienza di rivelazione buona e uniforme;
massimizzazione dell’area sensibile e riduzione delle aree morte o inefficienti;
bassa sensibilità ai campi magnetici dell’ordine del Gauss;
affidabilità della durata di almeno 5 anni;
compatibilità con i requisiti delle missioni spaziali.
57
1.2. L’elettronica di JEM-EUSO
L’elettronica della FS di JEM-EUSO include:
l’elettronica di front-end (ASIC), che costituisce l’interfaccia con I MAMPT e
fornisce i primi due livelli di trigger;
l’elettronica dei PDM e quella delle CCB, che forniscono ulteriori livelli di trigger;
il sistema di alimentazione dei MAMPT e dell’elettronica.
In Figura 28 è rappresentato lo schema complessivo dell’elettronica di JEM-EUSO. Sono
mostrati la catena di lettura e quella di trasmissione di dati, la logica di trigger e
l’apparato di monitoring. L’elettronica dei PDM riceve i dati digitalizzati dagli ASIC e, nel
caso in cui arrivi il segnale di un evento interessante, li trasmette alla CCB
corrispondente.
L’intero sistema elettronico è progettato per ottimizzare la capacità di osservazione del
telescopio JEM-EUSO. La quantità di dati acquisiti si riduce ad ogni livello di trigger
(Figura 29), passando da 10 GB/s raccolti sulla superficie focale a 250 kb/s inviati alla
CPU principale.
Ad eccezione dei sistemi intrinsecamente ridondanti, come i rivelatori della FS, è
adoperata la ridondanza Hot/Cold, che consiste nell’utilizzo di una coppia di dispositivi,
una funzionante full-time e una attivabile in caso di necessità. Il protocollo di
comunicazione di alto livello tra CCB e CPU è basato sullo standard SpaceWire.
I dati acquisiti sono inviati attraverso il protocollo Ethernet alla stazione ISS, dove
possono essere inviati a terra tramite un collegamento satellitare TDRS (Tracking and
Data Relay Satellite) o memorizzati su dischi server presenti a bordo e trasmessi
periodicamente.
Le informazioni sono inviate a terra con priorità diverse: la priorità massima è riservata
ai dati provenienti dal modulo HK e agli allarmi; i dati sperimentali relativi agli UHECR o a
trigger speciali (fenomeni luminosi provenienti dall’atmosfera) hanno priorità
intermedia; la priorità più bassa appartiene ai dati relativi alla calibrazione o ad altre
informazioni complementari.
58
Figura 28: Schema complessivo dell’elettronica di JEM-EUSO, in cui sono illustrate le catene di trasmissione dei dati, la logica di trigger e l’apparato di controllo.
Figura 29: Riduzione progressiva dei dati acquisiti dalla superficie focale e trasmessi alla CPU, attraverso i
PDM e le CCB.
59
1.2.1. I MAPMT e gli ASIC di front-end
L’elettronica di front-end ha il compito di digitalizzare i valori di carica presenti
sull’anodo di uscita dei MAPMT, che si differenziano dai fotomoltiplicatori ordinari in
quanto presentano più di un anodo di uscita.
Gli impulsi di carica indotti sugli anodi sono digitalizzati dall’elettronica di front-end e
inviati al trigger di primo livello, che ha il compito di discriminare gli eventi significativi
dal fondo. L’elaborazione dei segnali provenienti dai fotorivelatori può essere effettuata
in modalità di conteggio dei fotoni o in modalità a integrazione di carica. La prima
fornisce la risoluzione del segnale migliore quando il flusso di fotoni in ingresso è basso,
la seconda, invece, quando è alto. Poiché un segnale proveniente da un EAS è debole, si
rivela più efficace la modalità di conteggio di fotoni. D’altra parte, la modalità a
integrazione di carica è la più appropriata per i segnali generati da fenomeni transitori
quali sprite, blue jet6 e fulmini. Visto che l’obiettivo è quello di studiare sorgenti
luminose molto diverse tra loro, il circuito di front-end deve poter funzionare in
entrambe le modalità.
L’ASIC di front-end di JEM-EUSO prende il nome di SPACIROC (Spatial Photomultiplier
Array Counting and Integrating ReadOut Chip) ed è stato progettato per leggere i 64
canali di ciascun MAPMT. SPACIROC è in grado di effettuare un conteggio dei fotoni
rivelati e, contemporaneamente, una conversione della carica in tempo con un clock a
40 MHz.
L’architettura di un ASIC SPACIROC è illustrata in Figura 30. SPACIROC è diviso in 3
blocchi principali: un contatore di fotoni, un convertitore charge-to-time e un blocco
digitale che conta gli impulsi associati ai fotoni triggerati e misura la loro intensità.
6 Gli sprite, o getti rossi, sono dei fenomeni elettrici temporaleschi in alta atmosfera, consistenti
in scariche elettriche concordi a quelle dei fulmini. I getti azzurri sono simili agli sprite, ma hanno verso opposto a quello dei fulmini.
60
Figura 30: Architettura dell’ASIC SPACIROC.
1.2.2. L’elettronica dei PDM
L’elettronica dei PDM riceve i dati digitalizzati dagli ASIC e li trasmette ad una CCB in
concomitanza di un segnale di trigger. In seguito all’attivazione di un PDM da parte del
trigger, anche gli 8 PDM adiacenti trasferiscono i dati immagazzinati nei loro buffer
tramite un protocollo ad alta velocità.
L’hardware dell’elettronica dei PDM include le FPGA e le interfacce per ASIC e CCB. La
struttura meccanica è mostrata in Figura 31 ed è progettata per contenere 6 schede in
totale, 3 primarie e 3 di ridondanza, attivabili, qualora necessario, da terra. In Figura 32,
invece, è mostrato il layout schematico di un PDM, con i blocchi funzionali principali che
ne fanno parte.
61
Figura 31: Layout fisico di un PDM.
Figura 32: Schema delle schede elettroniche dei PDM.
La logica di trigger, la lettura dei dati e il sistema di controllo sono gestiti dal blocco
PDM(FPGA), che può riceve informazioni direttamente dagli ASIC o dal modulo KI,
responsabile della conversione charge-to-time; i dati triggerati sono, infine, inviati alle
62
CCB. HK rappresenta l’interfaccia con il modulo di monitoraggio house keeping, mentre
CPU è l’interfaccia con il PC per verifiche stand-alone. Il blocco POWER fornisce le
tensioni di alimentazioni, e con PROM/JTAG si indicano i connettori per il download dei
codici nelle FPGA.
1.2.3. Le Cluster Control Board
Le Cluster Control Board (CCB) sono l’ultimo stadio della struttura di lettura della FS dove
sono eseguite le operazioni di gestione e di selezione ultima dei dati [22]. Questi ultimi
sono ricevuti da una CCB sotto forma di un cluster di informazioni provenienti da 8 PDM
adiacenti, sono analizzati e, nel caso di un evento interessante, inviati a IDAQ e CPU,
assieme a un segnale di trigger. In questo stadio, il rate di acquisizione è ridotto da 56 Hz
per 8 PDM a 5.3 mHz per CCB.
L’algoritmo del secondo livello di trigger prende il nome di Trigger a Traccia Lineare
(LTT), in quanto individua tracce che di sviluppano lungo specifiche direzioni, ed è
implementato su dispositivi FPGA posizionati sulle CCB.
1.2.4. Il sistema di trigger
L’obiettivo del sistema di trigger è quello di distinguere gli eventi interessanti dal rumore
di fondo. Come illustrato in Figura 33, affinché il telescopio acquisisca solo i segnali
significativi, la logica di trigger prevede due livelli principali che sfruttano le proprietà
statistiche del flusso di fotoni in ingresso. Il trigger complessivo è asserito se entrambi i
livelli sono in accordo.
Il primo livello di trigger è suddiviso in tre sottolivelli.
1. Primo sottolivello: agisce a livello dell’anodo. E’ implementato usando un
discriminatore analogico veloce accoppiato con ogni MAPMT, che permette di
riconoscere l’arrivo di un singolo fotoelettrone su ogni anodo e di distinguere
impulsi con una separazione temporale di 10-15 ns.
63
2. Secondo sottolivello: agisce a livello dei pixel. Viene rilasciato quando il numero di
singoli fotoelettroni registrato da una catena anodica supera un valore di soglia
fissato. Questo sottolivello è implementato in maniera digitale utilizzando dei
contatori, le cui uscite vengono continuamente confrontate con la soglia richiesta.
3. Terzo sottolivello: è detto PTT (Progressive Track Trigger) e agisce a livello della cella
elementare. È asserito quando l’attività del secondo sottolivello persiste per un
numero fissato di periodi di clock consecutivi.
Il secondo livello di trigger viene asserito a livello dei gruppi di PDM e ha il compito di
avviare le procedure di lettura e trasferimento dei dati provenienti dalla superficie
focale, divisa in 18 sezioni da 8 PDM ciascuna. La logica del secondo livello di trigger
individua gli eventi interessanti sulla base dei segnali di trigger di primo livello mediante
l’utilizzo di un algoritmo che prende il nome di Linear Track Trigger (LTT). LTT ha il
compito di cercare i punti luminosi che si muovono alla velocità della luce a 400 km di
distanza. In questo modo, il rumore statistico è ridotto in modo tale che solo i pattern
compatibili con eventi di EAS diano inizio alla procedura di lettura e trasferimento.
In Tabella 5 sono riportati i rate attesi in ogni livello di trigger.
Tabella 5: Rate di acquisizione per i vari livelli di trigger.
64
Figura 33: Organizzazione in due livelli del sistema di trigger di JEM-EUSO.
65
1.2.5. La clock board
La scheda di clock ha il compito di generare i clock di lavoro per l’elettronica e di
distribuirli ai dispositivi della superficie focale. Oltre a ciò, la scheda ha il compito di
interfacciarsi con il sistema GPS, di memorizzare i segnali di trigger provenienti dalle CCB
e di effettuare misure di tempo vivo e tempo morto.
Tutte queste funzioni sono implementate su un’unica FPGA.
Il clock di sistema ha una frequenza di 40 MHz ed è generato da un cristallo oscillatore
qualificato per gli utilizzi spaziali presente sulla clock board. A partire dal clock di
sistema, una logica dedicata genera poi il clock GTU, di frequenza pari a 400 kHz.
La clock board distribuisce il segnale GTU a tutti i dispositivi della FS mediante la catena
CCB – PDM - front end, attraversando vari livelli di schede. In particolare, l’invio alle CCB
è fatto mediante l’utilizzo di connessioni punto punto e il protocollo LVDS.
Per salvaguardare l’integrità del segnale, è necessario fare in modo che lo skew7 e il
jitter8 totali rispettino determinati requisiti temporali: per questo, si sfruttano percorsi
bilanciati, cavi equalizzati, piste specializzate per i segnali di clock e blocchi di sistema
dedicati (PLL e DLL) presenti nelle FPGA.
Per effettuare le misure temporali associate alla rivelazione di un EAS, la clock board
deve trovarsi in comunicazione con il sistema GPS (Global Positioning System) o, in caso
di fallimento di quest’ultimo, con il sistema temporale del modulo JEM della ISS.
Infatti, la misura del tempo di arrivo delle particelle su una scala di pochi microsecondi è
possibile etichettando con un’informazione temporale ogni segnale di trigger associato
ad un evento è. Il GPS comunica la data e il tempo (UTC time) della rivelazione e fornisce
un accurato segnale temporale noto come 1PPS (1 Pulse Per Second), di frequenza pari
a 1 Hz e sincronizzato con gli orologi atomici presenti sui satelliti GPS. Il segnale di 1PPS
7 Lo skew è la variazione degli istanti di commutazione del clock in funzione della posizione in un
circuito; può assumere valore positivo o negativo a seconda della posizione della sorgente di
clock e della direzione di propagazione dei dati. In generale, in un circuito logico è necessario
progettare una rete di distribuzione di clock con skew limitato. 8 Il jitter è la variazione temporale del periodo di clock in un certo punto. È una variabile casuale a
media nulla.
66
è utilizzato per controllare il conteggio di GTU che, assieme all’UTC time, fornisce
l’etichetta temporale necessaria a ricostruire il tempo di arrivo di ogni evento.
Un altro importante compito della scheda di clock consiste nella sincronizzazione degli
eventi. Per ricostruire correttamente eventi che fanno scattare il trigger
simultaneamente per due CCB è necessario che le informazioni temporali siano presenti
nella struttura dati e siano sincronizzate con la precisione di un GTU.
Per la sincronizzazione temporale delle CCB, sia sulla clock board che sulle CCB sono
implementati dei contatori di GTU. In seguito alla ricezione di un determinato comando,
i contatori di GTU sono inizializzati dalla clock board attraverso un segnale di Time-sync.
In corrispondenza di un trigger di primo livello, un cluster di PDM invia un pacchetto di
dati ad una CCB, che associa ad esso il numero di GTU contati. Se è asserito un trigger di
secondo livello, al pacchetto dati è associato anche il valore del contatore di GTU sulla
clock board. In questo modo, è possibile misurare la differenza tra i tempi di arrivo dei
trigger di secondo livello, mentre il tempo di arrivo dell’evento è ricostruito sfruttando
le informazioni del GPS con l’accuratezza del GTU. Dopo il trasferimento dei dati dalle
CCB alla CPU, è nuovamente distribuito il segnale Time-sync alle CCB per far ripartire
l’acquisizione.
Infine, la clock board effettua le misure del tempo vivo e del tempo morto,
implementando una coppia di contatori in grado di calcolare il tempo in cui il dispositivo
è occupato nell’acquisizione (tempo morto) e quello che intercorre tra due eventi
(tempo vivo).
In Figura 34 è mostrato il diagramma a blocchi della clock board e delle interfacce con gli
altri apparati di JEM-EUSO.
1.1. L’unità di elaborazione dei dati
L’unità principale di elaborazione dati di JEM-EUSO è costituita da un sistema formato
da due blocchi identici di memorizzazione e controllo, o SCU (da Storage and Control
Unit): uno prende il nome di scheda principale, l’altro di scheda di ricambio e
implementa la ridondanza cold (Figura 35).
67
Figura 34: Block diagram della scheda di clock e delle sue interfacce.
Figura 35: Schema di ridondanza dell’unità di memorizzazione e controllo.
68
Ogni SCU è composta da 7 schede, che implementano:
1 modulo per le alimentazioni;
1 modulo di supervisione;
1 modulo di memoria;
2 moduli di housekeeping;
1 modulo di interfaccia con gli ingressi e le uscite;
1 modulo di IDAQ (Integrated Data AcQuisition).
I moduli e le interconnessioni sono illustrati nello schema a blocchi in Figura 36. Tra i
blocchi del sistema di elaborazione dei dati elencati, due interessano in maniera diretta
la presente tesi: il modulo di housekeeping e quello di IDAQ. Il lavoro che ho portato
avanti, infatti, ha avuto l’obiettivo di consentire lo scambio di informazioni tra la scheda
di clock e questi due sottosistemi mediante l’utilizzo di determinati protocolli.
Figura 36: Schema a blocchi della CPU, con i vari moduli e le interconnessioni.
Il modulo di housekeeping (HK) ha il compito di monitorare e inoltrare i comandi di
controllo ai vari sottosistemi di JEM-EUSO, per questo possiede un’architettura
69
distribuita che si dirama attraverso tutto lo strumento [23]. È un sistema subordinato
alla CPU e tutte le sue attività sono caratterizzate da tempi di reazione, in genere, più
grandi di un secondo. L’architettura schematica del modulo di housekeeping e le sue
interazioni con i vari componenti del telescopio sono raffigurate, in colore blu, in Figura
37.
Figura 37: Architettura schematica dell’unità di HK e delle interazioni con gli altri elementi di JEM-EUSO.
Questo modulo ha i compiti di:
monitorare i vari sottosistemi e rivelare eventuali guasti;
generare gli allarmi per la CPU;
distribuire i comandi remoti;
acquisire informazioni telemetriche;
monitorare l’elettronica della FS;
consentire il passaggio alle schede di riserva, se necessario;
interagire con il sistema di gestione delle alimentazioni, per accendere o
spegnere quelle secondarie e monitorare il consumo di potenza.
70
La funzione principale del modulo IDAQ è quella di gestire la comunicazione tra la
memoria di massa e i sottosistemi di rivelazione e acquisizione di JEM-EUSO. La IDAQ ha
i compiti di:
creare e trasferire pacchetti di dati dalle CCB alla memoria di massa;
trasmettere comandi dalla CPU alle CCB;
aggiornare e correggere il software delle CCB;
permettere il passaggio dei comandi tra le CCB;
acquisire i dati della clock board circa le misure di tempo vivo e il tempo morto.
2. L’esperimento EUSO-Balloon
EUSO-Balloon è una missione collegata all’esperimento JEM-EUSO. Sarà costruito un
prototipo del telescopio e posizionato su di un pallone stratosferico in grado di
raggiungere la quota di 40 km e di effettuare dei voli della durata di qualche ora.
EUSO-Balloon servirà principalmente come test-bench di valutazione per la missione
JEM-EUSO e per le missioni future volte all’osservazione di EAS dallo spazio.
Gli scopi più importanti della missione EUSO-Balloon sono tre:
effettuare un test completo con un prototipo di JEM-EUSO, costituito da tutti i
suoi principali sottosistemi;
misurare le componenti critiche di background atmosferiche e terrestri;
rivelare, per la prima volta, EAS dall’atmosfera e non da siti al suolo.
Per avere informazioni utili alla missione JEM-EUSO, saranno necessari numerosi voli del
pallone, che saranno effettuati a distanza di almeno tre mesi l’uno dall’altro. Il primo di
questi lanci è previsto nel 2014.
A causa del rischio di caduta, i voli potranno avvenire solo o sul mare o sul ghiaccio. Ne
sono previsti alcuni brevi, della durata di poche ore, che si terranno sul Golfo di
Guascogna o sul mar Mediterraneo, e altri di durata maggiore a Kiruna, in Svezia.
71
Figura 38: L’esperimento EUSO-Balloon durante il primo volo che sarà effettuato in modalità nadir. Sono visibili le crash-pad galleggianti di sicurezza.
2.1. Gli obiettivi di EUSO-Balloon
Gli obiettivi di EUSO-Balloon sono articolati in tre livelli e riguardano la verifica della
tecnologia, l’acquisizione di dati e lo svolgimento, per la prima volta, di un esperimento
di questo tipo.
A-level: verifica della tecnologia
EUSO-Balloon, essendo costituito da tutti i principali sottosistemi di JEM-EUSO (un
modulo fotomoltiplicatore, una Cluster Control Board, un sistema ottico a tre lenti),
permetterà di effettuare una verifica completa di tutte le tecnologie chiave e della
strumentazione dei rivelatori adoperati dall’esperimento spaziale.
Oltre al monitoraggio di parametri come le tensioni di alimentazione o la temperatura,
sarà effettuata una verifica del funzionamento dell’elettronica di front-end,
dell’hardware on-board e degli algoritmi software utilizzati nei sistemi di trigger e di
ricostruzione degli sciami. Le operazioni di test saranno effettuate in condizioni sia di
basso che di alto background ultravioletto.
72
B-level: acquisizione dei raggi cosmici e studio del background
EUSO-Balloon osserverà, per la prima volta, eventi cosmici non dal suolo, ma
dall’atmosfera, e fornirà informazioni utili alla missione JEM-EUSO e a tutti i futuri
esperimenti spaziali volti alla rivelazione di raggi cosmici di altissima energia.
JEM-EUSO sfrutterà l’atmosfera terrestre per osservare radiazione ultravioletta e
riflessioni Cherenkov, e sarà, quindi, molto sensibile alla variazione di sorgenti di
background nell’intervallo di frequenze dell’ultravioletto. Misurare la luce e l’airglow di
fondo sarebbe un importante risultato per l’ottimizzazione delle modalità di lavoro della
missione JEM-EUSO.
Gli obiettivi principali del livello B sono:
- l’acquisizione di dati sugli UHECR dall’atmosfera;
- l’acquisizione di misure sperimentali del background al di sopra dei 40 km di
altezza;
- la verifica delle modalità di osservazione;
- l’ottimizzazione degli algoritmi di trigger sulla base di osservazioni sperimentali
e tenendo in considerazione le variazioni del background;
- la verifica della capacità di osservazione della fotocamera per radiazione
infrarossa.
C-level: missione di precursore
Sebbene la fisica e le tecniche di rivelazione degli EAS siano già utilizzate da tempo nei
rivelatori al suolo, la loro osservazione dallo spazio tramite emissione di luce UV non è
mai stata effettuata prima, e tutte le misure e le simulazioni sono basate sui risultati dei
rivelatori a terra o su modelli teorici. L’osservazione, per la prima volta, di EAS dallo
spazio consentirà la verifica delle previsioni teoriche e fornirà dati di valutazione per
tutti i futuri esperimenti spaziali riguardanti gli UHECR.
In particolare, gli sciami atmosferici che potranno essere osservati da EUSO-Balloon
sono quelli di energia pari a circa 3 ∙ 1018 eV, con un rate stimato di 0.1 eventi in un’ora.
73
2.2. Panoramica dell’esperimento
Analogamente alla missione JEM-EUSO, l’immagine del campo di vista di EUSO-Balloon è
proiettata, attraverso un sistema ottico di Fresnel a tre lenti, su di un PDM posto sulla
superficie focale in grado di distinguere gli eventi dal fondo. L’analisi dell’immagine di un
segnale triggerato consente la determinazione della direzione dell’evento mediante la
tecnica triangolare mostrata in Figura 39. Una misura dell’intensità luminosa dei pixel
della fotocamera fornirà il valore dell’energia dei raggi cosmici incidenti.
Lo strumento lavorerà nella banda dell’UV, e, più precisamente, tra i 290 e i 430 nm. La
modalità di funzionamento principale sarà quella a conteggio di singolo fotone, con un
guadagno del fotorivelatore di 106.
Il piano focale di EUSO-BALLOON sarà costituito da un singolo PDM, composto da 36
fotomoltiplicatori a 64 anodi (per un totale di 2304 pixel), e da una sola ottica di Fresnel
costituita da 3 lenti quadrate in polimetilmetacrilato (PMMA), un materiale plastico più
trasparente del vetro commercialmente noto con il nome di Plexiglas.
Le dimensioni del piano focale (15 x 15 cm) e delle lenti di Fresnel (100 cm x 100 cm)
sono tali da assicurare un campo di vista (FoV, Field of View) di 12° x 12°: così,
l’osservazione in modalità nadir può avvenire con un range di osservazione che va da 0°
a 30°. Inserendo le lenti di Fresnel in una struttura a tenuta d’acqua, si renderanno
impermeabili gli elementi più importanti, come il PDM e l’elettronica.
La massa totale sospesa è stimata intorno ai 200 kg, mentre il volume occupato dalla
capsula dovrebbe essere di circa 2 m3. Una rappresentazione schematica dell’apparato
sperimentale con i vari componenti è mostrata in Figura 40.
74
Figura 39: Vista tridimensionale dello sviluppo di un EAS nel FoV di EUSO-Balloon.
Figura 40: Rappresentazione schematica del telescopio di EUSO-Balloon.
Il pallone si sposterà a una velocità non superiore a 0.1 km/s, a differenza dei 7 km/s
della ISS (Figura 41). Per simulare una velocità confrontabile a quella della stazione
spaziale, il pallone effettuerà delle rivoluzioni azimutali. Durante un primo volo, lo
75
strumento lavorerà in modalità nadir e lo spin-rate sarà determinato dalle oscillazioni
azimutali naturali (Figura 38).
Nei voli successivi, l’apparato funzionerà in modalità tilt, con un’inclinazione variabile tra
0° e 30° rispetto al nadir, mentre un motore indurrà rivoluzioni azimutali con uno spin-
rate fino a 3 giri al minuto (Figura 42).
Figura 41: Velocità e quota della Stazione Spaziale Internazionale che ospiterà JEM-EUSO e del pallone stratosferico che trasporterà EUSO-Balloon.
Figura 42: Inclinazione dell’apparato sperimentale di EUSO-Ballon durante il funzionamento in modalità tilt.
76
2.3. Architettura di EUSO-Balloon
In Figura 43 è mostrato il diagramma a blocchi funzionale di EUSO-Balloon [25], con tutti
i sottosistemi e i componenti principali, tra cui:
il telescopio (TEL);
il sottosistema di PDM;
il sottosistema di Data Processor (DP), per l’elaborazione, la memorizzazione e il
controllo dei dati;
il sottosistema Power Pack (PWP), per la gestione delle alimentazioni;
l’insieme dei collegamenti (BuS);
la fotocamera IR;
il Laser.
77
Figura 43: Diagramma a blocchi dell’apparato di EUSO-Balloon.
78
Capitolo III
Il gruppo JEM-EUSO di Napoli ha la responsabilità di realizzare ed integrare l’intero
sistema di acquisizione ed elaborazione dei dati (DP, acronimo di Data Processor) di
EUSO Balloon. Come si è visto nel capitolo precedente, il DP è un sistema complesso,
costituito da un gran numero di moduli che scambiano informazioni tra loro. È quindi
importante che il trasferimento di dati all’interno di una rete così elaborata sia
effettuato mediante l’utilizzo di protocolli di comunicazione adeguati, al fine di
minimizzare gli errori di trasmissione.
In quest’ambito, il mio lavoro è stato quello di realizzare dispositivi ricevitori e
trasmettitori comunicanti tra loro tramite alcuni dei protocolli stabiliti dalla missione. In
particolare, mi sono occupata dell’interfaccia SpaceWire tra la scheda di clock e la CPU e
dell’implementazione di un sistema che raccolga informazioni circa i parametri vitali
della clock board e li invii al modulo di Housekeeping mediante il protocollo SPI.
1. La trasmissione dell’informazione digitale
Per trasmissione di dati si intende il trasferimento di informazioni tra due o più nodi di
una rete di comunicazione [26]. Affinché possa avvenire la trasmissione, è necessaria la
presenza di:
una sorgente che generi l’informazione;
un messaggio, cioè una parte dell’informazione che sia autoconsistente;
79
un canale, o mezzo, attraverso cui avvenga la trasmissione;
un codificatore, che converta il messaggio in una forma adatta a essere
trasmessa attraverso il canale scelto;
un decodificatore, che converta i segnali ricevuti in una forma che ne consenta
l’interpretazione dall’utente;
un’unità di destinazione, che riceva l’informazione.
Le caratteristiche del canale possono avere un’influenza determinante sulla scelta della
codifica del messaggio, che deve essere trasformato in sequenze di segnali idonei alla
trasmissione lungo il mezzo utilizzato.
In generale, quindi, l’informazione è disponibile in un codice sorgente, in un codice
canale e in un codice destinazione, tutti e tre in grado di soddisfare le esigenze delle
unità che li manipolano.
1.1. Ridondanza dell’informazione
La lunghezza mb di un numero naturale Nb espresso in una base b è espressa dalla
relazione [27]:
dove le parentesi quadre aperte superiormente indicano l’arrotondamento per difetto.
Da questa relazione, si ricava che il numero di bit sufficiente a codificare n simboli in
logica binaria, utilizzando tutte le possibili combinazioni, è:
Il fatto che tutte le combinazioni dei simboli binari siano assegnate ad un messaggio
implica che in una codifica di questo tipo non c’è ridondanza e risulta efficiente se gli n
simboli sono equiprobabili.
Si può dimostrare che, se esiste un’apprezzabile differenza di probabilità di comparsa tra
i vari simboli, assegnare i codici più corti a quelli che si presentano più frequentemente
può diminuire la lunghezza media dell’intero messaggio. Questa tecnica è adottata, ad
esempio, nel codice Morse, i cui simboli sono riportati in Tabella 6.
80
Tabella 6: I simboli del codice Morse.
L’importanza dell’assegnazione di codici con numero di bit più alto ai caratteri meno
probabili è legata al fatto che tutti i sistemi di comunicazione hanno un limite di flusso
esprimibile in bit al secondo. Una volta fissato il numero di bit trasferibile in un certo
tempo, minore è la lunghezza media dei messaggi, maggiore è la quantità di
informazione che può essere trasferita.
1.2. Rivelazione e correzione degli errori di trasmissione
I sistemi di comunicazione a monte e a valle del canale sono costituiti da circuiti
elettronici soggetti al cosiddetto rumore bianco che è intimamente legato alle
caratteristiche dei dispositivi attivi (shot noise9) e passivi (Johnson noise10) utilizzati. Il
rumore bianco è presente a tutte le frequenze, e l’ampiezza dipende dai parametri di
lavoro (come la temperatura e le tensioni di alimentazione); è ineliminabile, ma può
essere ridotto. Un esempio di rumore bianco è rappresentato in Figura 44.
Esistono anche altri tipi di rumore, sia deterministici che casuali, tutti legati alla presenza
di apparecchiature elettroniche.
9 Lo shot noise è un rumore elettronico dovuto alla natura discreta della carica elettrica e si
manifesta sotto forma di fluttuazioni casuali della corrente elettrica continua. 10
Il Johnson noise è un rumore elettronico generato dall’agitazione termica dei portatori di carica presenti all’interno di un conduttore.
81
Figura 44: Rumore bianco generato da un computer durante un processo: sulle ordinate è presente la tensione misurata, sulle ascisse il tempo.
La presenza di rumore comporta la possibilità che un livello elettrico codificante uno 0
logico sia interpretato da uno dei circuiti elettronici come un 1, compromettendo
l’intero dialogo. Questa probabilità dipende fortemente dal rapporto segnale/rumore
che caratterizza il sistema; il modo più semplice per ridurre questo rapporto consiste
nell’aumentare la differenza di tensione tra i due livelli, detta immunità al rumore. Si
tratta di una soluzione che si scontra con gli altri requisiti dei circuiti digitali, perché
comporterebbe un incremento della potenza dissipata.
In alternativa, si può fare in modo che gli errori siano rilevati e, in qualche caso,
addirittura corretti, in modo che essi non influenzino le prestazioni del sistema. Questa
possibilità è offerta da un’opportuna ridondanza del codice ed è implementata
aggiungendo ai pacchetti trasmessi delle combinazioni supplementari di bit adibite
esclusivamente al rilevamento degli errori. La forma più elementare di questo tipo di
tecnica prende il nome di controllo di parità e consiste nel collocare un bit, detto bit di
parità, in ogni pacchetto che deve essere trasmesso. Il bit di parità permette di verificare
che il numero di 1 presenti nella parola alla quale è associato sia sempre pari (o sempre
dispari). La parità si dice pari se si richiede che il gruppo di bit assieme al bit di parità
abbiano un numero pari di 1; se si fa la scelta duale, la parità si dice dispari. Quest’ultima
82
opzione è quella preferita, perché, nel caso in cui il dato da trasmettere sia formato da
tutti 0, ci sarà almeno il bit di parità ad 1, evitando la trasmissione di una combinazione
di soli 0 che potrebbe essere facilmente simulata da un guasto.
Il controllo di parità è un modo semplice ed efficace di rilevare singoli errori, ma non è di
alcuna utilità se, in una stessa sequenza, sono presenti più di un errore.
Una tecnica leggermente più complessa, ma notevolmente più efficace, consiste
nell’applicare il controllo di parità in un blocco di codici sia alle righe (controllo
longitudinale) che alle colonne (controllo trasversale). Se il blocco è formato da n parole
di n bit ciascuna, il numero totale di bit di parità da aggiungere è 2n: infatti, per il
controllo orizzontale è necessario un bit per parola, cioè n bit, e il controllo in verticale
richiede una parola di n bit. In Figura 45, è mostrato un blocco di 8 codici da 8 bit a cui
sono aggiunti 16 bit di parità: in questa configurazione, si possono rivelare, con buona
probabilità, fino a 2 errori simultanei. Se le dimensioni del blocco dati non sono uguali, la
probabilità di rivelare errori non è più uguale per le due dimensioni.
Figura 45: Controllo di parità su un blocco di 8x8 bit.
83
La ridondanza può essere introdotta, oltre che a livello di codice, anche a livello
strutturale, fornendo, a differenza del controllo di parità, anche la possibilità di
correggere gli errori identificati.
Si consideri un sistema in cui bisogna eseguire su un’informazione x un trattamento
indicato genericamente con f(x), e sia l’operazione f(x) eseguita parallelamente da un
numero dispari (ad esempio, 3) di elementi identici, come mostrato in Figura 46. Un
eventuale errore può essere rivelato inviando i risultati ad un comparatore
maggioritario, una struttura che presenta due uscite: quella del risultato e quella per il
bit di errore. Quest’ultimo è attivato soltanto se gli ingressi del comparatore sono diversi
tra loro:
In tutti gli altri casi, l’uscita corrisponde al risultato fornito da almeno due unità di
elaborazione.
La logica maggioritaria ha il grande limite di moltiplicare per almeno 3 il costo della
logica, e l’utilizzo di un approccio di questo tipo è giustificato solo da un’assoluta
necessità di ridurre l’incidenza di errori.
Figura 46: Schema di funzionamento della logica maggioritaria.
84
2. I protocolli di comunicazione
I protocolli di comunicazione consistono in un insieme di regole atte a trasferire i dati da
un terminale all’altro nel miglior modo possibile e con il minor numero di errori. I
protocolli devono rispondere a standard ben precisi, perché solo rispettando normative
è possibile rendere intercomunicanti sistemi anche profondamente diversi.
L’esigenza di utilizzare protocolli di comunicazione nasce dal fatto che, affinché l’unità
ricevente acquisisca un’informazione che abbia significato, il flusso di cifre inviate deve
essere ricostruito correttamente.
L’incompatibilità sui segnali è a volte ineliminabile, perché consente di massimizzare le
prestazioni di periferiche con caratteristiche e compiti profondamente diversi.
Attualmente, tuttavia, molte aziende costruttrici adottano dei protocolli standard che
riguardano sia la comunicazione dei dati che l’interfaccia fisica, costituita da cavi e
connettori. Tra i più noti e comuni standard di comunicazione, ci sono il formato seriale
EIA RS-232, usato spesso per la codifica del codice alfanumerico ASCII, il protocollo
parallelo ATA/IDE, per l’accesso a dispositivi di memorizzazione come CD-ROM e hard
disk, e l’interfaccia seriale USB, per le periferiche di uso comune.
Un importante riferimento è rappresentato dal modello ISO/OSI (International Standard
Organization / Open System Interconnection), a cui fanno capo tutti i costruttori del
mondo. È noto anche come “modello a 7 livelli” e stabilisce, per una rete di
comunicazione, un’architettura a strati (Figura 47), in cui i protocolli sono suddivisi in:
- protocolli di basso livello (livelli 1, 2, 3, 4);
- protocolli di alto livello (livelli 5, 6, 7).
I livelli più bassi affrontano problematiche hardware, quelli più alti riguardano questioni
relative ai software.
Il modello ISO/OSI non è rigido: piuttosto, costituisce un punto di riferimento per le
architetture di rete, che possono più o meno distanziarsi da esso.
85
Figura 47: Architettura a livelli del modello ISO/OSI.
Protocollo di livello 1, o livello fisico
Obiettivo: trasmettere un flusso di dati attraverso un collegamento fisico, rispettando le
procedure meccaniche ed elettroniche necessarie a stabilire, mantenere e disattivare il
collegamento.
Un protocollo di livello fisico fissa i valori di tensione che traducono elettricamente lo 0 e
l’1 logici e la durata del segnale elettrico che codifica un bit, oltre a stabilire le interfacce
di comunicazione meccaniche ed elettriche.
Protocollo di livello 2, o livello di linea
Obiettivo: stabilisce la modalità di trasferimento dei bit in maniera affidabile ed effettua
la rivelazione degli errori e il controllo di flusso. La sua unità dati è il frame.
Un protocollo di livello di linea si occupa di formare i dati da inviare attraverso il livello
fisico, organizzandoli in pacchetti provvisti di un header e di una tail. Il processo di
frammentazione dei dati in pacchetti è detto framing, e i singoli pacchetti sono i frame.
Il protocollo si occupa anche del controllo del flusso di dati: in caso di sbilanciamento
della velocità di trasmissione tra mittente e destinatario, può rallentare la macchina più
veloce.
Protocollo di livello 3, o livello di rete
Obiettivo: rendere i livelli superiori indipendenti dai meccanismi e dalle tecnologie di
trasmissione usate per la connessione. La sua unità dati è il pacchetto.
86
Un protocollo di livello di rete definisce tutte le procedure necessarie al collegamento.
Divide il messaggio da trasmettere in pacchetti, diversi rispetto ai frame del livello di
linea, e ne gestisce il transito (indirizzamento e instradamento) attraverso la rete di
trasmissione.
Protocollo di livello 4, o livello di trasporto
Obiettivo: permettere un trasferimento di dati trasparente e affidabile tra due host,
implementando un controllo degli errori. La sua unità dati è il messaggio.
Un protocollo di livello di trasporto gestisce l’avvio e la chiusura dei collegamenti, sceglie
il percorso ottimale e rivela i dati errati trasmessi. Inoltre, ottimizza l’uso delle risorse di
rete e previene la congestione, cioè evita che arrivino troppi pacchetti
contemporaneamente ad uno stesso nodo.
Protocollo di livello 5, o livello di sessione
Obiettivo: controllare la comunicazione tra le applicazioni: avviare, mantenere e
terminare connessioni (sessioni).
Un protocollo di livello di sessione aggiunge dei servizi più avanzati a quelli offerti dal
livello di trasporto: definisce le modalità per individuare l’indirizzo dell’utente;
interrompe il collegamento e lo riattiva; stabilisce se il link è monodirezionale o
bidirezionale, e, in quest’ultimo caso, se è full-duplex o half-duplex. In un collegamento
full-duplex, la comunicazione può avvenire in entrambe le direzioni simultaneamente,
mentre, in un collegamento half-duplex, il trasferimento non può avvenire
contemporaneamente nelle due direzioni.
Protocollo di livello 6, o livello di presentazione
Obiettivo: trasformare i dati forniti dalle applicazioni in una forma idonea e
comprensibile all’utente.
Un protocollo di livello di presentazione stabilisce le modalità interpretazione e modifica
dei dati ricevuti, in modo che siano presentati in un formato standardizzato. Può offrire,
87
inoltre, servizi di comunicazione comuni, come la crittografia, la compressione del testo
e la riformattazione.
Protocollo di livello 7, o livello di applicazione
Obiettivo: interfacciare utente e macchina.
Un protocollo di livello di applicazione definisce le procedure, gli archivi e i pacchetti
software applicativi che l’utente può utilizzare anche se fisicamente allocati su altri
terminali di rete.
2.1. Suddivisione dei protocolli
Le caratteristiche più importanti di un protocollo di comunicazione sono la modalità con
cui è effettuata la trasmissione (se parallela o seriale), la presenza o meno di un segnale
di sincronizzazione, e il tipo di unità elementare adottata (se è il bit o il byte).
2.1.1. Protocolli paralleli e seriali
La maggior parte dei protocolli di comunicazione prevede che il trasferimento delle
informazioni tra dispositivi digitali sia seriale: i dati sono trasferiti uno dopo l’altro e
giungono sequenzialmente al ricevitore nello stesso ordine con cui sono stati inviati dal
trasmettitore. La modalità seriale richiede architetture più elaborate e una maggiore
complessità di gestione rispetto alla trasmissione parallela, che, al contrario, prevede un
trasferimento simultaneo di un gruppo di dati, eppure è molto più diffusa principalmente
perché richiede un minor numero di fili, con conseguente riduzione dei costi.
2.1.2. Protocolli asincroni e sincroni
La trasmissione si dice asincrona quando è indefinito l’intervallo temporale tra due
caratteri consecutivi. Ogni carattere è costituito da una bit di start, che indica l’inizio della
88
trasmissione, dal dato vero e proprio, da un bit di parità, e da uno o due bit di stop, a
indicare il termine della trasmissione. Ogni bit del carattere deve, comunque, durare un
tempo prefissato, detto bit-time.
Nei protocolli sincroni sono assenti i bit di start e stop e la sincronizzazione del messaggio
è affidata a particolari caratteri inviati all’inizio di ciascun blocco. L’unità fondamentale di
trasmissione è il frame e il numero di bit che la costituisce dipende dal protocollo.
2.1.3. Protocolli orientati al byte e orientati al bit
In una rete di comunicazione che utilizza un protocollo orientato al carattere, o al byte
(COP, da Character Oriented Protocol), il ricevitore può acquisire un numero fissato di bit
alla volta. È utilizzato, ad esempio, da quei dispositivi che comunicano esclusivamente
caratteri ASCII (8 bit). Il grande limite dei protocolli COP è proprio quello di poter
comunicare solo informazioni di lunghezza (in termini di bit) fissata.
I protocolli orientati al bit (BOP, Bit Oriented Protocol) sono stati introdotti agli inizi degli
anni ’70 in quanto quelli COP non erano più idonei a far fronte alle nuove esigenze.
Questi protocolli prevedono una flag per distinguere l’inizio e la fine di un carattere.
In Tabella 7, sono mostrati i vantaggi dei BOP rispetto ai COP.
3. I protocolli di comunicazione adottati dal Data Processor
di JEM-EUSO ed EUSO-Balloon
Si è visto (Capitolo II, par. 1.5) che il sistema di elaborazione dei dati (DP, Data Processor)
di JEM-EUSO e di EUSO Balloon comprende la maggior parte dell’elettronica digitale dello
strumento.
89
COP BOP
Il collegamento non può essere gestito in full-
duplex.
E’ possibile il funzionamento sia in half-duplex
che in full-duplex.
Le informazioni di servizio non possono essere
inviate contemporaneamente ai messaggi dati.
I messaggi possono contenere sia i dati che le
informazioni di servizio.
E’ necessaria una sequenza di accettazione in
risposta ad ogni blocco trasmesso.
Più frame possono essere trasmessi in
sequenza senza richiedere un avviso di
accettazione per ciascuno di essi.
Il protocollo necessita di un gran numero di
caratteri di controllo, alcuni dei quali hanno
significato diverso a seconda dello stato dei
collegamenti.
Tutte le trame hanno un formato unico, con un
solo delimitatore di inizio o di fine
(denominato flag).
La trasmissione carattere per carattere richiede
particolari accorgimenti per realizzare la
trasparenza dei dati rispetto al codice impiegato
e al contenuto informativo.
Il trasferimento dell’informazione si effettua
senza alcuna interpretazione del contenuto,
ciò assicura una totale trasparenza dei dati.
Tabella 7: Differenze principali tra i COP e i BOP.
L’apparato DP si occupa, oltre che della manipolazione e memorizzazione dei dati, di
effettuare operazioni di controllo e di gestire i comandi. In particolare, il DP:
- controlla l’elettronica di front end;
- implementa il secondo livello di trigger;
- etichetta gli eventi con le informazioni sul tempo di arrivo e sulla posizione;
- gestisce la memorizzazione dei dati;
- misura il tempo vivo e il tempo morto dello strumento;
- fornisce i segnali di sincronizzazione;
- monitora la fotocamera IR;
- governa il sistema di housekeeping;
90
- gestisce il sistema di telemetria.
Il DP si presenta, quindi, come un sistema abbastanza complesso, in cui le connessioni
tra i diversi apparati in gioco sono realizzate facendo uso di un gran numero di protocolli
di comunicazione diversi.
Figura 48: Diagramma a blocchi del DP di EUSO Balloon.
In Figura 48, è illustrato il diagramma a blocchi del sistema di DP di EUSO Balloon e le
connessioni tra i componenti principali, che sono:
la CCB;
la CPU;
il sistema di memorizzazione (Data Storage);
il sistema di housekeeping (HK);
la Clock Board;
il ricevitore GPS;
la fotocamera IR;
91
il sistema di generazione degli allarmi.
L’unità principale che svolge le funzioni del DP è la CPU, che, infatti, è in comunicazione
con tutti gli altri sottosistemi del DP.
La CPU riceve i dati sperimentali dalle CCB e dalla scheda di clock e decide se
memorizzarli a bordo o se inviarli a terra. In corrispondenza di ogni segnale di trigger,
sono inviati circa 330 kByte di dati dalla CCB alla CPU attraverso il protocollo SpaceWire.
È necessaria un’ulteriore interfaccia, implementata attraverso il protocollo ad alta
velocità PCI, che ha il compito di trasformare i pacchetti SpaceWire in una forma
compatibile con la porta COTS11 utilizzata dalla CPU.
Il sistema di housekeeping e quello di generazione degli allarmi, invece, comunicano con
la CPU utilizzando un protocollo seriale a bassa velocità, noto con il nome di SPI (Serial
Peripheral Interface). Il protocollo SPI è utilizzato anche per la comunicazione tra PDM e
CCB.
Le fotocamere digitali trasmettono le loro informazioni alla CPU mediante il protocollo
USB, e i dati sono trasferiti alle memorie di massa mediante l’interfaccia SATA (acronimo
di Serial Advanced Technology Attachment).
Lo scopo di questo lavoro di tesi è stata la realizzazione di dispositivi hardware in grado
di comunicare tra loro mediante i protocolli SpaceWire e SPI; nei prossimi paragrafi,
saranno presentate le caratteristiche più importanti dei due standard di comunicazione
presi in esame.
3.1. Il protocollo SpaceWire
Lo SpaceWire è una rete di comunicazioni per applicazioni spaziali utilizzata in tutto il
mondo definita dall’Agenzia Spaziale Europea (ESA) in collaborazione con le agenzie
spaziali americana (NASA), giapponese (JAXA) e russa (RKA).
11
Un componente hardware di un sistema si dice COTS (Commercial Off The Shelf component) se è disponibile sul mercato per l’acquisto da parte di aziende di sviluppo interessate a usarlo nei propri progetti.
92
I nodi, cioè i sottosistemi hardware e software che utilizzano i servizi offerti dalla rete
SpaceWire, possono inviare pacchetti discreti di informazioni di vario tipo connettendosi
tra loro tramite collegamenti seriali asincroni, di basso costo, ad alta velocità (fino a 400
Mbit/s), full-duplex e basati sugli standard commerciali IEEE 1355 e LVDS,
opportunamente adattati per il settore spaziale.
Gli scopi principali dello standard sono:
facilitare la costruzione di sistemi di gestione dati ad elevate prestazioni;
ridurre i costi di integrazione dei sistemi;
promuovere la compatibilità tra l’equipaggiamento di gestione dei dati e i vari
sottosistemi;
incoraggiare il riutilizzo dello stesso equipaggiamento per altre missioni.
La modulazione12 e il formato dei dati seguono la parte dello standard IEEE 1355
dedicata alla codifica Data Strobe e alle terminazioni differenziali dei segnali (DS-DE,
Data Strobe encoding - Differential Ended signaling). Lo standard DS-DE stabilisce anche
il routing, il flusso di controllo e la rivelazione di errori nell’hardware, senza l’esigenza di
utilizzare software dedicato.
Il protocollo SpaceWire è caratterizzato da un tasso di errori molto basso e da una
relativamente semplice elettronica digitale progettata in modo da assicurare un
comportamento sempre deterministico del sistema.
Lo SpaceWire e l’IEEE 1355 DS-DE consentono di lavorare su un intervallo di velocità di
trasmissione dei dati molto vasto, che può variare tra i 2 e i 400 Mbit/s, e prevedono
una logica di recovery tramite un meccanismo di fail-over automatico. Attraverso questo
meccanismo, il sistema risulta tollerante ai guasti, visto che i dati possono trovare strade
alternative grazie alla presenza di bus dati multipli.
Il protocollo SpaceWire, definito nello standard europeo ECSS-E50-12A, è organizzato in
vari livelli:
livello fisico,
12
La modulazione è consiste nel variare uno o più proprietà di un segnale periodico ad alta frequenza, chiamato carrier signal, con un altro segnale, che prende il nome di modulating signal, che contiene anch’esso un’informazione d trasmettere. I tre parametri chiave di una forma d’onda periodica sono l’ampiezza, la fase e la frequenza.
93
livello di segnale,
livello di carattere,
livello di scambio,
livello di pacchetto,
livello di rete.
3.1.1. Livello fisico
Il livello fisico dello Standard riguarda cavi, connettori, parti di cavi e di circuiti stampati
(PCB, Printed Circuit Board), ed è stato sviluppato per soddisfare le specifiche di
compatibilità elettromagnetica (EMC) tipiche dei veicoli spaziali.
Per raggiungere un’elevata velocità di trasmissione su distanze anche di 10 m, lo
standard impone che i cavi utilizzati presentino un’impedenza caratteristica di 100 Ω (di
conseguenza, si rivela indispensabile per l’adattamento un’impedenza di terminazione
della linea pari a 100 Ω), skew trascurabile nei segnali differenziali, una bassa
attenuazione del segnale, un basso cross-talk e buone prestazioni ECM.
3.1.2. Livello segnale
Nella sezione del protocollo riguardante il livello segnale, sono stabiliti i livelli di tensione
di lavoro, i margini di rumore e la codifica da utilizzare.
3.1.2.1. LO STANDARD LVDS
Lo standard LVDS (acronimo di Low-Voltage Differential Signalling) è un’interfaccia ad
alta velocità implementata mediante configurazioni differenziali, in cui l’informazione è
trasmessa come differenza tra due tensioni. Questa interfaccia si rivela adatta a
connettere tra loro board o altre unità distanti tra loro anche 10 m, e i margini di rumore
sono tali da minimizzare il consumo di potenza dei dispositivi mediante l’utilizzo di
tensioni di lavoro basse.
94
Il livello di segnale usato dal protocollo LVDS è illustrato in Figura 49, mentre in Figura 50
sono mostrati un driver e un receiver di una configurazione LVDS, connessi attraverso un
cavo di impedenza differenziale pari a 100 Ω, terminato su un’impedenza di
adattamento dello stesso valore.
Figura 49: Livello di segnale dello standard LVDS.
Figura 50: Trasmettitore e ricevitore in configurazione LVDS.
95
I driver LVDS utilizzano una logica che è definita di tipo current mode.
Una sorgente eroga una corrente costante di circa 3.5 mA, che esce dal driver, passa
attraverso il mezzo di trasmissione, scorre attraverso la resistenza di terminazione di 100
Ω e torna al trasmettitore attraversando nuovamente il cavo. La direzione del flusso di
corrente attraverso la resistenza di terminazione determina il livello logico digitale ed è
controllata attraverso due coppie d’interruttori a transistor: quando i transistor
contrassegnati con il simbolo + sono accesi e quelli con il simbolo – sono spenti, la
corrente scorre nel verso indicato in Figura 50 e, ai capi del resistore di terminazione, è
presente una tensione positiva di 350 mV. Quando i transistor + sono spenti e quelli –
sono accesi, la corrente scorre nel verso opposto a quello mostrato in figura: in questo
caso, la tensione ai capi della resistenza è negativa e pari a -350 mV.
Le correnti uguali e opposte che scorrono attraverso il cavo differenziale generano due
campi elettromagnetici uguali e opposti che si cancellano l’uno con l’altro: la
conseguenza di questo fenomeno è la riduzione del rumore elettromagnetico di modo
comune.
I ricevitori LVDS possiedono un’elevata impedenza d’ingresso, in modo che la maggior
parte della corrente passi attraverso la resistenza di 100 Ω e che la tensione ai capi di
quest’ultima assuma valore di ± 350 mV.
3.1.2.2. LA CODIFICA Data Strobe
Lo standard SpaceWire utilizza la codifica Data Strobe (DS), scelta perché ha la
caratteristica di migliorare la tolleranza allo skew.
Questo tipo di codifica sfrutta le due linee di comunicazione Data e Strobe: la linea Data
trasporta il dato vero e proprio, la linea Strobe è tale che il segnale di clock con il quale il
ricevitore campiona la linea Data possa essere ricostruito. Ciò è fatto utilizzando la
funzione booleana:
dove il simbolo indica l’operazione booleana di OR esclusivo, o xor. Affinché sia
implementata tale funzione, il segnale Strobe deve subire una commutazione ogni volta
che due bit contigui trasmessi sulla linea Data non presentano variazioni; resta invariato,
96
invece, qualora avvenga una commutazione. In Figura 51 è mostrato un esempio di
codifica DS: il segnale Data trasmette la parola 10010111, mentre il segnale Strobe
trasmette 00111101, in modo che l’operazione di xor effettuata bit a bit consenta la
ricostruzione del segnale di clock. Il clock ricostruito dal ricevitore ha frequenza
dimezzata rispetto al clock di partenza, per questo motivo il dato deve essere
campionato sia sul fronte di salita che su quello di discesa.
Figura 51: Esempio di codifica Data Strobe.
Il circuito di recovery del clock è mostrato in Figura 52: in ingresso ci sono le coppie
differenziali data strobe, convertite in segnali singoli da dei buffer. I dati sono poi
campionati dai flip flop FF_R e FF_F, che sono governati dal clock ricostruito mediante la
porta xor. In Figura 53, è mostrata l’evoluzione temporale dei segnali di maggiore
interesse della logica di recovery adottata nello standard SpaceWire.
97
Figura 52: Circuito di recovery del clock.
Figura 53: Evoluzione temporale dei segnali del circuito di recovery del clock.
Un collegamento SpaceWire comprende due coppie di segnali differenziali: una
trasmette i segnali Data e Strobe in un verso, l’altra li trasmette nel verso opposto.
3.1.3. Livello carattere
Il livello carattere segue il protocollo DS-DE dello Standard IEEE 1355, ma include anche
Time-Codes, per inviare lungo un collegamento SpaceWire anche le informazioni
temporali del sistema.
I caratteri possono essere di due tipi, in base all’informazione che trasportano, e
possono essere distinti attraverso una flag associata.
98
A ciascun carattere è assegnato un bit di parità, al fine di rivelare eventuali errori di
trasmissione. Esso produce parità dispari, cioè è tale che il numero di 1 presenti tra gli 8
bit del dato o i 2 bit di controllo, il bit di parità corrente e la flag di controllo sia dispari
(Figura 54).
I caratteri contenenti un dato
In Figura 55 è mostrato un carattere di questo tipo: è costituito da un bit di parità, una
flag di controllo impostata a 0 e gli 8 bit costituenti il dato vero e proprio.
Figura 54: Ricoprimento dei bit di parità associati, rispettivamente, a un carattere contenente un dato e ad un carattere di controllo.
Figura 55: Un carattere contenente un dato.
I caratteri contenenti un codice di controllo
I caratteri di controllo sono formati da un bit di parità, una flag di controllo, questa volta
impostata a 1, e da 2 bit rappresentanti l’informazione di controllo. I caratteri e i codici
di controllo disponibili sono mostrati in Figura 56.
99
Figura 56: I caratteri e i codici di controllo.
Per evitare l’overflow del buffer di ricezione e la conseguente perdita di dati, il flusso di
dati lungo un link è controllato utilizzando il carattere FCT (Flow Control Token). Un FCT
è inviato da una terminazione A di un collegamento ad un’altra B quando A è pronta a
ricevere un dato.
Il codice di controllo NULL viene trasmesso se il link non sta inviando dati o token di
controllo, in modo da mantenere il collegamento attivo e supportare la rivelazione di
disconnessione. È costituito da un ESC seguito da un FCT.
I Time-Code sono usati per distribuire l’informazione temporale del sistema alla rete
SpaceWire; ognuno di essi è formato dall’ESC seguito da un carattere dato. L’interfaccia
temporale comprende due segnali, TICK_IN e TICK_OUT, due porte a 6 bit, una di uscita
e una di ingresso, e altre 2 porte, una di ingresso e una di uscita, per le flag di controllo a
2 bit. Quando TICK_IN è asserito e l’interfaccia di collegamento è nello stato di Run, il
trasmettitore è abilitato ad inviare un Time-Code non appena il carattere corrente è
stato trasmesso. TICK_OUT è asserito quando l’interfaccia di collegamento è nello stato
di Run e il ricevitore riceve un Time-Code valido. Le due flag di controllo sono riservate a
usi futuri e sono impostate a 0.
100
3.1.4. Livello di scambio
Il livello di scambio è responsabile della creazione di connessioni tra i collegamenti e
della gestione del flusso di dati. In questo livello, i caratteri sono separati nelle due
seguenti categorie.
L-Char, o caratteri di collegamento, sono quei caratteri che non sono ancora
passati al livello successivo (livello pacchetto) e sono utilizzati solo nel livello di
scambio; sono L-Char i caratteri FCT e ESC, il codice di controllo NULL e i Time-
Code.
N-Char, o caratteri normali, sono caratteri che sono passati al livello pacchetto,
come i caratteri di tipo dato e gli indicatori di fine pacchetto (EOP e EEP).
Un trasmettitore non può inviare N-Char se non ha ricevuto uno o più FCT che segnalano
la disponibilità del ricevitore ad accogliere il messaggio.
Quando è richiesta la trasmissione di un Time-Code o di un FCT, l’invio avviene non
appena il trasmettitore ha finito di inviare il carattere corrente. Se non è richiesto l’invio
di Time-Code o di FCT, e sono disponibili degli N-Char, allora il transmitter invia gli N-
Char. Se non vengono inviati né Time-Code, né FCT, né N-Char, il trasmettitore invia il
codice NULL per indicare che il link è ancora attivo. Riassumendo, l’ordine di priorità per
la trasmissione di caratteri è:
1. Time-Code, priorità più alta;
2. FCT;
3. N-Char;
4. NULL, priorità più bassa.
In Figura 57 è mostrato il diagramma a blocchi di un dispositivo che implementa il
protocollo SpaceWire. Sono presenti un’unità di ricezione (RECEIVER), un’unità di
trasmissione (TRANSMITTER), un TIMER e due unità di gestione dei clock, una per il
ricevitore (RX CLOCK RECOVERY) e una per il trasmettitore (TX CLOCK). Tutti questi
blocchi sono governati da una macchina a stati finiti (STATE MACHINE).
101
3.1.4.1. IL TRASMETTITORE
Il trasmettitore è responsabile della codifica e della trasmissione dei dati mediante
protocollo DS. Esso invia gli N-Char solo quando il ricevitore presente dall’altro lato del
collegamento invia FCT, segnalando di avere spazio sufficiente nel buffer di ricezione. Se
non ci sono Time-Code, FCT o N-Char da inviare, il transmitter invia NULL. Il
trasmettitore deve tenere il conto degli FCT ricevuti e del numero di N-Char inviati, per
evitare l’overflow del buffer di ingresso dall’altro lato del collegamento.
Il transmitter può trovarsi in uno dei seguenti stati.
a. RESET: il trasmettitore non fa nulla.
b. SEND NULLs: può inviare solo il carattere NULL.
c. SEND FCTs or NULL: invia FCT o NULL.
d. SEND TIME-CODES, FCTs, N-CHARs or NULL: comportamento normale.
Il passaggio da uno stato all’altro è gestito da una macchina a stati.
Figura 57: Diagramma a blocchi di un dispositivo SpaceWire.
102
3.1.4.2. IL RICEVITORE
Il ricevitore è responsabile della decodifica dei segnali DS e produce una sequenza di N-
Char. Riceve anche NULL, FCT e Time-Code.
Quando riceve un FCT, il receiver informa il trasmettitore di essere disponibile ad
accogliere dati inviando a sua volta FCT. Il ricevitore ignora N-Char, L-Char ed errori
finché non riceve il primo NULL.
Il ricevitore può trovarsi in uno dei seguenti stati.
a. RESET: il ricevitore non fa nulla.
b. ENABLED: è abilitato ed è in attesa del primo bit.
c. GotBit: ha ricevuto il primo bit ed è abilitata la rivelazione di errori; può ricevere
solo NULL.
d. GotNULL: ha ricevuto un NULL ed è abilitato a ricevere NULL, FCT, Time-Code e
N-Char. E’ abilitata la rivelazione di errori.
3.1.4.3. IL TIMER
L’inizializzazione del link prevede dei tempi di attesa della durata di 6.4 μs e 12.8 μs. Si
rivela, quindi, indispensabile l’utilizzo di un timer.
3.1.4.4. LA MACCHINA A STATI FINITI
La macchina a stati finiti (FSM, da Finite State Machine) ha il compito di controllare e
gestire tutte le operazioni dell’interfaccia di collegamento: provvede all’inizializzazione
del link, al funzionamento normale e ai servizi di recovery da stati di errore. Il diagramma
degli stati per l’interfaccia di collegamento SpaceWire è illustrato in Figura 58.
ErrorReset
È lo stato da cui parte la procedura di collegamento. È raggiunto se viene asserito un
reset del sistema, se si verifica un errore o se si decide di terminare il collegamento.
In questo stato, sia il trasmettitore che il ricevitore sono resettati. Quando è rilasciato il
segnale di reset, la macchina lascia lo stato ErrorReset dopo 6.4 μs per passare a
ErrorWait.
103
Figura 58: Diagramma degli stati della FSM che gestisce il collegamento SpaceWire.
ErrorWait
Si può raggiungere questo stato solo a partire da ErrorReset. Il ricevitore è abilitato al
funzionamento ed è in attesa di NULL, mentre il trasmettitore è ancora resettato.
ErrorWait viene lasciato incondizionatamente dopo 12.8 μs e la FSM passa allo stato
Ready.
Ready
E’ raggiunto solo quando la FSM si trova nello stato ErrorWait.
La FSM rimane nello stato Ready finché il segnale [Link Enabled] è basso. Quando [Link
Enabled] assume il valore di un 1 logico, la FSM passa allo stato successivo, che prende il
nome di Started.
Se, invece, è rivelato un errore di disconnessione, o di parità, o di escape, o è ricevuto un
carattere diverso da NULL, la FSM torna in ErrorReset.
Started
Si giunge in questo stato quando, in Ready, è abilitata l’interfaccia di collegamento.
104
In Started, il ricevitore è abilitato e il trasmettitore invia solo NULL. Se al receiver giunge
un carattere NULL, la FSM passa allo stato Connecting. Nel caso in cui si riveli la presenza
di un errore o se giunge al ricevitore un carattere diverso da NULL, la FSM torna in
ErrorReset.
Connecting
Viene raggiunto quando la FSM si trova nello stato Started ed è ricevuto un NULL.
In questo stato, il ricevitore è abilitato e il trasmettitore può inviare FCT e NULL. Se è
ricevuto un FCT (gotFCT alto), la FSM passa allo stato Run. Se si manifesta un errore, o se
viene ricevuto un carattere che non sia NULL o FCT, la FSM torna in ErrorReset.
Run
Quando la FSM raggiunge questo stato, il link è operativo: il ricevitore è abilitato e il
trasmettitore può inviare Time-Code, FCT, N-Char e NULL.
Si torna allo stato di ErrorReset se viene rivelato un errore o se il collegamento è
disabilitato.
3.1.5. Livello pacchetto
Il livello pacchetto definisce il modo con cui il dato è organizzato per il trasferimento
dalla sorgente alla destinazione. Un pacchetto comprende l’indirizzo di destinazione,
l’informazione da trasferire (cargo) e un indicatore di fine pacchetto (EOP oppure EEP):
<destination address> <cargo> <end of packet>
L’indirizzo di destinazione è un elenco di identificatori di destinazione (dest_id), che sono
dei caratteri di tipo dato:
<destination address> = <dest_id1> <dest_id2> 0 <dest_idN>
Questo elenco indica sia il codice identificativo del nodo di destinazione sia il path che il
pacchetto deve seguire.
Sono utilizzati due indicatori per la fine del pacchetto:
EOP (End Of Packet), che segnala la fine del pacchetto;
105
EEP (Error EOP), che segnala un termine prematuro del pacchetto causato da un
errore nel collegamento.
Il primo carattere che segue un indicatore EOP o EEP è considerato come l’inizio del
pacchetto successivo.
3.1.6. Livello di rete
Il livello network definisce cosa è una rete SpaceWiire, ne descrive i componenti, spiega
come sono trasferiti i pacchetti e come funziona la logica di recovery.
Una rete SpaceWire è fatta da un numero di nodi SpaceWire interconnessi. I nodi sono
le sorgenti e le destinazioni dei pacchetti.
3.2. Il protocollo SPI
Il protocollo SPI (Serial Peripheral Interface) è un‘interfaccia standard di comunicazione
tra un microcontrollore e altri circuiti integrati o tra più microcontrollori.
La trasmissione avviene tra un dispositivo master e uno o più slave. Il master ha il
completo controllo del bus, perché emette il segnale di clock e decide quando iniziare e
terminare la comunicazione. Il bus SPI è seriale, sincrono (è presente un clock che
coordina il trasferimento dei bit e determina la velocità di trasmissione) e full-duplex
(ogni dispositivo SPI può operare contemporaneamente in ricezione e trasmissione).
Il sistema è detto “a quattro fili”, perché le linee di connessione che portano i segnali
sono, in genere, quattro, come mostrato in Figura 59.
1. SCLK (Serial Clock): è il segnale di sincronizzazione generato e trasmesso dal
dispositivo master.
2. MISO (Master Input Slave Output): è la linea attraverso cui il master riceve il dato
seriale emesso dallo slave.
3. MOSI (Master Output Slave Input): è la linea sulla quale il master emette, sul fronte
di commutazione di SCLK, il suo output.
106
4. SS (Slave Select): è un segnale emesso dal master per selezionare il dispositivo slave
a cui collegarsi.
Figura 59: Connessioni tra un master e uno slave in un bus SPI.
La trasmissione dei dati sul bus SPI si basa su una logica costituita da registri a
scorrimento.
Gli shift register sono elementi largamente diffusi nei sistemi digitali, in quanto il loro
utilizzo agevola le operazioni di lettura e scrittura dei dati. Un registro a scorrimento è
una catena di celle di memoria (nei casi più elementari, flip-flop) interconnesse tra loro,
in modo tale che a ogni impulso di clock avvenga lo spostamento dei bit da una cella a
quella adiacente.
Nella forma più semplice, il dispositivo SPI di tipo master possiede un registro a
scorrimento di tipo SISO i cui bit sono trasmessi mediante la porta MOSI e,
contemporaneamente, sono ricevuti attraverso l’ingresso MISO. Analogamente, ogni
slave possiede un registro a scorrimento che riceve l’ingresso seriale MOSI e trasmette i
dati attraverso MISO. In Figura 60, è mostrato il funzionamento di un bus SPI a 8 bit.
Figura 60: Comunicazione tra un master e uno slave di un bus SPI a 8 bit.
107
Ad ogni impulso di clock, i dispositivi che stanno comunicando sulle linee del bus
emettono un bit dal loro registro interno, sostituendolo con un bit emesso
dall’interlocutore. La comunicazione ha inizio sempre su iniziativa del master, che abilita
lo slave tramite SS e impone il clock sulla linea dedicata: dopo questa procedura, avviene
lo scambio di bit tra i due registri. Al termine della trasmissione di una parola, il
contenuto del registro dello slave sarà passato al master e viceversa. In Figura 61, sono
mostrati i dati contenuti nei registri di master e slave prima del trasferimento; in Figura
62, invece, è illustrato lo stato degli stessi registri subito dopo l’ottavo colpo di clock.
La dimensione dei registri può essere arbitraria, ma deve necessariamente essere uguale
per il master e gli slave.
Figura 61: Contenuto dei registri master e slave prima del trasferimento.
Figura 62: Contenuto dei registri master e slave dopo il trasferimento.
La sincronizzazione può essere effettuata in corrispondenza dei fronti di salita o di
discesa del clock, settando opportunamente due parametri: CPOL (Clock Polarity) e
CPHA (Clock Phase). CPOL consente di impostare il valore logico assunto dalla linea di
clock quando non è attiva, mentre, mediante CPHA, l’utente può impostare il fronte
attivo del segnale di sincronizzazione. Ad esempio, se CPOL è impostato a 0, lo stato di
108
riposo del clock si trova al livello logico basso; in questo caso, se CPHA = 0, il fronte
attivo è quello di discesa, se CPHA = 1, il fronte attivo è quello di salita. L’opposto accade
se CPOL = 1. Le possibili combinazioni di polarità e fase del clock sono mostrate in Figura
63.
Queste opzioni sono impostabili sul dispositivo master e permettono di adattarlo a tutte
le possibili varianti di slave, che, di solito, sono progettati per avere solo uno dei quattro
modi di comunicazione possibili.
Figura 63: Diagramma temporale dei segnali di un bus SPI a 8 bit. Sono mostrate le possibili polarità e fase di clock.
109
Capitolo IV
L’elettronica necessaria al funzionamento degli apparati sperimentali è molto spesso
realizzata facendo uso di dispositivi programmabili noti come FPGA, caratterizzati da una
grande versatilità e da costi contenuti. Per la programmazione, i produttori stessi
distribuiscono dei tool con varie funzionalità (editor, generazione di netlist, simulazione,
debug, ecc.) e mettono a disposizione dei core generici adattabili dall’utente per i propri
scopi.
Anche l’implementazione dell’elettronica del Data Processor della missione EUSO
Balloon sarà gestita tramite l’utilizzo di FPGA, in particolare quelle prodotte dalla Xilinx e
appartenenti alla famiglia Virtex-5.
In questo capitolo, sono descritti i dispositivi utilizzati per le fasi di test e i tool di
progettazione dell’hardware. Sono, inoltre, descritti i core di cui ho fatto uso per la
realizzazione, rispettivamente, di ricevitore e trasmettitore SpaceWire e del sistema di
monitoraggio di temperatura e tensioni della clock board.
Nel capitolo successivo, sono presentate con maggiore dettaglio le varie fasi della
progettazione.
110
1. I vantaggi della progettazione su FPGA
Per la realizzazione di encoder/decoder SpaceWire e dello slave SPI, sono state utilizzate
le FPGA, dei dispositivi hardware programmabili appartenenti alla famiglia dei sistemi
elettronici a larga scala di integrazione (VLSI).
I VLSI integrano un numero sempre crescente di dispositivi su di una stessa tessera di
silicio, che prende il nome di chip. Sono moltissimi i vantaggi di realizzare un intero
sistema con un unico circuito integrato, piuttosto che assemblare componenti standard.
Infatti, rispetto ad un dispositivo costituito da componenti discreti:
si riducono le dimensioni, i parametri parassiti e la potenza dissipata;
aumenta la frequenza del segnale di clock;
diminuiscono i costi complessivi;
è possibile sviluppare applicazioni versatili.
L’implementazione di un circuito digitale VLSI può essere di tipo custom o semicustom.
In un progetto custom, il chip realizzato ha il requisito principale di ottenere le massime
prestazioni, anche a discapito dei tempi e dei costi, che possono essere ammortizzati
solo se il volume di produzione è elevatissimo.
Un approccio semicustom consente di abbattere i tempi di progettazione e i costi, a
discapito, però, delle prestazioni. I progetti semicustom possono essere cell-based, in cui
l’elemento atomico sono celle di libreria assemblate e collegate tra loro, oppure array-
based, in cui l’elemento atomico sono delle matrici di logica programmabile.
Le FPGA (Field Programmable Gate Array) sono dei dispositivi logici programmabili
array-based introdotti sul mercato nel 1985 dalla Xilinx, che trovano applicazione in una
grande varietà di campi. La progettazione di questi dispositivi richiede una
strumentazione semplice, che può essere sviluppata in tempi brevi e con spese basse:
per questi motivi, le FPGA sono indicate in tutti quegli ambiti che non richiedono la
realizzazione di un numero elevato di esemplari, ed, in particolare, trovano larga
applicazione nel campo della ricerca scientifica.
La struttura di una FPGA è basata su delle unità logiche dette Array Element,
programmabili in modo da implementare funzioni sequenziali o combinatorie attraverso
111
l’utilizzo, rispettivamente, di flip-flop e di Look Up Table13 . Altri elementi programmabili
delle FPGA sono le reti di interconnessione, che possono essere impostate in modo da
ottimizzare determinati parametri (ad esempio, il fan-out o i tempi di propagazione dei
segnali).
Anche i blocchi di Input/Output (IO Block), cioè le interfacce tra i pin esterni e la logica
interna, sono programmabili: ad ogni pin è, infatti, assegnato un IO, che può essere
configurato come porta di ingresso, di uscita o bidirezionale; è possibile, inoltre, settare
alcuni parametri dei segnali di uscita, come la pendenza dei fronti di salita e di discesa,
l’intensità della corrente e il livello logico (CMOS, TTL, LVCMOS, LVTTL, LVDS).
Le FPGA appartenenti alle generazioni più recenti possono essere provviste anche di altri
elementi di supporto, come blocchi di memoria, oscillatori interni, buffer tri-state, PLL14.
1.1. Il flusso di progetto di una FPGA
Il flusso di progetto di una FPGA è illustrato in Figura 64. Esso è organizzato in diversi
livelli di astrazione secondo una tecnica di progettazione gerarchica, in cui ogni
elemento del progetto è descritto in termini di unità elementari sempre più semplici.
Specifiche
Le specifiche di progetto rappresentano una descrizione delle operazioni che
deve essere in grado di effettuare il sistema e delle prestazioni desiderate
(frequenza, potenza dissipata, area occupata ecc.). Questi requisiti sono scritti
nel linguaggio naturale e possono rivelarsi ambigui.
13
Le Look Up Table (LUT) realizzano funzioni booleane, cioè assegnano ad un vettore di segnali in ingresso un vettore di segnali in uscita. 14
I PLL (acronimo di Phase Locked Loop) sono dei circuiti elettronici che generano un segnale di cadenza la cui fase è correlata a quella di un clock di riferimento. Migliorano notevolmente le prestazioni dei circuiti digitali, in quanto il clock generato è caratterizzato da skew, jitter e rumore trascurabili.
112
Figura 64: Flusso di progetto di un sistema integrato.
Descrizione comportamentale
Il comportamento del sistema è descritto univocamente mediante un
programma eseguibile ottenuto a partire da linguaggi ad alto livello. In questa
fase, è possibile fare le prime simulazioni comportamentali, cioè simulazioni che
non tengono in considerazione i ritardi dovuti alle interconnessioni e che
consentono una prima verifica del rispetto delle specifiche assegnate. La
descrizione è fatta utilizzando linguaggi per la descrizione dell’hardware (HDL,
Hardware Description Language), in particolare i due linguaggi più diffusi sono il
VHDL e il Verilog.
Descrizione RTL (Register-Transfer Level)
Il sistema è descritto mediante il collegamento di blocchi combinatori con
elementi di memoria. La descrizione RTL consente di avere le prime stime
113
approssimative dei parametri di prestazione, e spesso è formalizzata anch’essa
tramite i linguaggi HDL.
Descrizione a livello di gate
I blocchi funzionali individuati a livello RTL sono descritti mediante
l’interconnessione delle porte logiche elementari. L’insieme delle porte usate
per descrivere il circuito è chiamato libreria, mentre la netlist è il listato che
elenca le celle elementari utilizzate e ne descrive le interconnessioni. In questa
fase del flusso di progetto, è possibile ottenere delle stime abbastanza accurate
dell’occupazione di area, della velocità e della dissipazione di potenza.
Il passaggio dalla descrizione RTL a quella a livello di gate può essere
estremamente complesso, in quanto la netlist finale può contenere un numero
elevatissimo di gate. Appositi programmi CAD (Computer Aided Design)
consentono di passare in maniera quasi del tutto automatica da una descrizione
a livello RTL ad una netlist equivalente, svolgendo un’operazione nota come
sintesi del circuito.
Descrizione a livello transistor
Il circuito è descritto esplicitando, in termini di transistor NMOS e PMOS, le
realizzazioni circuitali delle celle logiche di libreria. Sono definiti i parametri
caratteristici di ogni MOS (ad esempio, le dimensioni di canale) e le connessioni
che danno luogo a porte CMOS complesse. Anche a questo livello di astrazione,
il circuito è descritto da una netlist (ad esempio, un listato SPICE).
Descrizione a livello layout
La descrizione è fatta utilizzando come unità elementari tutti quegli elementi
che, nella loro composizione, definiscono i transistor e le linee di
interconnessione del chip. Le informazioni geometriche contenute nel layout
consentono di assegnare gli elementi logici del progetto a specifici elementi fisici
della FPGA. In questa fase è finalmente possibile calcolare con precisione i valori
dei parametri parassiti introdotti dalle interconnessioni, l’area occupata, la
frequenza massima di funzionamento e la dissipazione di potenza.
114
Anche la descrizione di un circuito a livello layout è svolta attraverso la
generazione di una serie di netlist da un programma CAD che, partendo dalla
netlist a livello di gate e dalla conoscenza dei dettagli geometrici delle celle
standard, genera automaticamente un layout del circuito complessivo,
attraverso un procedimento noto con il nome di Placement & Routing.
Il flusso di progetto che, a partire dalle specifiche, arriva fino al layout si dice di tipo top-
down. Molto spesso l’ approccio top-down non è sufficiente, perché le prestazioni del
circuito (potenza dissipata, frequenza e area) sono calcolati accuratamente solo al livello
layout: quindi, può capitare che, utilizzando una determinata descrizione RTL, il circuito
finale non soddisfi le specifiche di progetto.
È possibile apportare delle modifiche lavorando in verso opposto, che è detto bottom-
up: si sceglie il livello di astrazione su cui agire, si fanno le opportune correzioni e si
passa nuovamente attraverso i livelli inferiori per ottenere la nuova versione del circuito.
Quando le prestazioni e le funzionalità sono quelle desiderate, si può generare il file
binario di bitstream necessario alla programmazione della FPGA.
1.2. L’evaluation board Virtex-5 della Xilinx
La scheda di valutazione utilizzata per realizzare dispositivi in grado di comunicare
mediante i protocolli SpaceWire e SPI è la Virtex-5 ML505 prodotta dalla Xilinx (Figura
65).
Questa board è costruita attorno alla FPGA Virtex-5 XC5VLX50T-1FFG1136 [32], che si
interfaccia con l’esterno mediante push button, interruttori, LED, un’interfaccia RS-232,
un display e altro hardware ausiliario. Sono presenti un oscillatore da 100 MHz e un
dispositivo programmabile in grado di generare diversi segnali di clock. Il flusso di bit
necessario per la programmazione è caricato attraverso una porta seriale di
configurazione dedicata, collegata al PC di sviluppo attraverso un cavo JTAG (Figura 66).
115
Figura 65: L’evaluation board ML505 Virtex-5 prodotta dalla Xilinx.
Figura 66: Il bitstream generato dal tool di sviluppo ISE è caricato su una evaluation board Virtex-5 ML507 attraverso il cavo JTAG.
Gli elementi principali di una FPGA Virtex-5 sono illustrati in Figura 67; tutti i blocchi
mostrati sono configurabili e ottimizzabili per lo svolgimento di particolari operazioni.
Blocchi logici configurabili (CLB)
I CLB sono gli elementi logici programmabili della Virtex-5, in grado di eseguire
operazioni sequenziali o combinatorie. Ogni CLB contiene due slice, e ogni slice è
116
composta da quattro LUT a sei ingressi, multiplexer, sommatori, moltiplicatori,
una logica per il riporto ed elementi sequenziali.
Blocchi di RAM (BlockRAM) da 36 kbit
Le BlockRAM sono memorie configurabili che possono essere usate come
supporto alla logica implementata nei CLB. Possono essere configurate come
RAM single-port e dual-port o come memorie ROM.
Blocchi di ingresso e di uscita (IO Block)
Gli IO Block permettono di interfacciare la logica interna con dispositivi esterni.
Possono supportare diversi standard, sia single-ended che differenziali, con
impedenze di ingresso/uscita configurabili in fase di programmazione.
Figura 67: Rappresentazione schematica delle risorse logiche di una Virtex-5.
Blocchi di gestione del clock (CMT)
Ogni CMT contiene due DCM (Digital Clock Manager) e un PLL: la tecnologia
DCM è utilizzata per ottenere un preciso controllo dei ritardi e una maggiore
immunità al rumore, quella dei PLL per generare un segnale di cadenza con bassi
skew e jitter. I DCM hanno anche le funzioni di compensare i ritardi della rete di
117
distribuzione, di moltiplicare o dividere la frequenza e di regolare gli
spostamenti di fase del clock.
Risorse di interconnessione
Permettono il collegamento dei vari blocchi costituenti la FPGA.
1.3. L’ambiente di sviluppo ISE
ISE è il tool prodotto e distribuito dalla Xilinx per la creazione di progetti scritti in
linguaggi HDL. È un CAD, quindi ha lo scopo principale di supportare l’attività di
progettazione dei sistemi digitali generando le netlist necessarie a descrivere il circuito
nei vari livelli di astrazione.
ISE fornisce un editor per la scrittura nei linguaggi HDL e per l’analisi sintattica del
codice; tuttavia, è anche possibile descrivere il progetto usando esclusivamente
diagrammi schematici RTL. Un altro strumento utilissimo di ISE è il Timing Analyzer, che
permette di analizzare i ritardi temporali del circuito e rivelare la presenza di errori
temporali dovuti a violazioni dei tempi di setup e di hold15.
ISE mette a disposizione anche ISim, un tool di simulazione circuitale per la verifica del
comportamento del sistema in corrispondenza di diversi stimoli, in diverse fasi del
processo di sviluppo e tenendo conto o meno dei ritardi dovuti alle interconnessioni.
La versione minimale di ISE può essere scaricata gratuitamente dal sito della Xilinx;
tuttavia, le funzionalità sono limitate, visto che manca, ad esempio, il tool per la
progettazione di sistemi embedded EDK. In alternativa, si può accedere a versioni più
sofisticate utilizzando delle licenze a pagamento.
15
Il tempo di setup è l’intervallo temporale durante il quale un dato in ingresso ad un registro deve essere stabile PRIMA del fronte attivo del clock; il tempo di hold è l’intervallo temporale durante il quale il dato deve essere stabile DOPO il fronte attivo del clock. La violazione dei tempi di setup e di hold comporta un’errata acquisizione del dato da parte del registro.
118
1.4. EDK: il tool di progettazione di sistemi embedded
L’Embedded Development Kit (EDK) è un ambiente di sviluppo fornito dalla Xilinx per
sviluppare sistemi embedded autoconsistenti o sotto-sistemi appartenenti a un progetto
completo.
Si dicono embedded quei sistemi elettronici di elaborazione a microprocessore con
finalità specifiche (special purpose), non riprogrammabili dall’utente per altri scopi e
integrati nel sistema che gestiscono. Essendo la definizione così vaga, ne consegue che
anche l’hardware non è ben definito e spesso è implementato ad hoc per soddisfare
determinati requisiti.
Utilizzare sistemi embedded nella programmazione di FPGA consente di poter sempre
effettuare modifiche HW, comportando il notevole vantaggio di una maggiore flessibilità
di progettazione. Un sistema discreto, costituito da un microcontrollore che gestisce il
sistema, una FPGA per implementare la logica, periferiche e memorie, è ottimizzato
aumentando le dimensioni della FPGA e inserendo gran parte della logica del sistema.
Restano necessariamente fuori le memorie grandi, le Flash e i fisici.
EDK separa la fase di progettazione dell’hardware da quella di scrittura del software,
dedicando ambienti di sviluppo integrati (IDE, Integrated Development Environment)
diversi per lo svolgimento di queste due fasi. Nonostante ciò, la metodologia e il flusso di
un progetto embedded sono gli stessi che sarebbero adottati se il sistema fosse
costituito da componenti discreti (Figura 68).
Figura 68: Flusso di progetto di un sistema embedded.
Le fasi di progettazione di un sistema embedded sono:
1. definizione delle specifiche di progetto;
119
2. definizione della piattaforma hardware;
3. scrittura del software;
4. debug del sistema.
EDK mette a disposizione del progettista tutto il necessario per la creazione di un
sistema embedded: un ambiente di sviluppo dell’HW, che prende il nome di Xilinx
Platform Studio (XPS), con un’ampia scelta di IP Cores di processori e periferiche, un
ambiente di sviluppo del SW, noto come Xilinx Software Development Kit (SDK), e
l’indispensabile documentazione.
1.4.1. Xilinx Platform Studio (XPS)
Il primo passo da compiere per creare un sistema embedded con EDK è quello di
progettare la piattaforma HW del progetto nell’ambiente di sviluppo integrato Xilinx
Platform Studio (XPS) [35].
XPS è provvisto di un’interfaccia grafica (GUI) di gestione del progetto, rappresentata in
Figura 69, grazie alla quale è possibile disegnare l’hardware, cioè generare tutte le
netlist relative ai vari livelli di astrazione, ed esportarlo nell’ambiente di sviluppo
software; l’IDE fornisce, inoltre, tutti gli strumenti necessari alla simulazione e al debug.
In XPS, l’utente ha la possibilità di scegliere il numero e il tipo di processori, i bus di
interfaccia (PLB, AXI, Avalon) e le periferiche, disponibili come IP core o custom. I
processori possono essere softcore, cioè presenti come IP in linguaggio VHDL16
(MicroBlaze, PicoBlaze, NIOS) o hardcore, cioè già fabbricati nel chip (ARM,
PowerPC440).
Un processore hardcore ha del silicio dedicato nella FPGA, e questo gli consente di
operare a una frequenza simile a quella di un microprocessore discreto; tuttavia, solo
alcune FPGA hanno un hardcore. Un processore softcore è particolarmente appropriato
nei sistemi semplici per la gestione di GPIO (General Purpose Input/Output), ma è
16
VHDL è l’acronimo di VHSIC Hardware Description Language, dove VHSIC sta per Very High
Speed Integrated Circuits. Si tratta di uno dei linguaggi più usati per la progettazione di sistemi
elettronici digitali.
120
adeguato anche nei sistemi relativamente più complessi; questo tipo di processore
aumenta notevolmente la flessibilità del sistema.
Figura 69: XPS progetta l’HW e lo esporta nell’ambiente di sviluppo SW, oltre a fornire strumenti di simulazione e di debug.
Gli strumenti di XPS sono:
Base System Builder (BSB), che facilita la configurazione della piattaforma
hardware;
PlatGen, per la generazione delle netlist;
LibGen, per la generazione delle librerie SW;
Xilinx Microprocessor Debug (XMD), per le operazioni di debug.
Il BSB è un’applicazione che semplifica notevolmente l’operazione di definizione
dell’HW, generando una piattaforma di partenza alla quale aggiungere successivamente
altri processori o periferiche. Il BSB consente di scegliere la board, il processore e le sue
caratteristiche, le periferiche più comuni, i bus, le memorie e le sorgenti dei segnali di
interrupt. Una volta fatto tutto ciò, il BSB genera un sistema HW con le caratteristiche
scelte, che è poi visualizzato in XPS dove è facilmente modificabile.
Il BSB genera in maniera automatica due file fondamentali per la creazione dell’HW: il
file .ucf, in cui sono elencati i constraint del progetto, e il file .MHS (Microprocessor
Hardware Specification) che contiene la descrizione dell’HW.
121
Definita la piattaforma HW e generate senza errori le relative netlist, XPS esporta i file
generati e le librerie di interesse nell’ambiente di sviluppo del software, SDK, dove
avviene la fase di scrittura del codice sorgente che deve essere eseguito dal processore.
1.4.2. Software Development Kit (SDK)
Il Software Development Kit è l’ambiente di sviluppo integrato per la scrittura del
programma che deve girare sul processore.
Per creare un progetto SW nell’ambiente di sviluppo SDK sono necessari tre file generati
da XPS: system.xml (contiene la descrizione del progetto HW), system.bmm (contiene la
descrizione della mappa di memoria) e system.bit (il file di bitstream). Da SDK si può sia
caricare il bitstream sulla FPGA, attraverso il cavo JTAG, sia caricare il software quando
quest’ultima è già programmata (Figura 66).
SDK comprende:
un compilatore, che ha in ingresso il codice sorgente (.c, .h) e come uscita un
codice oggetto (.o, .obj);
un linker, che genera un file eseguibile (.elf) a partire dal codice oggetto, dalle
librerie esterne e dagli script (.ld);
un debugger, che permette di accedere alla memoria e monitorare l’esecuzione
del programma;
un editor e altri strumenti utili.
Sono disponibili diversi tipi di architetture SW embedded, funzionanti con o senza
sistemi operativi.
Un sistema operativo è un insieme di componenti software in grado di garantire il
funzionamento di base di un dispositivo che, senza di essi, non potrebbe funzionare. Tra
gli OS più famosi ci sono Xilkernel, μCLinus, VxWorks, Linux: il loro scopo è quello di
gestire le risorse hardware, le memorie, le periferiche e le applicazioni, facendo da
interfaccia con l’utente. Spesso, si trovano già scritte alcune funzioni di basso livello, ma
è necessario scriverle se le periferiche sono custom o non supportate. Il grande difetto
degli OS è che occupano molto spazio in memoria.
122
L’architettura si dice stand-alone se può funzionare senza un sistema operativo. I
programmi di questo tipo hanno i vantaggi di essere di piccole dimensioni, quindi di
occupare poco spazio in memoria, oltre ad essere semplici da scrivere, personalizzare e
debuggare.
In SDK, i codici sorgenti possono essere scritti con vari linguaggi di programmazione,
dando la possibilità, all’utente, di scegliere quello che ritiene più idoneo alle proprie
esigenze.
Assembly, spesso detto impropriamente Assembler
È il linguaggio macchina tradotto in un codice leggibile.
Questo linguaggio cambia da macchina a macchina, e anche l’operazione più
banale può diventare complicata e difficile da debuggare. Il vantaggio, però,
consiste nel conoscere esattamente ciò che si fa fare al processore, sfruttandone
a pieno le potenzialità.
C
È il linguaggio di programmazione universalmente utilizzato, efficace sia per alto
che basso livello di programmazione. Tuttavia, c’è la possibilità che
un’operazione semplice in Assembly possa essere tradotta dal compilatore in un
numero elevato di istruzioni macchina.
C++
È tra i linguaggi di programmazione più utilizzati se il progettista ha l’esigenza di
programmare a oggetti; inoltre, è compatibile con il C.
2. Implementazione di codificatori e decodificatori del
protocollo SpaceWire
La prima parte del lavoro di tesi è stata dedicata all’implementazione sull’evaluation
board Virtex-5 ML505 di un dispositivo in grado di trasmettere e ricevere informazioni
mediante il protocollo SpaceWire.
123
Come descritto nel Capitolo III, lo SpaceWire è stato sviluppato ad hoc per la missione
JEM-EUSO come protocollo di comunicazione tra CCB e CPU, e tra clock board e CPU; il
suo funzionamento sarà verificato nella missione di test EUSO-Balloon.
L’implementazione di ricevitori e trasmettitori SpaceWire è stata fatta usando come
punto di partenza un open core adattabile su diversi tipi di FPGA, scritto in linguaggio
VHDL e quasi interamente conforme allo standard ECSS-E-ST-50-12. Il mio lavoro è stato
quello di verificare il funzionamento del codice, apportare le necessarie modifiche per
adattare un core generico alle esigenze della missione e scrivere delle opportune
interfacce di test che rendessero possibile la comunicazione tra dispositivi trasmittenti e
riceventi.
Il core è costituito da varie entity, tra cui un ricevitore, un trasmettitore, una macchina a
stati che gestisce il collegamento nel modo stabilito dal protocollo e delle interfacce a
registri. È stato sviluppato sulle FPGA appartenenti alle famiglie Spartan-3 e Virtex-5
della Xilinx.
2.1. Il ricevitore e il trasmettitore
Il ricevitore decodifica i segnali data e strobe per produrre una sequenza di caratteri e di
token di controllo. La struttura del ricevitore è costituita da due parti: il core vero e
proprio, che effettua la decodifica dei segnali entranti, e un’interfaccia di front-end, che
rivela le transizioni di bit lungo il collegamento SpaceWire e trasferisce i bit ricevuti alla
logica principale di elaborazione.
Sono possibili due modalità di funzionamento della logica di front-end del ricevitore, in
base al dominio di clock in cui opera: l’implementazione generica campiona i segnali
entranti usando come riferimento la frequenza di sistema, mentre quella veloce è
progettata per acquisire segnali con frequenza più elevata.
Il trasmettitore codifica caratteri e token di controllo nelle coppie data e strobe. La
struttura del trasmettitore è analoga a quella del ricevitore, in quanto anch’esso
prevede, oltre alla logica di elaborazione, un’interfaccia di front-end, che può operare sia
124
nella modalità generica, sfruttando il clock di sistema, sia in quella veloce, che può
arrivare a lavorare ad una frequenza 5 volte superiore a quella di sistema.
Come stabilito nel protocollo, quando non ci sono dati da inviare, il trasmettitore invia
automaticamente dei token NULL.
2.2. Le interfacce
L’open core mette a disposizione due interfacce: una basata su FIFO e una basata su bus
AMBA.
L’interfaccia basata su FIFO comprende il ricevitore, il trasmettitore, la macchina a stati
e una semplice interfaccia basata, appunto, su registri di tipo FIFO (First Input First
Output), realizzati come blocchi RAM dual-port di larghezza pari a 9 bit (8 bit dato + 1
flag) e di profondità configurabile.
Anche l’interfaccia basata su bus AMBA comprende il ricevitore, il trasmettitore e la
macchina a stati; al posto dei registri FIFO c’è una logica basata, appunto, su bus AMBA
(Advanced Microcontroller Bus Architecture): si tratta di bus di comunicazione open-
source che trovano largo campo applicativo negli ASIC, in quanto permettono
l’interconnessione di più blocchi funzionali e la comunicazione con un vasto numero di
periferiche. L’interfaccia basata su AMBA è stata progettata, però, con lo scopo di
comunicare con un processore LEON3.
Per l’implementazione hardware dei codificatori/decodificatori SpaceWire, l’interfaccia
adottata è stata quella basata su FIFO, in quanto si è rivelata la più idonea allo scopo del
lavoro.
2.3. Ricezione e trasmissione
Il collegamento è gestito da una macchina a stati finiti (FSM) nel modo specificato dal
protocollo SpaceWire. Esso si stabilisce quando il segnale di controllo dedicato è alto, e
si resetta se è rivelata la presenza di un errore o se è asserito un segnale di reset
esplicito.
125
I caratteri ricevuti sono memorizzati nelle FIFO di ricezione fino al momento in cui sono
letti o sono cancellati da un reset del sistema. L’accesso ai dati conservati nella FIFO del
ricevitore è controllata tramite i segnali RXVALID e RXREAD, che devono essere entrambi
alti in corrispondenza di un fronte di salita del clock affinché il carattere sia letto.
In Figura 70, è mostrato il diagramma temporale del processo di lettura di tre caratteri.
Figura 70: Diagramma temporale del processo di lettura dalla FIFO di ricezione.
Analogamente, i caratteri che devono essere inviati sono immagazzinati nelle FIFO di
trasmissione quando i segnali TXRDY e TXWRITE sono alti sul fronte attivo del clock. In
Figura 71, è rappresentato il diagramma temporale relativo a un processo di scrittura di
4 caratteri nella FIFO di trasmissione.
La trasmissione e la ricezione dei time-code sono diverse da quelle degli altri tipi di dati.
Per inviare un time-code, è necessario caricarne il valore su TIME_IN e CTR_IN, e
generare un TICK_IN della durata di un periodo di clock; la trasmissione di questo tipo di
informazione ha priorità su tutti gli altri dati.
L’arrivo di un time-code è segnalato da un impulso del segnale di TICK_OUT; il valore
dell’ultimo time-code ricevuto è conservato nei registri CTRL_OUT e TIME_OUT.
La Figura 72 illustra la ricezione di 2 time-code (in realtà, non sono possibili acquisizioni
consecutive così vicine) e la trasmissione di uno.
126
Figura 71: Diagramma temporale del processo di scrittura nella FIFO di trasmissione.
Figura 72: Diagramma temporale dei processi di trasmissione e ricezione di time-code.
127
3. Implementazione di una logica di monitoring dei
parametri vitali della clock board
La seconda fase del lavoro è stata la progettazione e l’implementazione HW di un
sistema per il monitoraggio di temperatura e tensioni di alimentazione della scheda di
clock. È necessario controllare questi parametri in quanto sono fondamentali per il
corretto funzionamento della board.
o slave SPI in grado di comunicare al sistema di housekeeping lo stato di alcuni parametri
di interesse relativi alla clock board. In particolare, saranno monitorate la temperatura
del die, la tensione di alimentazione del core, il cui valore è circa 1 V, e la tensione
“ausiliaria”, pari a circa 2.5 V, che alimenta la porta JTAG e la rete di distribuzione del
clock.
La misura di questi tre parametri è fatta dal System Monitor, un componente HW
caratteristico delle FPGA appartenenti alla famiglia Virtex-5, che converte un valore di
tensione analogico, proporzionale alla grandezza che si desidera valutare, in una parola
digitale a 10 bit.
Le informazioni acquisite con il System Monitor devono essere inviate al sistema di
housekeeping utilizzando il protocollo di comunicazione SPI: per questo motivo, sono
immagazzinate nel registro di uscita dello slave SPI e inviate al master quando è stabilito
il collegamento.
L’implementazione di questo progetto è stata svolta interamente utilizzando il tool EDK:
la piattaforma HW è stata costruita in ambiente XPS usando gli IP Core a disposizione e,
una volta esportato il progetto in SDK, è stato scritto un codice in linguaggio C per
realizzare il collegamento tra l’uscita del System Monitor e il registro di trasmissione
dello slave SPI, impostare i parametri di funzionamento di questi due core e governare
l’interfaccia con un dispositivo master SPI esterno.
L’architettura è stand-alone e il microprocessore scelto per l’esecuzione del sorgente è
MicroBlaze, un soft-core progettato appositamente per le FPGA della Xilinx.
Di seguito, sono descritti i tre componenti principali del progetto: il MicroBlaze, il
System Monitor e l’interfaccia SPI.
128
3.1. Il MicroBlaze di EDK
MicroBlaze [37] è un processore soft-core a 32 bit progettato dalla Xillinx per le proprie
FPGA, caratterizzato da un sistema di interconnessioni molto flessibile in grado di
supportare un’ampia varietà di applicazioni embedded.
Questa flessibilità è dovuta alla presenza di diversi tipi di bus specializzati per specifiche
applicazioni. Infatti, i bus riservati ai blocchi di IO sono PLB (acronimo di Processor Local
Bus) oppure, per le generazioni di FPGA più recenti, AXI, mentre l’accesso alla memoria
locale (BRAM) è svolto tramite bus LMB (Local Memory Bus).
MicroBlaze è estremamente versatile, in quanto l’utente può impostare vari parametri
caratteristici, come la dimensione della memoria cache, la profondità della pipeline, le
periferiche, i bus di interfaccia, ecc. Anche il set di istruzioni può essere personalizzato,
aggiungendo o rimuovendo comandi in base alle caratteristiche della piattaforma HW
disegnata.
Si può scegliere anche quale aspetto ottimizzare, tenendo presente che, nel caso in cui
siano massimizzate le prestazioni, MicroBlaze può raggiungere una frequenza di
funzionamento di 210 MHz, a discapito, però, dell’area occupata; viceversa,
un’ottimizzazione in termini di area porta ad una riduzione della frequenza massima.
In Figura 73 è mostrata una rappresentazione dello schema a blocchi del processore
MicroBlaze.
1.1. Il System Monitor
Ogni FPGA appartenente alla famiglia delle Virtex-5 contiene un System Monitor
collocato al centro del die, la cui funzione principale è quella di misurare alcuni
parametri di interesse tramite una conversione da analogico a digitale dei segnali che ha
in ingresso. Il System Monitor, spesso abbreviato in SysMon, è, quindi, un ADC (Analog
to Digital Converter), con un’uscita digitale a 10 bit e una frequenza di campionamento
di 200 kS/s.
129
Figura 73: Diagramma a blocchi del Microblaze di EDK.
Gli ingressi del SysMon sono collegati a dei sensori posizionati on-chip, grazie ai quali è
possibile la misura delle tensioni di alimentazione e della temperatura del die; tuttavia,
si possono anche acquisire tensioni esterne, grazie alla presenza di una coppia di ingressi
analogici (VP, VN) e di 16 ingressi analogici ausiliari (VAUXP[15:0], VAUXN[15:0]).
Il core è in comunicazione con l’esterno tramite un’interfaccia a registri, che consente un
rapido e facile accesso ai dati. I valori misurati sono disponibili solo al termine della
conversione da analogico a digitale, quando i segnale di End Of Conversion (EOC) o End
Of Sequence (EOS) diventano alti. I registri di uscita, oltre alla misura corrente,
conservano anche il valore massimo e quello minimo rilevati a partire dal power-up fino
all’ultimo reset dell’utente.
Le operazioni che il SysMon è in grado di svolgere possono essere anche più complesse
della semplice conversione ADC: per esempio, è possibile la generazione di allarmi se i
parametri misurati superano dei valori di soglia fissati (e impostabili dall’utente). Inoltre,
tutte le funzionalità del SysMon sono modificabili in tempo reale attraverso una porta di
riconfigurazione dinamica (DRP) e i registri di controllo.
Il diagramma a blocchi del SysMon è illustrato in Figura 74.
130
Figura 74: Diagramma a blocchi del System Monitor di una Virtex-5.
Il convertitore ADC digitalizza l’uscita analogica di sensori con cui il SysMon è in
comunicazione, generando, nel modo illustrato in Figura 75, un codice a 10 bit con una
tensione di ingresso che non deve superare il valore di 1 V. Se la tensione da misurare è
maggiore, è necessario inserire dei circuiti attenuatori che riducano l’ampiezza del
segnale fino a farlo rientrare nel range consentito.
Se n = 10 è il numero di bit della parola digitale, la variazione di tensione analogica di
ingresso necessaria a incrementare di 1 LSB il valore di uscita è data dalla relazione:
Il SysMon ha sei pin dedicati, come mostrato dal diagramma delle connessioni in Figura
76. I due pin VP e VN sono dedicati al canale differenziale di ingresso; altri due pin sono
usati per accedere alle tensioni di riferimento esterne VREFP e VREFN. Si può anche avere
una tensione di riferimento proveniente da un circuito integrato esterno, purché
caratterizzata da basso coefficiente di temperatura (< 50 ppm/°C). Gli altri pin analogici
(AVDD e AVSS) sono usati per disaccoppiare le tensioni di alimentazione dei circuiti
dell’ADC e per assicurare un riferimento a massa locale.
131
Figura 75: Generica funzione di trasferimento dell’ADC del SysMon.
Figura 76: Pin del SysMon.
132
1.1.1. Il sensore di temperatura
Il SysMon è collegato ad un sensore di temperatura che produce una tensione in uscita
proporzionale alla temperatura del die, secondo la relazione:
dove kB è la costante di Boltzman, T è la temperatura e q è la carica dell’elettrone.
La tensione in uscita da questo sensore è convertita dall’ADC del SysMon in un codice
digitale a 10 bit. Il SysMon è operativo in un range di temperature compreso tra -40 °C e
125 °C, e l’errore massimo di misura è 4 °C.
La temperatura misurata ha la funzione di trasferimento illustrata nello schema in Figura
77 e formalizzata dalla relazione:
Figura 77: Funzione di trasferimento della temperatura.
133
Tra le varie funzioni a disposizione, il SysMon può svolgere anche un’operazione di
media su 256 misure di temperature indipendenti, ottenendo come risultato finale un
valore noise-free.
1.1.2. Il sensore delle tensioni di alimentazione
Per monitorare le tensioni di alimentazione, il SysMon può acquisire l’informazione
analogica di sensori on-chip dedicati allo scopo. Poiché le tensioni acquisite dai sensori
possono superare il range di misura del SysMon, sono attenuate di un fattore 3 prima di
essere inviate all’ADC, che può misurare tensioni comprese tra 0 V e 3 V con una
risoluzione di circa 3 mV secondo la funzione di trasferimento mostrata nel grafico in
Figura 78 e data dalla relazione:
Figura 78: Funzione di trasferimento delle tensioni di alimentazione.
134
1.2. L’IP Core SPI
L’interfaccia SPI messa a disposizione da XPS [39] fornisce un metodo semplice per
l’implementazione di dispositivi in grado di scambiare dati mediante il protocollo SPI
descritto nel data sheet della Motorola M68HC11.
L’IP Core SPI possiede le seguenti caratteristiche:
4 segnali di interfaccia (MOSI, MISO, SCK, );
un bit di selezione per ogni slave;
modalità di funzionamento full-duplex;
fase e polarità del clock programmabili;
trasferimento possibile a 8, 16 o 32 bit;
funzionamento multi-master o multi-slave;
FIFO di ricezione e di trasmissione a 16 elementi (un elemento può essere un
byte o una parola).
Lo schema a blocchi dell’IP core SPI è mostrato in Figura 79 ed è costituito da tre
componenti principali: il modulo SPI vero e proprio, una logica a registri e un modulo
di interfaccia con i PLB attraverso cui avviene la comunicazione con MicroBlaze.
La parte principale del core è, ovviamente, il modulo SPI, che contiene uno shift register,
un BRG17, un’unità di controllo e un’interfaccia che collega la logica ai pin esterni.
Tra il modulo SPI e il bus PLB c’è una logica a registri, che ha il compito di gestire il blocco
SPI e gli interrupt.
Quando l’IP Core è inserito in un progetto creato con EDK, alcuni parametri sono
configurabili in XPS (ad esempio, il numero di bit di trasferimento), mentre altri devono
essere impostati in SDK (come fase e polarità del clock, la natura master o slave del
dispositivo).
17
Il BRG (Baud Rate Generator) è utilizzato nella modalità master per produrre il clock con cui
deve avvenire la comunicazione.
135
Figura 79: Diagramma a blocchi dell’IP Core SPI di XPS.
136
Capitolo V
Questo capitolo è volto interamente alla descrizione della fase sperimentale di questo
progetto di tesi, che si è articolato su due fronti.
Gli obiettivi della prima parte del lavoro sono stati la verifica del funzionamento del core
SpaceWire e la progettazione di interfacce che consentissero la comunicazione tra due
dispositivi, un trasmettitore e un ricevitore, comunicanti mediante questo protocollo.
Lo standard SpaceWire sarà usato nell’ambito dei progetti per EUSO, e metterà in
comunicazione la CPU con altri elementi del sistema di acquisizione ed elaborazione
dati, come le CCB e la scheda di clock.
La seconda parte del lavoro, invece, è stata quella di implementare dispositivi
comunicanti tra loro mediante protocollo SPI e in grado di scambiare informazioni circa i
parametri di funzionamento vitali della scheda in esame.
Lo scopo è quello di mettere in comunicazione la scheda di clock con il sistema di
housekeeping, che fungerà da master e inoltrerà la richiesta dei valori di temperatura e
delle tensione correnti. Questi parametri sono misurati attraverso l’utilizzo di un
componente hardware caratteristico delle Xilinx Virtex-5, le evaluation board che
saranno utilizzate nella missione EUSO Balloon.
Le modalità di sviluppo di questi due progetti sono state profondamente diverse: le
interfacce per i dispositivi SpaceWire sono state scritte in linguaggio VHDL nell’ambiente
di sviluppo ISE; per la progettazione del sistema costituito da slave SPI e System
137
Monitor, invece, il modo più efficace per svolgere le operazioni richieste è stato quello di
introdurre nel sistema HW un microprocessore embedded in ambiente di sviluppo EDK.
1. Verifica del funzionamento di ricevitore e trasmettitore
SpaceWire
La prima parte del lavoro di tesi è stata volta alla verifica del corretto funzionamento
dell’open core SpaceWire. Il codice è stato usato per creare dispositivi o esclusivamente
trasmettitori o esclusivamente ricevitori, che sono stati collegati tra loro per monitorare
il trasferimento dei dati.
Per svolgere le operazioni di debug e di testing, è stato necessario creare un top level,
cioè un file scritto in linguaggio VHDL che contiene la descrizione strutturale del
progetto, in cui sono elencati i dispositivi hardware che si vogliono inserire (component)
e le relative interconnessioni. Oltre al core opportunamente modificato, sono stati
inseriti nel top level dei component che consentissero di impostare in maniera semplice i
dati da trasmettere e di comunicare agevolmente all’utente quelli ricevuti.
Prima di procedere ai test on hardware, sono state svolte delle simulazioni
comportamentali del core utilizzando il tool della Xilinx ISim.
1.1. Simulazione comportamentale
La simulazione comportamentale ha lo scopo di verificare il comportamento di un
sistema digitale soggetto a diversi stimoli trascurando i ritardi dovuti alle
interconnessioni. L’obiettivo principale della simulazione behavioural eseguita sul core
SpaceWire è stato quello di verificare il comportamento della macchina a stati di
gestione del collegamento, raffigurata in Figura 80.
138
Figura 80: Macchina a stati finiti responsabile della gestione del link SpaceWire.
La FSM non necessita di particolari requisiti per passare attraverso gli stati iniziali
ErrorReset ed ErrorWait, che sono lasciati una volta trascorsi, rispettivamente, 6.4 μs e
12.8 μs. La durata della permanenza nello stato di Ready è, invece, gestita dall’utente,
che può decidere il momento in cui è necessario stabilire la comunicazione con un altro
host della rete, portando la FSM in Started.
A questo punto, il protocollo prevede che ci sia un dialogo di inizializzazione tra i due
interlocutori, durante il quale entrambi devono inviare e ricevere caratteri o codici di
controllo. La macchina a stati può passare dallo stato Started a quello Connecting solo
se, entro un intervallo di tempo stabilito, è ricevuto un NULL; analogamente, per lasciare
lo stato di Connecting e passare a quello di Run, la FSM deve ricevere un codice FCT.
Durante la permanenza nello stato Started avviene l’invio di NULL, in Connecting quello
di FCT e ancora di NULL. Run è lo stato in cui finalmente il sistema è operativo e in grado
di ricevere e trasmettere le informazioni desiderate; è raggiunto dopo un tempo minimo
di 21 μs dall’ultimo reset.
Se non si verificano le condizioni elencate, nel caso in cui il sistema sia resettato o se si
rivela la presenza di qualche errore, la FSM si riporta nello stato iniziale di ErrorReset e
ricomincia da capo la procedura appena descritta.
139
Affinché si attivi il collegamento, quindi, è necessario che l’unità in esame (sia essa
ricevitore o trasmettitore) riceva in ingresso determinati caratteri di controllo. Per
effettuare una simulazione semplice e soddisfacente dell funzionamento della macchina
a stati appena descritta, si sono semplicemente configurati in loopback i segnali data e
strobe, cortocircuitando quelli di uscita con quelli in ingresso. La frequenza di sistema è
fissata a 40 MHz ed il core è configurato per funzionare nella modalità generica, cioè in
modo tale che il clock dedicato al trasferimento sia quello di sistema. In Figura 81 sono
mostrati, nell’ordine, il clock di sistema a 40 MHz, i segnali Data-Strobe in ingresso e i
segnali Data-Strobe in uscita, che risultano avere l’andamento corretto, visto che quelli
di input sono uguali a quelli di output.
Figura 81: Simulazione del core SpaceWire in modalità loopback: ingressi e uscite Data-Strobe.
In Figura 82, è mostrato il particolare della simulazione relativo alla transizione dallo
stato Started a quello Connecting; sono illustrati il clock di sistema, i segnali Data-Strobe
e il nome indicativo dello stato corrente assunto dalla FSM.
Una volta raggiunto lo stato Started, sulle uscite SpaceWire è presentato il codice di
controllo NULL, della forma 01110100. Essendo le uscite collegate agli ingressi, lo stesso
carattere è anche ricevuto, rendendo così possibile il passaggio allo stato Connecting.
Figura 82: Simulazione del core SpaceWire in configurazione loopback: nello stato Started avviene l’invio e, quindi, la ricezione di NULL, che consentono alla FSM di passare allo stato successivo di Connecting.
140
In Figura 83, invece, è mostrato il passaggio dallo stato di Connecting a quello di Run.
Sono visibili, nell’ordine, l’ultimo NULL generato nello stato Started, 8 caratteri di
controllo del flusso FCT, del tipo 0100, nello stato Connecting, e un dato.
Figura 83: Simulazione del core SpaceWire in configurazione loopback: passaggio dallo stato Connecting a quello di Run.
In assenza di loopback, quindi senza ricevere codici NULL in ingresso, la macchina a stati
resta (correttamente) intrappolata nel loop ErrorReset -> ErrorWait -> Started ->
ErrorReset, come mostrato in Figura 84.
Figura 84: Simulazione del core SpaceWire senza loopback: la FSM non raggiunge lo stato Connecting successivo a Started.
1.2. Verifica hardware del funzionamento di un sistema
costituito da un ricevitore e un trasmettitore
Attraverso la simulazione comportamentale, è stato verificato che, trascurando i ritardi
dovuti alle interconnessioni, il funzionamento della macchina a stati è quello previsto dal
protocollo e che il trasferimento dei dati è corretto.
La successiva fase di testing è stata una prima implementazione hardware del core,
specializzato per essere esclusivamente un ricevitore o un trasmettitore. È stato
indispensabile inserire altri component hardware nel progetto, in alcuni casi per
soddisfare dei requisiti del protocollo SpaceWire (frequenza operativa, porte
differenziali), in altri per semplificare le operazioni di monitoring e di debug (il
141
dispositivo trasmettitore deve essere tale da consentire all’utente di impostare
facilmente il pacchetto dati a 8 bit da inviare e di impartire il comando di start, mentre il
ricevitore deve presentare in modo chiaro le informazioni ricevute). I requisiti del
trasmettitore sono soddisfatti impostando, nel registro di trasmissione, il valore
associato agli 8 interruttori presenti sulla board e caricati nel registro di trasmissione; il
comando di invio è collegato ad uno dei push button, che, quando premuto, genera il
trasferimento del dato contenuto nel registro di trasmissione. Il ricevitore, invece, è
collegato all’Hyperterminal del PC attraverso un’interfaccia RS232 che ha richiesto
un’opportuna logica di gestione; quando al ricevitore arriva un dato corretto, questo è
automaticamente scritto sullo schermo.
I component che sono stati utilizzati nella realizzazione del progetto sono elencati e
descritti brevemente di seguito.
DCM
Il clock ricevuto dalla FPGA proviene da un oscillatore a 100 MHz presente sulla
evaluation board, ma il segnale di cadenza del sistema deve avere frequenza pari
a 40 MHz e quello della modalità di funzionamento fast deve operare a 200
MHz. Per generare queste frequenze, sono stati utilizzati due DCM (Digital Clock
Manager), dei circuiti digitali che consentono di apportare delle modifiche ad un
segnale di cadenza presentato in ingresso. Possono variarne la frequenza, il duty
cycle18 e la fase; inoltre, riducono notevolmente lo skew.
Buffer differenziali
Ogni dispositivo SpaceWire prevede una coppia di segnali Data-Strobe in
ingresso e una in uscita. Il protocollo impone che queste linee seguano lo
standard LVDS, che siano, cioè, caratterizzate da terminazioni differenziali e da
impedenze di adattamento di 100 Ω, per evitare riflessioni lungo il cavo di
collegamento la cui impedenza differenziale caratteristica è pari, appunto, a 100
Ω. Le porte differenziali sono state implementate mediante l’utilizzo di buffer
dedicati allo scopo, in grado di convertire una coppia differenziale in ingresso in
18
Il duty cycle è il rapporto tra la durata di un singolo impulso e il periodo di un’onda quadra. In genere, un segnale di clock è impostato per avere il duty cycle al 50%, in cui la durata del livello alto è uguale a quella del livello basso.
142
un unico segnale (IBUF, mostrato in Figura 85), o di trasformare un singolo
segnale in una coppia differenziale di uscita (OBUF, Figura 86).
Figura 85: Buffer differenziale di ingresso.
Figura 86: Buffer differenziale di uscita.
UART
La UART (Universal Asynchronous Receiver and Transmitter) è un dispositivo
hardware che converte flussi di bit di dati da un formato parallelo a un formato
seriale asincrono, o viceversa. Le informazioni trasmesse e ricevute devono
contenere un bit di start, un dato da 8 bit, nessun bit di parità e un bit di stop.
Questo component è stato usato solo come trasmettitore ed ha consentito di
inviare, attraverso un cavo seriale, un pacchetto di dati a 8 bit al PC con un baud
rate di 115200 Hz. Quando arriva al computer un’informazione corretta, viene
scritta sul terminale il carattere associato al dato codificato in ASCII.
La UART utilizzata appartiene a un pacchetto di macro scritte dalla Xilinx
ottimizzato per le FPGA della famiglia Virtex.
Debouncer
L’utilizzo di pulsanti meccanici introduce la possibilità di ingressi asincroni nella
FPGA, che possono portare al cattivo funzionamento del sistema. Per prevenire i
disturbi di sincronizzazione provocati dall’utilizzo dei push button, è stata
utilizzata una struttura costituita da una serie di flip-flop, che riduce
notevolmente la probabilità che si verifichi un errore. Maggiori informazioni e
dettagli sono contenuti nel paragrafo 1.2.1.
143
Gli schemi a blocchi del trasmettitore e del ricevitore SpaceWire sono illustrati,
rispettivamente, in Figura 87 e in Figura 88.
Figura 87: Schema a blocchi del trasmettitore SpaceWire.
Figura 88: Schema a blocchi del ricevitore SpaceWire.
144
Per testare il trasferimento delle informazioni, è stato necessario utilizzare due FPGA:
una è stata programmata per operare come trasmettitore, l’altra come ricevitore. Gli 8
segnali differenziali corrispondenti alle linee data e strobe sono stati portati sui
connettori differenziali presenti sulla board, e messi in comunicazione utilizzando un
cavo costruito seguendo le indicazioni del livello fisico del protocollo SpaceWire.
Figura 89: Le evaluation board utilizzate come ricevitore e trasmettitore SpaceWire collegate tramite un cavo differenziale.
Affinché si stabilisca il collegamento, è ovvio che la frequenza delle interfacce di front-
end deve essere la stessa per i due dispositivi; inoltre, è necessario che sia settata la
stessa modalità di funzionamento (fast o generic) per la logica di front-end.
La prima fase di test è stata quella di utilizzare entrambi i dispositivi in modalità
generica, fornendo come segnale di cadenza del link il clock a 40 MHz.
Per monitorare il comportamento della macchina a stati di gestione del collegamento,
sono stati inseriti degli opportuni output di debug e collegati ai pin single ended
dell’evaluation board, così da poter essere facilmente esaminati all’oscilloscopio. In
questo modo, è stato verificato l’effettivo passaggio attraverso gli stati di inizializzazione
del link, la durata della permanenza in ciascuno stato e sono stati monitorati ingressi e
uscite Data - Strobe. In Figura 90 è presente uno screen in cui sono mostrati i segnali
SpaceWire in uscita dal trasmettitore, data in azzurro e strobe in giallo; in Figura 91,
145
invece, è mostrato lo stesso segnale in simulazione. L’immagine è stata catturata mentre
il dispositivo si trovava nello stato di Run in attesa di un comando di invio.
Figura 90: I segnali SpaceWire in uscita dal trasmettitore acquisiti dall’oscilloscopio: data è azzurro, strobe è giallo. Il codice inviato è un NULL.
Figura 91: Simulazione dei segnali SpaceWire durante l’invio di un NULL.
Quando la FSM raggiunge lo stato di Run, vuol dire che si è stabilito il collegamento tra
le due board. L’utente può impostare il pacchetto di dati da 8 bit che il trasmettitore
deve inviare selezionando gli switch presenti sulla board, e impartire il comando di invio
premendo uno dei pulsanti. Il ricevitore segnala l’arrivo di dati corretti, che sono
immagazzinati nel registro dedicato, inoltrati nella logica di gestione della UART e scritti
sul terminale.
146
Dopo aver scritto i due top level, uno per il ricevitore e l’altro per il trasmettitore, e aver
incluso, con le giuste interconnessioni, i vari component, sono stati generati attraverso
ISE i file di sintesi. I collegamenti con i pin esterni sono stati definiti in un file di formato
.ucf, facendo attenzione a connettere le uscite SpaceWire di un dispositivo con gli
ingressi dell’altro. Terminata la scrittura dei constraint di implementazione, è stato
possibile proseguire nelle fasi successive del flusso di progetto, che consistono nella
creazione delle netlist di translating, mapping e routing.
Al fine di analizzare i ritardi di propagazione dei segnali attraverso la logica e le
interconnessioni del progetto dopo la fase di Place&Route, è stata svolta una Static
Timing Analysis utilizzando il tool Timing Analyzer della Xilinx. In particolare, sono stati
esaminati i path elencati di seguito.
PAD → FF
Inizia all’ingresso del chip e termina sull’input di un flip flop.
Il percorso più lungo rilevato per il trasmettitore inizia sulla PAD di ingresso del
clock e termina sull’ingresso di un flip flop di sincronizzazione del reset.
Maximum delay is 7.726ns.
Delay (setup path):7.726ns (data path)
Source: clk (PAD)
Destination: s_resetbtn (FF)
Data Path Delay: 7.726ns (Levels of Logic = 4)
Maximum Data Path: clk to s_resetbtn
Location Delay type Delay(ns)
Physical Resource Logical Resource(s)
AH15.I Tiopi 0.897 clk clk clk_IBUFG
BUFGCTRL_X0Y0.I0 net (fanout=1)
1.304 clk_IBUFG
BUFGCTRL_X0Y0.O Tbgcko_O 0.250 bufg0 bufg0
DCM_ADV_X0Y0.CLKIN net (fanout=2)
1.588 boardclk
DCM_ADV_X0Y0.CLKFX Tdmcko_CLKFX 0.000 dcm0 dcm0
BUFGCTRL_X0Y1.I0 net
(fanout=1)
1.655 sysclk1
BUFGCTRL_X0Y1.O Tbgcko_O 0.250 sysclk_BUFG
147
sysclk_BUFG
ILOGIC_X2Y239.CLK net (fanout=106)
1.782 sysclk
Total 7.726ns
(1.397ns logic, 6.329ns route)
(18.1% logic, 81.9% route)
Per quanto riguarda il ricevitore, invece, il path più lungo ha anch’esso come
sorgente la PAD di ingresso del clock, ma ha un FF di destinazione interno al core
SpaceWire.
Maximum delay is 7.662ns.
Delay (setup path):7.662ns (data path)
Source: clk (PAD)
Destination:
streamtest_inst/spwstream_inst/recvfront_sel1.recvfront_fast_inst/s_a_si1 (FF)
Data Path Delay:
7.662ns (Levels of Logic = 4)
Maximum Data Path: clk to streamtest_inst/spwstream_inst/recvfront_sel1.recvfront_fast_in
st/s_a_si1
Location Delay type Delay(ns) Physical Resource Logical Resource(s)
AH15.I Tiopi 0.897 clk clk
clk_IBUFG
BUFGCTRL_X0Y0.I0 net (fanout=1) 1.304 clk_IBUFG
BUFGCTRL_X0Y0.O Tbgcko_O 0.250 bufg0 bufg0
DCM_ADV_X0Y0.CLKIN net (fanout=1) 1.588 boardclk
DCM_ADV_X0Y0.CLKFX Tdmcko_CLKFX 0.000 dcm0 dcm0
BUFGCTRL_X0Y1.I0 net (fanout=1) 1.655 sysclk1
BUFGCTRL_X0Y1.O Tbgcko_O 0.250 sysclk_BUFG
sysclk_BUFG
ILOGIC_X0Y127.CLKB net
(fanout=172)
1.718 sysclk
Total 7.662ns
(1.397ns logic,
6.265ns route) (18.2% logic, 81.8% route)
148
FF → FF
Inizia sull’uscita di un flip flop e termina all’ingresso di un altro flip flop.
Il percorso più lungo relativo al trasmettitore è svolto da un segnale interno al
core SpaceWire utilizzato.
Maximum delay is 7.999ns.
Delay (setup path):7.999ns (data path - clock path skew + uncertainty)
Source: streamtest_inst/spwstream_inst/recv_inst/r.bitshift_8 (FF)
Destination:
streamtest_inst/spwstream_inst/recv_inst/r.gotfct (FF)
Data Path Delay:
7.717ns (Levels of Logic = 8)
Clock Path Skew:
-0.032ns (0.491 - 0.523)
Source Clock:
sysclk rising at 0.000ns
Destination Clock:
sysclk rising at 25.000ns
Clock Uncertainty:
0.250ns
Clock Uncertainty: 0.250ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE
Total System Jitter (TSJ): 0.070ns
Total Input Jitter (TIJ): 0.000ns
Discrete Jitter (DJ): 0.428ns
Phase Error (PE): 0.000ns
Location Delay type
Delay(ns)
Physical Resource Logical Resource(s)
SLICE_X23Y62.DQ
Tcko 0.450 streamtest_inst/spwstream_inst/recv_inst/r.bitshift_8
streamtest_inst/spwstream_inst/recv_inst/r.bitshift_8
SLICE_X27Y63.D2
net (fanout=14)
0.830 streamtest_inst/spwstream_inst/recv_inst/r.bitshift_8
SLICE_X27Y63.D
Tilo 0.094 streamtest_inst/spwstream_inst/recv_inst/r.parity
streamtest_inst/spwstream_inst/recv_inst/v_control_cmp_eq0000_SW0
SLICE_X24Y63.A3
net (fanout=1)
0.602 N56
SLICE_X24
Y63.A
Tilo 0.094 streamtest_inst/spwstream_inst/recv_inst/
r.bitshift_3
streamtest_inst/spwstream_inst/recv_inst/v_control_cmp_eq0000
149
SLICE_X24
Y62.B2
net
(fanout=15)
0.825 streamtest_inst/spwstream_inst/recv_inst/
v_control_cmp_eq0000
SLICE_X24Y62.B
Tilo 0.094 streamtest_inst/spwstream_inst/recv_inst/r.bitshift_7 streamtest_inst/spwstream_inst/recv_inst/
v_control_mux000511
SLICE_X25
Y65.A1
net
(fanout=19)
1.042 streamtest_inst/spwstream_inst/recv_inst/
N4
SLICE_X25Y65.A
Tilo 0.094 N38 streamtest_inst/spwstream_inst/recv_inst/v_control_mux000811
SLICE_X23Y63.C3
net (fanou
t=6)
0.779 streamtest_inst/spwstream_inst/recv_inst/N48
SLICE_X23
Y63.C
Tilo 0.094 streamtest_inst/spwstream_inst/recv_inst/
r.null_seen streamtest_inst/spwstream_inst/recv_inst/Mxor_rin.tick_out_xor0000_Result1
SLICE_X23Y62.A1
net (fanou
t=13)
0.894 streamtest_inst/spwstream_inst/recv_inst/rin_tick_out_xor0000
SLICE_X23
Y62.A
Tilo 0.094 streamtest_inst/spwstream_inst/recv_inst/
r.bitshift_8
streamtest_inst/spwstream_inst/recv_inst/r_erresc_not0001212
SLICE_X20Y62.D1
net (fanou
t=3)
0.909 streamtest_inst/spwstream_inst/recv_inst/N88
SLICE_X20
Y62.D
Tilo 0.094 N92
streamtest_inst/spwstream_inst/recv_inst/rin_gotfct77_SW0
SLICE_X21Y62.B1
net (fanout=1)
0.701 N92
SLICE_X21Y62.CLK
Tas 0.027 streamtest_inst/spwstream_inst/recv_inst/r.gotfct
streamtest_inst/spwstream_inst/recv_inst/
rin_gotfct77 streamtest_inst/spwstream_inst/recv_inst/
r.gotfct
Total
7.717
ns
(1.135ns logic, 6.582ns route)
(14.7% logic, 85.3% route)
Anche per il ricevitore, il percorso più lungo tra due flip flop è interno al core
SpaceWire.
Maximum delay is 7.450ns.
Delay (setup path):7.450ns (data path - clock path skew + uncertainty)
150
Source: streamtest_inst/spwstream_inst/recvfront_sel1.recvfront
_fast_inst/bufmem/rdata_0 (FF)
Destination:
streamtest_inst/spwstream_inst/recv_inst/r.datareg_4 (FF)
Data Path Delay:
7.116ns (Levels of Logic = 7)
Clock Path Skew:
-0.084ns (1.163 - 1.247)
Source Clock:
sysclk rising at 0.000ns
Destination Clock:
sysclk rising at 25.000ns
Clock Uncertainty:
0.250ns
Clock Uncertainty: 0.250ns ((TSJ^2 + TIJ^2)^1/2 + DJ) / 2 + PE
Total System Jitter (TSJ): 0.070ns
Total Input Jitter (TIJ): 0.000ns
Discrete Jitter (DJ): 0.428ns
Phase Error (PE): 0.000ns
Location
Delay type
Delay(ns
) Physical Resource Logical Resource(s)
SLICE_X
24Y60.AQ
Tcko 0.47
1
streamtest_inst/spwstream_inst/recvfront_sel1
.recvfront_fast_inst/bufmem/rdata<2> streamtest_inst/spwstream_inst/recvfront_sel1.recvfront_fast_inst/bufmem/rdata_0
SLICE_X27Y61.D
4
net (fano
ut=53)
1.271 streamtest_inst/spwstream_inst/recvfront_sel1.recvfront_fast_inst/bufmem/rdata<0>
SLICE_X27Y61.D
Tilo 0.094 streamtest_inst/spwstream_inst/recvfront_sel1.recvfront_fast_inst/r.inbvalid
streamtest_inst/spwstream_inst/recv_inst/v_co
ntrol_mux000511_SW0
SLICE_X
27Y60.A1
net
(fanout=1)
0.83
6
N66
SLICE_X27Y60.A
Tilo 0.094 streamtest_inst/spwstream_inst/recvfront_sel1.recvfront_fast_inst/syncsys_headptr1/syncdff_ff2
streamtest_inst/spwstream_inst/recv_inst/v_control_mux000511
SLICE_X25Y61.C3
net (fanout=19
)
1.097 streamtest_inst/spwstream_inst/recv_inst/N4
SLICE_X
25Y61.C
Tilo 0.09
4
streamtest_inst/spwstream_inst/recvfront_sel1
.recvfront_fast_inst/syncsys_headptr2/syncdff_ff2
151
streamtest_inst/spwstream_inst/recv_inst/v_co
ntrol_mux000811
SLICE_X
25Y61.D5
net
(fanout=4)
0.24
7
streamtest_inst/spwstream_inst/recv_inst/N48
SLICE_X25Y61.D
Tilo 0.094 streamtest_inst/spwstream_inst/recvfront_sel1.recvfront_fast_inst/syncsys_headptr2/syncdff_ff2
streamtest_inst/spwstream_inst/recv_inst/Mxor_rin.tick_out_xor0000_Result1
SLICE_X26Y57.B1
net (fanout=23
)
1.169 streamtest_inst/spwstream_inst/recv_inst/rin_tick_out_xor0000
SLICE_X
26Y57.B
Tilo 0.09
4
streamtest_inst/spwstream_inst/recvfront_sel1
.recvfront_fast_inst/bufmem/rdata_1_1 streamtest_inst/spwstream_inst/recv_inst/r_datareg_mux0000<0>74
SLICE_X21Y56.B
2
net (fano
ut=11)
0.934 streamtest_inst/spwstream_inst/recv_inst/N49
SLICE_X21Y56.B
Tilo 0.094 N148 streamtest_inst/spwstream_inst/recv_inst/r_datareg_mux0000<4>110_SW0
SLICE_X23Y56.A
4
net (fano
ut=1)
0.501 N148
SLICE_X
23Y56.CLK
Tas 0.02
6
streamtest_inst/spwstream_inst/recv_inst/r.da
tareg_5 streamtest_inst/spwstream_inst/recv_inst/r_datareg_mux0000<4>110
streamtest_inst/spwstream_inst/recv_inst/r.datareg_4
Total
7.116ns
(1.061ns logic, 6.055ns route) (14.9% logic, 85.1% route)
FF → PAD
Inizia sull’uscita di un flip flop e termina su un output del chip.
I percorsi più lunghi sia per il trasmettitore che per il ricevitore riguardano le
uscite di debug.
Il percorso più lungo per il trasmettitore ha inizio sul flip flop associato al segnale
SpaceWire strobe e termina sulle PAD delle uscite differenziali.
Maximum delay is 3.336ns.
Delay (setup path):3.336ns (data path)
152
Source: streamtest_inst/spwstream_inst/xmit_sel1.xmit_fast_in
st/s_spwdo_1 (FF)
Destination:
spw_txdp (PAD)
Data Path Delay:
3.336ns (Levels of Logic = 1)
Source Clock:
sysclk rising at 0.000ns
Maximum Data Path:
streamtest_inst/spwstream_inst/xmit_sel1.xmit_fast_inst/s_spwdo_1 to spw_txdp
Location Delay type
Delay(ns)
Physical Resource Logical Resource(s)
SLICE_X0Y64.AQ
Tcko 0.471 streamtest_inst/spwstream_inst/xmit_sel1.xmit_fast_inst/s_spwdo_1 streamtest_inst/spwstream_inst/xmit_sel1.
xmit_fast_inst/s_spwdo_1
P32.O net
(fanout=1)
1.343 streamtest_inst/spwstream_inst/xmit_sel1.
xmit_fast_inst/s_spwdo_1
P32.PAD Tioop 1.522 spw_txdp spwdo_pad/OBUFDS spw_txdp
Total
3.336ns
(1.993ns logic, 1.343ns route) (59.7% logic, 40.3% route)
I percorsi più lunghi per il ricevitore hanno come sorgente il flip flop del segnale
SpaceWire strobe e come PAD di arrivo le due uscite differenziali.
Maximum delay is 3.536ns.
Delay (setup path):3.536ns (data path)
Source: streamtest_inst/spwstream_inst/xmit_sel1.xmit_fast_in
st/s_spwso_1 (FF)
Destination:
spw_txsp (PAD)
Data Path Delay:
3.536ns (Levels of Logic = 1)
Source Clock:
sysclk rising at 0.000ns
Maximum Data Path:
streamtest_inst/spwstream_inst/xmit_sel1.xmit_fast_inst/s_spwso_1 to spw_txsp
Location Delay type
Delay(ns)
Physical Resource Logical Resource(s)
SLICE_X1
Y72.CQ
Tcko 0.450 streamtest_inst/spwstream_inst/xmit_sel1.
xmit_fast_inst/s_spwso_1 streamtest_inst/spwstream_inst/xmit_sel1.xmit_fast_inst/s_spwso_1
153
K33.O net
(fanout=1)
1.535 streamtest_inst/spwstream_inst/xmit_sel1.
xmit_fast_inst/s_spwso_1
K33.PAD Tioop 1.551 spw_txsp spwso_pad/OBUFDS spw_txsp
Total
3.536ns
(2.001ns logic, 1.535ns route) (56.6% logic, 43.4% route)
Infine, sono stati generati i file di bitstream relativi a trasmettitore e ricevitore e sono
stati caricati sulle FPGA attraverso le porte JTAG dedicate.
I due sistemi hanno il comportamento atteso: riescono a comunicare tra loro
correttamente e a stabilire il collegamento. Quando è premuto il pulsante di start, il
trasmettitore invia il pacchetto di dati contenuto nel registro di trasmissione al ricevitore
presente sull’altra board, che scrive il contenuto sul terminale in codifica ASCII. Dal
confronto tra il codice ASCII associato al carattere stampato e la posizione degli switch
sulla evaluation board trasmittente, si conclude che il dato trasmesso e quello ricevuto
sono corretti.
Avendo verificato il funzionamento dell’implementazione generica, sono stati modificati
i top level per testare la modalità di comunicazione fast. In questo caso, la logica di front
end è cadenzata da un segnale di clock diverso e con frequenza più elevata di quella di
sistema, con conseguente incremento della velocità del link. La frequenza del fast clock
è stata aumentata gradualmente per i due sistemi, fino a raggiungere il valore di 200
MHz. Nelle prove effettuate, il trasferimento dei dati dal trasmettitore al ricevitore è
sempre risultato quello atteso.
1.2.1. Debouncing dei push button
Uno dei problemi timing più frequenti che si presentano durante l’utilizzo di una
evaluation board è dovuto ai disturbi introdotti dall’attivazione di un pulsante.
Quando è premuto un push button, infatti, può accadere che il segnale generato non
soddisfi le richieste logiche del dispositivo che lo prevede tra gli ingressi; ciò avviene
principalmente per tre motivi:
154
1. la commutazione di livello è graduale ed è una funzione della pressione esercitata;
2. prima di stabilizzarsi, il segnale può essere soggetto ad una serie di oscillazioni;
3. è un ingresso asincrono, e può violare i tempi di hold e setup della logica sincrona
successiva.
Se un segnale affetto da questo disturbo deve pilotare un circuito sincrono, si corre il
rischio di un errato funzionamento dei registri di ingresso, che, dopo un tempo di
metastabilità, risolvono l’uscita in un valore logico determinato, ma casuale.
Si consideri il segnale asincrono va mostrato in Figura 92.
Figura 92: Fasce critiche di un segnale asincrono in ingresso a un circuito sincrono.
Se il clock del circuito sincrono campiona il segnale asincrono proprio durante una
commutazione, ad esempio nel modo illustrato in Figura 93, si verifica un errore di
sincronizzazione dovuto alla violazione del tempo di setup dei registri.
Figura 93: Il fronte attivo del clock (in questo esempio attivo basso) campiona il segnale asincrono a proprio durante la commutazione.
La fascia di tensione critica ha ampiezza pari a 2vε ed è centrata attorno alla tensione di
metastabilità VM, che spesso si ipotizza assumere il valore:
Alla fascia di tensione critica corrispondono degli intervalli di tempo critici di ampiezza:
155
dove tr è l’intervallo di tempo impiegato dal segnale per commutare livello logico,
portandosi dalla tensione di 0 V a quella di alimentazione VDD. All’interno di ogni periodo
del segnale asincrono, la cui durata è indicata con Tsignal, sono presenti due
commutazioni, quindi due intervalli temporali critici: uno per il fronte di salita e uno per
quello di discesa. Per questo motivo, la percentuale di tempo, rispetto al periodo del
segnale, in cui possono verificarsi errori di sincronizzazione è data dalla relazione:
Se il numero di errori di sincronizzazione al secondo è:
il tempo medio fra due errori di sincronizzazione (MTBF, Mean Time Between Failures) è:
MTBF è il parametro comunemente utilizzato come indicatore della bontà del sistema.
Aumentare il tempo medio tra due errori di sincronizzazione vuol dire massimizzare
questo parametro, tenendo presente che:
- MTBF si riduce al crescere della frequenza del clock del sistema sincrono;
- MTBF si riduce al crescere della frequenza del segnale asincrono, poiché in
corrispondenza di ogni commutazione c’è una certa probabilità di errore;
- MTBF può aumentare usando dei flip-flop più veloci o aumentando il tempo
massimo di metastabilità.
Tuttavia, c’è sempre una possibilità che si abbia un errore di sincronizzazione, perché
non è possibile fare in modo che MTBF sia infinito.
Per minimizzare i disturbi correlati all’utilizzo dei push button, sono stati introdotti in
tutti i progetti che ne prevedono l’uso dei component di debouncing, che consistono
semplicemente in una serie di flip-flop di tipo D. Imponendo al segnale proveniente dal
pulsante di attraversare il debouncer prima di raggiungere il circuito, si riduce
156
notevolmente la probabilità di fallimento Pfail, essendo quest’ultima data dal prodotto
delle probabilità P1, P2 e P2 che i 3 flip-flop falliscano:
Poiché il push button è stato usato per generare segnali di start, la forma più adatta per
svolgere questo compito è quella di un impulso, ottenibile facilmente inserendo altri due
flip-flop in serie al debouncer. Se Q3, Q4 e Q5 sono le uscite del terzo, quarto e quinto flip-
flop, la forma finale a impulso Q si può ottenere imponendo:
1.2. Un sistema più elaborato
Una successiva fase di test ha previsto l’implementazione sulle due board ML505 di un
sistema più sofisticato, costituito da un ricevitore e un trasmettitore SpaceWire su ogni
FPGA, per un totale di 4 dispositivi SpaceWire in tutto. Lo scopo è stato quello di creare
la struttura mostrata in Figura 94, in cui un’informazione:
1. è inviata dal trasmettitore a sinistra al ricevitore a destra sfruttando un link
SpaceWire;
2. è trasferita dal registro di ricezione del ricevitore a destra al registro di
trasmissione del trasmettitore presente sulla stessa scheda;
3. è inviata indietro al ricevitore a sinistra sfruttando un collegamento SpaceWire
diverso da quello del punto 1.
Il trasmettitore presente sulla scheda a sinistra ha come ingressi gli 8 bit, selezionabili
mediante gli switch, e il comando di start, fornito mediante un push button. Quando
questo pulsante è premuto, il dato è inviato al ricevitore presente sulla board a destra
sfruttando un collegamento SpaceWire, immagazzinato nel registro di ricezione e
trasferito in quello di trasmissione. Il segnale che provoca l’invio del dato lungo il
secondo link SpaceWire è il GotData generato dal ricevitore quando rivela la ricezione di
un dato corretto. Il dato, una volta giunto al ricevitore posto sulla scheda dalla quale è
partito, entra nella logica associata alla UART ed è scritto sul terminale.
157
Sono state testate sia la modalità di comunicazione generica che quella veloce, e in
entrambi i casi il funzionamento dei sistemi si è rivelato giusto.
Figura 94: Schema a blocchi della struttura di test.
2. Monitoring dei parametri vitali della CLK Board: System
Monitor e protocollo SPI
La seconda parte di questo lavoro di tesi è stata dedicata alla progettazione di un
dispositivo che consentisse il monitoraggio di alcuni parametri vitali della scheda di
clock, in particolare la temperatura di varie parti della board e alcune tensioni di
alimentazione. Queste misure saranno acquisite periodicamente e inviate al sistema di
hosekeeping, che si occuperà di avviare delle opportune operazioni di sicurezza nel caso
in cui siano rivelate anomalie o risulti la presenza di valori fuori il range di tolleranza.
158
Le misure sono effettuate utilizzando un componente hardware dedicato allo scopo
caratteristico delle Xilinx Virtex-5 e Virtex-6, noto con il nome di System Monitor, e il
protocollo di comunicazione adottato per il trasferimento di queste informazioni al
sistema di housekeeping è il seriale a bassa velocità SPI.
Il controllo di una struttura del genere può essere gestito in maniera efficace mediante
l’utilizzo di un microcontrollore opportunamente programmato. Per questo motivo, il
progetto è stato creato usando EDK, il tool fornito dalla Xilinx per la progettazione dei
sistemi embedded.
Anche in questo caso, l’implementazione è avvenuta su un’evaluation board ML505, ed
è stato necessario utilizzare due schede per simulare la comunicazione tra master e
slave.
La progettazione di un sistema embedded con EDK è divisa in due fasi: prima deve essere
disegnata la piattaforma HW nell’ambiente di sviluppo XPS, poi si scrive il sorgente SW
da far girare sul microprocessore e si carica il bitstream sulla FPGA nell’ambiente SDK.
Lo sviluppo del progetto è, quindi, iniziato in XPS: utilizzando il BSB (Base System
Builder), un’applicazione che semplifica l’operazione di costruzione dell’HW, sono stati
generati una piattaforma di partenza, provvista di varie periferiche (UART, switch, push
button, led, ecc) e alcuni file indispensabili per le fasi successive. Il microprocessore
scelto è MicroBlaze, un softcore della Xilinx particolarmente adatto a svolgere le
operazioni di richieste in questo contesto, la cui frequenza è stata fissata a 120 MHz.
La piattaforma generata dal BSB è mostrata in XPS, dove è possibile aggiungere o
rimuovere periferiche. In questo ambiente di sviluppo, ho inserito nel progetto i core del
System Monitor e del bus SPI, li ho collegati al MicroBlaze tramite PLB, ho impostato gli
altri collegamenti e configurato le porte esterne: i quattro segnali SPI sono stati collegati
ai pin single ended dell’evaluation board in configurazione bidirezionale (cioè, sono
utilizzabili sia come ingressi che come uscite) e due dei 15 ingressi differenziali del
System Monitor sono stati collegati ai pin esterni dedicati, sui quali saranno poste le
uscite di due sensori di temperatura LM61.
In Figura 95 è mostrato lo schema a blocchi del sistema hardware creato in XPS.
159
Terminata la fase di definizione dell’HW, è stata avviata la generazione delle netlist di
implementazione e dei file necessari alla fase successiva, che consiste nella scrittura del
SW con cui programmare il MicroBlaze.
Figura 95: Schema a blocchi del progetto disegnato in XPS.
La definizione del software avviene nell’ambiente di sviluppo SDK, dove è necessario
associare al progetto SW la piattaforma HW disegnata in XPS. Utilizzando il BSP, è stato
scelto di gestire un sistema stand alone, privo cioè di sistema operativo, che fornisce un
insieme minimo di funzioni base relative al processore. Infine, è stato creato un
“progetto C”, costituito dal sorgente, scritto in linguaggio C, da far girare sul MicroBlaze
presente sull’hardware bersaglio.
La maggior parte delle impostazioni dei core sono fatte in ambiente SDK: per questo, un
codice sorgente funzionante deve necessariamente prevedere delle operazioni iniziali
volte all’inizializzazione e alla configurazione dei core utilizzati.
Prima di giungere al progetto finale, sono stati scritti dei codici sorgente per verificare il
funzionamento del SysMon e dello SPI separati.
160
2.1. L’acquisizione dei dati dal SysMon
Il codice dedicato esclusivamente alla verifica del funzionamento del SysMon prevede
che siano scritti sul terminale del PC collegato alla FPGA i valori dei parametri acquisiti,
dopo l’inizializzazione e la configurazione, nella sequenza mostrata in Figura 96.
Figura 96: Schema di funzionamento del codice per l’acquisizione dati del System Monitor.
In particolare, il driver è configurato per operare in modalità sequenziale, cioè, ricevuto
un segnale di start, effettua in successione le misure dei parametri richiesti e nell’ordine
seguente:
1. temperatura;
2. tensione di alimentazione del core della FPGA, pari a circa 1 V;
3. tensione ausiliaria di alimentazione della porta JTAG e degli IO Block, pari a circa 2.5
V;
4. tensione esterna, proveniente da un sensore di temperatura LM61;
161
5. una seconda tensione esterna, ottenuta da un altro sensore LM61 posto in una
posizione diversa della board.
È possibile ottenere la misura solo dopo un segnale di EOS (End Of Sequence) o di EOC
(End Of Conversion) applicando la funzione:
XSysMon_GetAdcData(SysMonInstPtr, XSM_CH_TEMP);
che richiede in ingresso il puntatore all’istanza del driver System Monitor e l’indirizzo del
canale corrispondente al parametro da misurare, e restituisce un valore unsigned 16
(U16). In C, i tipi Ux rappresentano degli interi senza segno costituiti da x bit: quindi, un
U8, un U16 e un U32 sono degli interi senza segno rispettivamente a 8, 16 e 32 bit.
È stato necessario usare questa funzione per ogni misura da effettuare, ogni volta
cambiando il valore dell’indirizzo del canale. Il valore presente in uscita è convertito dal
tipo u16 in un tipo float, inviato dalla UART lungo il cavo seriale e scritto sul terminale
del PC.
Al termine dell’acquisizione dei dati, le misure sono scritte sul terminale nel modo
mostrato in Figura 97: VCCINT è la tensione del core, VCCAUX è la tensione ausiliaria
della porta JTAG e dei blocchi di IO, e con VAUX sono indicate le tensioni esterne. Al
momento del test i sensori non erano montati, per questo i valori misurati sono circa 0
V.
2.1. Verifica del funzionamento dello slave SPI
Scritto il sorgente per il SysMon, ne è stato scritto un altro per il dispositivo SPI. Anche in
questo caso, le prime righe del codice sono dedicate all’inizializzazione e alla
configurazione del core: sono stati impostati la modalità di funzionamento slave del
core SPI, la profondità dei buffer di ricezione e trasmissione, e i dati da inviare lungo
MISO. In questa prova, i buffer sono stati settati per essere costituiti da 16 registri a 8 bit
ciascuno.
162
Figura 97: Misure acquisite dal System Monitor.
La modalità slave richiede che in ingresso siano forniti SCK e MOSI, mentre in uscita è
presente il MISO. Il segnale attivo basso SPISEL va collegato alla linea di selezione del
master o, in alternativa, a massa (scelta in generale sconsigliata e non utilizzata in
questo progetto).
Dopo le fasi iniziali di inizializzazione e configurazione del driver, i buffer di ricezione e
trasmissione sono inizializzati con dei valori di tipo U8; quando lo slave è selezionato da
un master (cioè, SPISEL è basso) e rileva la presenza di una segnale di cadenza sulla linea
SCK, le informazioni contenute nel registro di trasmissione sono inoltrate sulla linea
MISO, mentre i dati presenti sulla linea MOSI sono registrati nei buffer di ricezione e
scritti sul terminale del PC. Le istruzioni contenute nel sorgente C sono schematizzate in
Figura 98.
Per verificare il comportamento del codice, è stato indispensabile fare uso di un
dispositivo master che avviasse la comunicazione lungo le linee SPI.
Il master utilizzato è un open core scritto in linguaggio VHDL disponibile sul web,
modificato opportunamente e implementato grazie al tool ISE su una evaluation board
ML505. La frequenza del segnale di cadenza SCK che gestisce il trasferimento dei dati è
163
stata fissata a 4 MHz, mentre il resto della logica del master opera con un clock a 100
MHz. Il trasferimento è stato impostato, in questi primi test, a 8 bit: ogni volta che è
asserito il comando di start, avvengono la trasmissione e la ricezione di 8 bit, in
corrispondenza a 8 fronti attivi del clock SCK. Il comando di start della comunicazione è
dato, come al solito, da uno dei push button presenti sulla board e il dato da inviare
lungo la linea MOSI è selezionabile tramite gli 8 switch.
Figura 98: Funzionamento del codice relativo allo slave SPI.
Le linee SPI sono state portate sui pin single ended e collegate a quelle della board su cui
è presente il dispositivo slave mediante dei cavetti di impedenza differenziale pari a 50
Ω (Figura 99). L’immagine in Figura 100, invece, mostra come sono visti all’oscilloscopio i
segnali SPI inviati dal master acquisiti correttamente dallo slave su FPGA.
164
Figura 99: Le due evaluation board utilizzate come master e come slave SPI, collegate tra loro tramite cavetti di impedenza caratteristica pari a 50 Ω.
Figura 100: I segnali inviati dal master SPI visti all’oscilloscopio: il selettore attivo basso (blu), il clock a 4 MHz (giallo), il MOSI (rosa) durante la trasmissione di AA.
Sia i dati ricevuti dallo slave attraverso la linea MOSI che quelli ricevuti dal master
attraverso la linea MISO sono scritti sul terminale per verificare che il dato giunto sia
165
corretto. La logica di gestione della UART adottata nel master, però, è molto diversa da
quella dello slave.
La UART del master è la stessa utilizzata per la verifica del protocollo SpaceWire e
descritta nel paragrafo 1.2, ma arricchita di una macchina a stati che codifica in formato
ASCII le informazioni BCD ricevute, in modo da rendere più semplice l’operazione di
verifica.
La UART dello slave è una periferica inserita in ambiente XPS e gestibile facilmente come
trasmettitore attraverso la funzione xil_printf, nel modo fatto con il codice relativo al
SysMon.
Quando si lancia il programma scritto per lo slave, sul terminale sono scritti i valori
contenuti nei registri di trasmissione che saranno inviati al master quando si creerà il
collegamento, come mostrato in Figura 101.
Figura 101: I dati contenuti nel buffer di trasmissione dello slave prima che si stabilisca il collegamento.
166
Al termine di un trasferimento, le informazioni ricevute dal master appaiono sul
terminale del PC come mostrato in Figura 102: i dati sono esattamente gli stessi presenti
nel buffer di trasmissione dello slave prima del collegamento. Dopo la ricezione del
sedicesimo dato, 0F, il master riceve sempre 0, perché il programma scritto per lo slave
termina una volta completato il trasferimento.
Figura 102: Dati ricevuti dal master SPI.
Anche i dati ricevuti dallo slave lungo la linea MOSI sono corretti. Ho variato la posizione
dei primi 4 switch che selezionano l’informazione in modo che risultasse incrementata
progressivamente di 1 bit, e ho lasciato a 0 gli altri. Sul terminale appaiono i dati ricevuti
sia in codifica BCD che in quella decimale (Figura 103), e risultano quelli corretti.
167
Figura 103: Dati trasferiti lungo la linea MOSI dal master allo slave.
2.2. Inviare i dati del SysMon mediante protocollo SPI
Al termine della scrittura dei codici di prova, è stato scritto il programma che realizza lo
scopo del progetto, cioè la trasmissione, tramite protocollo SPI, dei dati acquisiti dal
SysMon. Anche in questo caso, è indispensabile inizializzare e configurare entrambi i
driver, settando i parametri caratteristici come già fatto nei progetti di test
precedentemente descritti. Dopo aver configurato i dispositivi utilizzati, avviene
l’acquisizione dei dati del SysMon, che sono ordinatamente inseriti nei registri di
trasmissione dello slave SPI.
Il risultato della funzione XSysMonGetAdcData è di tipo U16, mentre i registri di
trasmissione dello slave SPI possono essere caricati solo con U8. Per poter trasmettere
l’informazione completa, è necessario utilizzare due registri per ogni dato del System
168
Monitor, caricando in uno di essi i primi 8 bit dell’U16, nell’altro i restanti 8. Visto che le
misure del System Monitor sono 5, e che ognuna necessita di due registri di trasmissione
da 8 bit, la profondità dei buffer è stata impostata a 10.
Figura 104: Diagramma di flusso che illustra l’invio, mediante protocollo SPI, dei dati acquisiti dal System Monitor aggiornati ogni secondo.
Quando il master stabilisce il collegamento, i dati contenuti nei registri dello slave sono
inviati lungo la linea MISO e, una volta ricevuti, scritti sul terminale.
È stato modificato leggermente il master in modo che il trasferimento di dati non fosse a
8 bit, ma a 16; se, infatti, il collegamento fosse a 8 bit, il master, dopo il segnale di start,
riceverebbe un dato parziale, e sarebbe necessario un successivo start per ottenere la
seconda parte dell’informazione. Lavorando su 16 bit, invece, il dato ricevuto è
completo e, modificando la FSM in modo che scriva 4 caratteri ASCII di seguito prima di
169
andare a capo, sull’Hyperterminal si ottiene un elenco chiaro e ordinato delle
acquisizioni del SysMon.
Inoltre, per far sì che il programma non termini una volta effettuato il trasferimento dei
dati contenuti nel buffer di trasmissione, è stato creato un loop, in modo tale che lo
slave sia sempre pronto a inviare i dati a disposizione e che il System Monitor misuri i
valori richiesti una volta al secondo.
Il funzionamento del codice è mostrato nel diagramma di flusso in Figura 104.
In Figura 105 sono mostrati i dati acquisiti dal System Monitor, ricevuti dal master
mediante il protocollo SPI e scritti sul terminale. Sono elencati, nell’ordine, la
temperatura, la tensione interna, la tensione ausiliaria e due tensioni esterne (prossime
allo 0 in quanto, al momento della prova, non erano montati sulla scheda i sensori). Al
termine del primo ciclo di acquisizione, il master può richiedere nuovamente le
informazioni aggiornate del System Monitor e scriverle sul terminale sotto quelle
precedentemente stampate. In Figura 105, sono mostrati 3 cicli di acquisizione.
Figura 105: I valori misurati dal System Monitor e inviati al master tramite protocollo SPI. Sono elencati, nell’ordine, la temperatura, la tensione del core, la tensione ausiliaria e due tensioni esterne, che assumono
valore molto vicine allo 0 in quanto i sensori non erano montati al momento del test.
170
I dati mostrati corrispondono alle uscite del System Monitor, che necessitano di una
elaborazione successiva per essere presentati in una forma facilmente comprensibile
all’utente.
2.1. Il test con Arduino
Il test finale è stato svolto utilizzando come master Arduino, la board che costituirà il
cuore del sistema di housekeeping di EUSO Balloon.
Arduino è una piattaforma elettronica per il physical computing basata su un hardware
versatile e semplice da usare.
La scheda (mostrata in Figura 106) si basa su un circuito stampato che integra un
microcontrollore, dei pin connessi alle porte I/O, un regolatore di tensione e
un’interfaccia USB per il collegamento con il PC. A questo hardware, è associato un
ambiente di sviluppo integrato (IDE) multipiattaforma (Linux, Apple Macintosh e
Windows), dove è possibile scrivere programmi con un linguaggio semplice e intuitivo
chiamato Wiring.
Figura 106: La scheda Arduino Mega.
171
Per lo svolgimento del test, è stata utilizzata la versione Mega di Arduino, che consiste in
un microcontrollore a 8 bit AVR prodotto dalla Atmel, con l’aggiunta di componenti
complementari per facilitarne l’incorporazione in altri circuiti. La scheda include anche
un regolatore lineare di tensione a 5 V e un oscillatore a cristallo a 16 MHz.
Per fare in modo che l’Arduino e lo slave SPI su FPGA comunicassero, è stato necessario
modificare sia l’hardware che il software del sistema di monitoring.
È stata generata una nuova piattaforma hardware, che differisce dalla precedente
perché, invece di avere per i segnali SPI delle terminazioni LVCMOS, le ha di tipo LVTTL.
È stato anche riscritto il sorgente, in quanto Arduino è programmato in modo da inviare
un comando e ricevere successivamente un’informazione specifica dallo slave, secondo
lo schema mostrato in Figura 107. Arduino è stato programmato per inoltrare in
sequenza le richieste dei valori acquisiti dal System Monitor mediante un codice scritto
in linguaggio Wiring.
Il codice per MicroBlaze è stato modificato in modo tale che la logica su FPGA attenda
un comando inviato dall’Arduino e, una volta ricevutolo, faccia partire l’acquisizione di
una delle misure accessibili dal System Monitor. Questo valore è, poi, caricato nei buffer
di trasmissione dello slave e inviato successivamente. Il diagramma di flusso che
descrive il codice sorgente scritto per interfacciare il progetto HW creato con Arduino è
illustrato in Figura 108.
I due dispositivi così programmati sono stati collegati mediante i cavi con impedenza a
50 Ω e hanno cominciato a trasferire correttamente le informazioni desiderate. La
comunicazione è stata attiva per 4 ore consecutive, e non si sono verificati errori né di
trasmissione né di collegamento da parte di entrambi i progetti.
172
Figura 107: Funzionamento di Arduino.
173
Figura 108: Diagramma di flusso del SW che mette in comunicazione il sistema di monitoring su FPGA con quello di housekeeping su Arduino.
174
Conclusioni
Lo scopo di questa tesi è stato quello di implementare dei dispositivi in grado di
comunicare tra loro mediante dei protocolli di comunicazione standard adottati nelle
missioni JEM-EUSO ed EUSO Balloon.
Il lavoro è articolato in due parti: la prima fase ha avuto come scopo principale
l’implementazione di dispositivi trasmettitori e ricevitori SpaceWire, la seconda ha
previsto la realizzazione di una logica per la misura e l’invio tramite protocollo SPI dei
valori di temperatura e tensioni di alimentazione della scheda utilizzata.
Per SpaceWire si intende un protocollo di comunicazione progettato per applicazioni
spaziali, che stabilisce le caratteristiche hardware e software degli host appartenenti
della rete. È stato adottato nelle missioni di EUSO come modalità di trasferimento di dati
dalla scheda di clock e dalle CCB alla CPU principale.
È stato utilizzato un open core come punto di partenza, al quale sono state apportate
delle modifiche per adattarlo al meglio alle esigenze delle missioni in cui sarà adoperato.
Dopo aver fatto delle simulazioni funzionali, sono state scritte delle interfacce di test, in
modo da rendere i dispositivi o solo trasmettitori o solo ricevitori e da semplificare le
operazioni di controllo. I due progetti così creati sono stati implementati su due
evaluation board Virtex-5 ML505 collegate tra loro attraverso un cavo differenziale dalle
caratteristiche prescritte dal protocollo SpaceWire. Sono state testate varie modalità di
funzionamento e sono state effettuate delle modifiche alle interfacce: il link è risultato
funzionante in maniera corretta sia nelle fasi di inizializzazione che durante la
trasmissione e la ricezione dei dati.
175
Questo progetto, per poter essere utilizzato nelle missioni di EUSO, dovrà essere
modificato affinché il core funzioni contemporaneamente sia da ricevitore che da
trasmettitore e sarà necessario completarlo con un’interfaccia comandi.
Nella seconda parte del lavoro di tesi, è stato realizzato un dispositivo in grado di
misurare parametri vitali di una FPGA, quali la temperatura e le tensioni di
alimentazioni, e di inviarli tramite il protocollo seriale a bassa velocità SPI ad un master
che ne avanzi la richiesta. Questo sistema sarà implementato sulla scheda di clock e avrà
il compito di misurare i parametri che devono essere monitorati utilizzando il System
Monitor, un componente hardware delle FPGA prodotte dalla Xilinx appartenenti alla
famiglia Virtex. Le informazioni acquisite saranno immagazzinate nei registri di
trasmissione del dispositivo SPI, aggiornate periodicamente e inviate al sistema di
housekeeping quando quest’ultimo, funzionante come master, inizierà la
comunicazione. Se i valori acquisiti presenteranno anomalie o supereranno le soglie
tollerate, il sistema di housekeeping genererà dei segnali di allarme e avvierà le dovute
procedure di sicurezza.
Per la gestione del sistema costituito dal System Monitor e dallo slave SPI si è scelto di
utilizzare il microcontrollore softcore MicroBlaze, il cui funzionamento ha richiesto la
scrittura di un codice sorgente di programmazione. Lo sviluppo di sistemi embedded,
cioè con microcontrollore integrato, è avvenuto attraverso un tool di progettazione
sviluppato dalla Xilinx, che contempla sia il disegno della piattaforma hardware sia la
scrittura del software.
Anche in questo caso, il trasferimento delle informazioni è stato verificato inizialmente
attraverso l’implementazione su una seconda board di un dispositivo master
opportunamente adattato. In seguito, è stato testata con successo la comunicazione con
Arduino, una scheda con microprocessore programmabile e pin di I/O che rappresenterà
il cuore del sistema di housekeeping di EUSO Balloon.
Il sistema realizzato per il monitoring della clock board è, probabilmente, quello
definitivo per quanto riguarda l’hardware ed è estremamente flessibile per quanto
riguarda il codice scritto per il microprocessore. Ciò vuol dire che, qualora si decidesse di
176
gestire la logica a registri del protocollo di comunicazione SPI in modo differente da
quello da me sviluppato, sarebbe semplice introdurre le modifiche.
177
Bibliografia
[1]. V. Hess, Penetrating Radiation in Seven Free Balloon Flights, Physik. Zeitschr. 13,
pp. 1084-1091, 1912.
[2]. C. D. Anderson, Phys. Rev. 43 (1933) 491494; C. D.; Anderson, Science 76 (1932)
238.
[3]. S. H. Neddermeyer and C. D. Anderson, Phys. Rev. 51 (1937) 884; J. C. Street
and E. C. Stevenson, Phys. Rev. 52 (1937) 10031004.
[4]. A. Codino, The Naked Iron Knee, its Necessity and Empirical Evidence, INFN
Report/TC-09/05, July 2009.
[5]. H. Reeves, Ann. Rev. Astron. Astroph. 12, 437 (1974), H. Reeves, Rev. Mod.
Phys. 66, 193 (1994).
[6]. B. Wiebel-Sooth, P.L. Biermann Landolt-Bornstein, vol. VI/3c, Springer Verlag
(1999).
[7]. V. Berezinsky, A. Z. Gazizov, and S. I. Grigorieva, Phys. Rev., D74, 43005 (2006).
[8]. D. Allard, E. Parizot, A. V. Olinto, Astropart. Phys., 27, 6175, 2007.
[9]. M. Unger, arXiv:0812.2763.
[10]. E. Fermi, On the Origin of the Cosmic Radiation. Physical Review (1949)
Volume 75: p. 1169 e seguenti.
[11]. Thomas K. Gaisser, Cosmic Rays and Particle Physics, Cambridge University
Press, 1990.
[12]. K. Griesen, End to the Cosmic-Ray Spectrum?, Phys. Rev. Lett. 16, 748 (1966).
[13]. G.T. Zatsepin and V.A. Kuzmin, Upper limit of the spectrum of cosmic rays,
JETP. Lett. 4, 78, 1966.
[14]. S. T. Scully e F. W. - arXiv:astro-ph/0006112v4 21 Mar 2001.
178
[15]. Heitler W, Showers Produced by the Penetrating Cosmic Radiation, Proc. R.
Soc. A 166 529, 1938.
[16]. J. Linsley, Evidence for a primary cosmic-ray particle with energy1020 eV,
Physical Review Letter 10, pp. 146-148. Feb. 1963.
[17]. K. Shinozaki, AGASA Results, October 2004.
[18]. Pierre Auger Collaboration, The Pierre Auger Observatory I: The Cosmic Ray
Energy Spectrum and Related Measurements, 32ND INTERNATIONAL COSMIC
RAY CONFERENCE, BEIJING 2011.
[19]. G. Medina-Tanco for the JEM-EUSO Collaboration, Science objectives of the
JEM-EUSO mission, ID0956, ICRC 2011.
[20]. A. Zuccaro for the JEM-EUSO Collaboration, The JEM-EUSO optics design,
ID0852, ICRC 2011.
[21]. Y. Kawasaki for the JEM-EUSO Collaboration, The Focal Surface of the JEM-
EUSO Instrument, ID0472, ICRC 2011.
[22]. J. Bayer for the JEM-EUSO Collaboration, The Cluster Control Board of the
JEM-EUSO mission, ID0836, ICRC 2011.
[23]. G. Medina-Tanco for the JEM-EUSO Collaboration, The Housekeeping
subsystem of the JEM-EUSO instrument, ID0961, ICRC 2011.
[24]. M. Bertaina, M. Casolino et al., Mission Specifications, EB-MS-0005-IRAP, 2011
[25]. S. Dagoret, A. Santangelo, et al., EUSO Balloon Instrument Definition, EUSO-
DF-INST-204-LAL, 2012.
[26]. F. Luccio - L. Pagli, Reti logiche e calcolatori, Bollati Boringhieri, Torino, 1991.
[27]. G.B. Gerace, La logica dei sistemi di elaborazione, Editori Riuniti, Roma, 1994.
[28]. P. Horowitz – W. Hill, The art of electronics, Cambridge University Press. 1989.
[29]. D.P. Bovet, Introduzione all’architettura degli elaboratori, Zanichelli, Bologna,
1996.
[30]. S. Gai – P. Nicoletti, Reti locali: dal Cablaggio all’Internetworking, Edizioni
Scuola Superiore G. Reiss Romoli, L’Aquila.
[31]. Motorola, M68HC11 Reference Manual, 2007,
179
http://www.freescale.com/files/microcontrollers/doc/ref_manual/M68HC11RM
.pdf.
[32]. J. M. Rabaey, A. Chandrakasan, B. Nikolic, Digital Integrated Circuits – A
Design Perspective, Prentice Hall, 2003.
[33]. Xilinx, Virtex-5 FPGA User Guide, UG190
www.xilinx.com/support/documentation/user guides/ug190.pdf.
[34]. Xilinx, Embedded System Tools Reference Manual - Embedded Development
Kit,
http://www.xilinx.com/support/documentation/sw_manuals/edk10_est_rm.pd
f.
[35]. Xilinx, Platform Studio User Guide - Embedded Development Kit, 2004,
http://www.xilinx.com/ise/embedded/edk6_2docs/platform_studio_ug.pdf.
[36]. Xilinx, Software Development kit, http://www.xilinx.com/tools/sdk.htm.
[37]. Xilinx, MicroBlaze Processor Reference Guide - Embedded Development Kit,
2004
http://www.xilinx.com/support/documentation/sw_manuals/xilinx13_1/mb_re
f_guide.pdf.
[38]. Xilinx, Virtex-5 FPGA System Monitor - User Guide, 2011
http://www.xilinx.com/support/documentation/user_guides/ug192.pdf.
[39]. Xilinx, LogiCORE IP XPS Serial Peripheral Interface (SPI), Product Specification,
2011
http://www.xilinx.com/support/documentation/ip_documentation/xps_spi.pdf.
[40]. K. Chapman, UART Transmitter and Receiver Macros – Xilinx, 2003.
[41]. Arduino web site: http://arduino.cc/en/.
[42]. Wiring web site: http://wiring.org.co/.