Elettronica di front-end per gli RPC dell’esperimento...

164
Universit ` a degli studi di Bari Aldo Moro Facolt ` a di scienze matematiche, fisiche e naturali Corso di Laurea Magistrale in Fisica Tesi di Laurea Elettronica di front-end per gli RPC dell’esperimento NESSiE Relatori: Laureando: Prof. Saverio Simone Luigi Paparella Dott. Giuseppe De Robertis Anno Accademico 2011/2012 Sessione Autunnale

Transcript of Elettronica di front-end per gli RPC dell’esperimento...

Universita degli studi di Bari Aldo Moro

Facolta di scienze matematiche, fisiche e naturali

Corso di Laurea Magistrale in Fisica

Tesi di Laurea

Elettronica di front-end per gli RPCdell’esperimento NESSiE

Relatori: Laureando:Prof. Saverio Simone Luigi PaparellaDott. Giuseppe De Robertis

Anno Accademico 2011/2012Sessione Autunnale

Indice

Introduzione 5

1 L’esperimento NESSiE 7

1.1 La fisica di NESSiE . . . . . . . . . . . . . . . . . . . . . . . . 7

1.1.1 Oscillazioni di neutrino . . . . . . . . . . . . . . . . . . 7

1.1.2 Esperimenti di short-baseline . . . . . . . . . . . . . . 9

1.1.3 Modello “3 + 1” . . . . . . . . . . . . . . . . . . . . . 12

1.1.4 Modello “3 + 2” . . . . . . . . . . . . . . . . . . . . . 13

1.1.5 Modello “3 + 1” con violazione di CPT . . . . . . . . . 14

1.2 Il fascio . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14

1.3 Il rivelatore . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

1.3.1 Le LAr-TPC . . . . . . . . . . . . . . . . . . . . . . . 18

1.4 Gli spettrometri di NESSiE . . . . . . . . . . . . . . . . . . . 22

1.4.1 Gli spettrometri in ferro . . . . . . . . . . . . . . . . . 22

1.4.2 Gli spettrometri in aria . . . . . . . . . . . . . . . . . . 25

1.4.3 I rivelatori . . . . . . . . . . . . . . . . . . . . . . . . . 26

1.4.4 Ricostruzione del momento . . . . . . . . . . . . . . . . 27

1.4.5 L’elettronica . . . . . . . . . . . . . . . . . . . . . . . . 29

2 Il sistema di RPC di OPERA 30

2.1 I rivelatori RPC . . . . . . . . . . . . . . . . . . . . . . . . . . 30

2.1.1 Fisica del rivelatore . . . . . . . . . . . . . . . . . . . . 31

2.1.2 Modello elettronico . . . . . . . . . . . . . . . . . . . . 33

2.1.3 Regimi di funzionamento . . . . . . . . . . . . . . . . . 35

2.1.4 Gli RPC di OPERA . . . . . . . . . . . . . . . . . . . 35

2.2 Lo spettrometro di OPERA . . . . . . . . . . . . . . . . . . . 36

2.3 Elettronica degli RPC di OPERA . . . . . . . . . . . . . . . . 38

2.3.1 La Front-End Board . . . . . . . . . . . . . . . . . . . 39

2.3.2 La Contoller Board . . . . . . . . . . . . . . . . . . . . 40

2.3.3 La Trigger Board . . . . . . . . . . . . . . . . . . . . . 41

2

3 La front-end board di NESSiE 433.1 Il DAQ di NESSiE . . . . . . . . . . . . . . . . . . . . . . . . 433.2 Specifiche della FEB . . . . . . . . . . . . . . . . . . . . . . . 45

3.2.1 Il formato della scheda . . . . . . . . . . . . . . . . . . 463.2.2 Segnali di ingresso e uscita alla FEB . . . . . . . . . . 483.2.3 Il time stamp . . . . . . . . . . . . . . . . . . . . . . . 503.2.4 Differenze con la FEB di OPERA . . . . . . . . . . . . 51

3.3 Il progetto della FEB . . . . . . . . . . . . . . . . . . . . . . . 523.4 Discriminatori LVDS . . . . . . . . . . . . . . . . . . . . . . . 543.5 Il DAC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 563.6 L’ADC . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 593.7 Circuito di configurazione della FPGA . . . . . . . . . . . . . 63

4 La FPGA 664.1 FPGA: overview . . . . . . . . . . . . . . . . . . . . . . . . . 66

4.1.1 FPGA: principio di funzionamento . . . . . . . . . . . 674.1.2 Risorse di clock . . . . . . . . . . . . . . . . . . . . . . 704.1.3 Memoria RAM interna . . . . . . . . . . . . . . . . . . 714.1.4 Risorse di I/O . . . . . . . . . . . . . . . . . . . . . . . 72

4.2 Scelta della FPGA . . . . . . . . . . . . . . . . . . . . . . . . 734.3 Il progetto della FPGA . . . . . . . . . . . . . . . . . . . . . . 73

4.3.1 I clock . . . . . . . . . . . . . . . . . . . . . . . . . . . 754.3.2 La logica di formazione del segnale . . . . . . . . . . . 754.3.3 La logica di mascheramento dei dati . . . . . . . . . . . 784.3.4 Il buffer circolare . . . . . . . . . . . . . . . . . . . . . 784.3.5 Il fast-OR . . . . . . . . . . . . . . . . . . . . . . . . . 804.3.6 La logica di time stamp . . . . . . . . . . . . . . . . . 83

4.4 Il processore . . . . . . . . . . . . . . . . . . . . . . . . . . . . 854.4.1 Il microcontrollore 8051 . . . . . . . . . . . . . . . . . 854.4.2 La memoria SFR . . . . . . . . . . . . . . . . . . . . . 874.4.3 Implementazione del V51 . . . . . . . . . . . . . . . . . 894.4.4 Mappatura della memoria SFR . . . . . . . . . . . . . 904.4.5 Teoria di funzionamento . . . . . . . . . . . . . . . . . 92

4.5 Domini di clock . . . . . . . . . . . . . . . . . . . . . . . . . . 93

5 Test e simulazioni per la FEB di NESSiE 955.1 Test del ricevitore LVDS . . . . . . . . . . . . . . . . . . . . . 95

5.1.1 Motivazioni . . . . . . . . . . . . . . . . . . . . . . . . 955.1.2 Le misure . . . . . . . . . . . . . . . . . . . . . . . . . 96

5.2 Simulazione della FPGA . . . . . . . . . . . . . . . . . . . . . 1045.2.1 Simulazione del buffer circolare . . . . . . . . . . . . . 107

3

5.2.2 Simulazione della logica di time-stamp . . . . . . . . . 1105.2.3 Simulazione Post Place and Route . . . . . . . . . . . . 1125.2.4 Verifica della FPGA con input simulati . . . . . . . . . 113

Conclusioni 116

Appendici 118

A Il Verilog 118A.1 Gli hardware description languages . . . . . . . . . . . . . . . 118A.2 Il linguaggio Verilog . . . . . . . . . . . . . . . . . . . . . . . . 119A.3 La sintassi del Verilog . . . . . . . . . . . . . . . . . . . . . . 119

A.3.1 Registri e wires . . . . . . . . . . . . . . . . . . . . . . 120A.3.2 Blocchi initial e always . . . . . . . . . . . . . . . . . . 121A.3.3 Assegnamento blocking e non-blocking . . . . . . . . . 123A.3.4 Costrutti di controllo . . . . . . . . . . . . . . . . . . . 124

A.4 Esempio: una macchina a stati . . . . . . . . . . . . . . . . . 125

B Sintesi di FPGA 129B.1 L’ambiente ISE . . . . . . . . . . . . . . . . . . . . . . . . . . 129B.2 Progetto di un cronometro . . . . . . . . . . . . . . . . . . . . 129

B.2.1 Il top-level . . . . . . . . . . . . . . . . . . . . . . . . . 131B.2.2 Sintesi . . . . . . . . . . . . . . . . . . . . . . . . . . . 134B.2.3 Implementazione . . . . . . . . . . . . . . . . . . . . . 137B.2.4 Programmazione . . . . . . . . . . . . . . . . . . . . . 138

C Sorgenti Verilog 140

D Schematico della FEB 147

Ringraziamenti 158

Bibliografia 160

4

Introduzione

L’esperimento NESSiE, previsto al CERN, indaghera la fisica del neutrinooltre il modello standard. Esso lavorera con un fascio di neutrini prodottodall’acceleratore SPS.

La fisica del neutrino secondo il Modello Standard, il quale assume nullala massa del neutrino, e stata messa in discussione da recenti esperimenti chehanno fornito prova di oscillazioni di neutrino. Il fenomeno delle oscillazioni,teorizzato per la prima volta da B. Pontecorvo, e infatti possibile solo se ineutrini hanno massa non nulla. Oscillazioni di neutrino sono state osservatein esperimenti con neutrini solari, atmosferici e esperimenti con neutriniprodotti artificialmente per mezzo di reattori o acceleratori. I dati di questiesperimenti sono ben compresi nell’ambito della teoria di mescolamento a treneutrini, in cui i neutrini νe, νµ, ντ , autostati di sapore, sono combinazionilineari degli autostati di massa ν1, ν2, ν3.

Oltre a queste ben comprovate osservazioni di oscillazioni di neutrini,alcuni recenti esperimenti di short-baseline quali LSND, MiniBooNE e gliesperimenti radiochimici (GALLEX, SAGE), hanno prodotto risultati in ap-parente contraddizione con i risultati precedenti (sono le cosiddette “neutrinoanomalies”). I dati di questi esperimenti sembrerebbero infatti indicareoscillazioni di neutrino riconducibili ad un valore di ∆m2 di diversi ordinidi grandezza superiore rispetto a quello trovato per i neutrini solari ed atmo-sferici. Questo risultato e incompatibile con la teoria che prevede solo trespecie attive di neutrino.

Tra le diverse teorie proposte per spiegare queste anomalie, la piu ac-creditata sembra essere quella che prevede l’esistenza di uno o piu neutrinicosiddetti sterili, ossia che non interagiscono mediante interazione debole, masolo gravitazionalmente. L’esistenza di un quarto neutrino spiegherebbe trale altre cose la cosiddetta “reactor neutrino anomaly”, ossia una riduzionedi circa il 3% dei rate di antineutrino misurata in passati esperimenti direattori, e sarebbe consistente con i recenti fit dei parametri cosmologici chesembrerebbero suggerire un numero di neutrini superiore a 3.

Il programma di esperimenti presso il fascio di neutrini del CERN-SPS

5

si inserisce in questo contesto. Scopo principale di questi esperimenti equello di confermare o confutare le anomalie citate e, in caso di conferma, dicaratterizzare il modello di neutrino sterile, determinando numero di neutrinisterili, i parametri del modello, l’eventuale violazione di CP.

L’esperimento e basato su due LAr-TPC (ICARUS) seguite da spettro-metri magnetici (NESSiE), che osserveranno gli eventi di neutrino in duesiti a diversa distanza (Near detector, Far detector). I due spettrometririveleranno muoni (e ne misureranno carica e momento) mediante rivelatoriRPC immersi in un campo magnetico.

In questo lavoro di tesi si e studiata e progettata una scheda di front-end(FEB) in grado di eseguire una lettura digitale degli RPC operanti in streamermode, compatibilmente con le specifiche richieste dall’esperimento.

Nel capitolo 1 viene presentato l’esperimento presso il fascio di neutrinidel CERN-SPS, con un maggiore dettaglio sullo spettrometro per muoni diNESSiE.

Nel capitolo 2 vengono descritti i rivelatori RPC e sono anche presentatilo spettrometro e l’elettronica di OPERA, esperimento da cui trae spunto laconcezione di NESSiE.

Nel capitolo 3 viene descritta con maggiore dettaglio la FEB, discutendonello specifico le funzionalita, il progetto e i principali componenti elettronicimontati su di essa.

Nel capitolo 4 e illustrato il progetto della FPGA, componente program-mabile della FEB.

Infine nel capitolo 5 sono discussi i test effettuati per verificare il funzio-namento della FEB.

Le due appendici A e B sono da intendersi come il resoconto dell’attivitadi tirocinio svolta presso la Sezione INFN di Bari al fine di acquisire le com-petenze necessarie per lo svolgimento del lavoro di tesi.

6

Capitolo 1

L’esperimento NESSiE

L’esperimento NESSiE (Neutrino Experiment with SpectrometerS in Europe)e un esperimento di short-baseline sulla fisica del neutrino. Esso utilizzeraun fascio di neutrini, prodotto dall’acceleratore SPS presso la North Area delCERN (fig 1.1), in due posizioni differenti, la prima a 300 m dal bersaglio(Near detector), la seconda a 1, 6 km dal bersaglio (Far detector). L’espe-rimento, inizialmente previsto presso l’acceleratore PS, beneficera di unabaseline piu lunga in virtu del maggiore spazio disponibile presso la NorthArea (nel precedente scenario le posizioni dei rivelatori Near e Far sarebberostate rispettivamente 127 m e 850 m dal bersaglio).

L’esperimento NESSiE [1] indaghera la fisica del neutrino oltre il modellostandard. Esso affianchera in questa ricerca l’esperimento ICARUS [2]. Scopoprincipale dell’esperimento e quello di fornire evidenza sperimentale dell’esi-stenza di neutrini sterili, ossia neutrini non interagenti debolmente. Laconferma della teoria del neutrino sterile, oltre a dare un senso ai risultatianomali trovati nei recenti esperimenti di short-baseline quali LSND [4] eMiniBooNE [5], avrebbe anche un grande impatto dal punto di vista astro-fisico e cosmologico, dando un importante contributo alla questione dellaMateria Oscura.

1.1 La fisica di NESSiE

1.1.1 Oscillazioni di neutrino

Il fenomeno delle oscillazioni di sapore del neutrino e confermato da diverseosservazioni sperimentali ed e direttamente collegato alla questione dellamassa del neutrino. Esso e spiegato dalla teoria di mixing a tre neutrini,secondo la quale i neutrini interagiscono come autostati di sapore, ma si

7

Figura 1.1: Layout del fascio di neutrini presso la North Area del CERN. Lafigura mostra il luogo di estrazione del fascio primario, la posizione del bersaglio,la posizione dei due rivelatori Near e Far, un sito per un eventuale Middle detectorposizionato tra il Near e il Far. [3]

propagano nello spazio come una sovrapposizione di autostati di massa [6].Gli autostati di interazione debole νe, νµ, ντ sono quindi espressi comecombinazioni lineari degli autostati di massa ν1, ν2, ν3, i quali si propaganocon frequenze leggermente differenti in virtu della diversa massa. Questofatto ha come conseguenza che tra i diversi autostati di massa si sviluppanofasi differenti con la distanza percorsa; questo corrisponde a una variazionedel sapore del neutrino, di qui le oscillazioni.

Ad esempio, nel caso di due soli sapori νe e νµ, essi sono collegati agliautostati di massa ν1 e ν2 tramite una trasformazione unitaria che coinvolgeun angolo di mixing θ:(

νµνe

)=

(cos θ sin θ− sin θ cos θ

)(ν1ν2

)La propagazione nello spazio degli stati ν1 e ν2, ipotizzando mi Ei, e

data da (nelle unita di misura in cui ~ = c = 1):

ν1(t) = ν1(0)e−ıE1t

ν2(t) = ν2(0)e−ıE2t

Ei = p+m2i

2p

Nell’ipotesi di avere solo neutrini muonici al tempo t=0 (νµ(0) = 1,νe(0) = 0), un calcolo diretto porta alla probabilita di trovare νµ o νe dopo

8

un tempo t = L/c, dove L e la distanza percorsa:

P (νµ → νe) = sin2(2θ) sin2

(1, 27∆m2L

E

)(1.1)

P (νµ → νµ) = 1− P (νµ → νe) (1.2)

In queste equazioni ∆m2 = m22 − m2

1 e espressa in eV 2; E e l’energiadel neutrino ed e data in MeV; L e espressa in metri; il valore numerico1,27 deriva da un prodotto di costanti fisiche fondamentali e dei fattori diconversione delle unita di misura. La formula precedente mostra che il saporedel neutrino oscilla con la distanza percorsa dal fascio.

Dal teorema CPT che connette particella e antiparticella, segue che laprobabilita di sopravvivenza P (να → να) e uguale a P (να → να), doveα = e, µ, τ . Per quanto riguarda le probabilita di trasformazione, invece,la probabilita P (να → νβ) non e in generale uguale a P (να → νβ) e laprobabilita P (νβ → να) non e uguale a P (να → νβ). Queste relazionisarebbero uguaglianze nel caso valesse l’invarianza di CP, ma essa puo essereviolata nelle interazioni deboli.

La teoria di mixing a tre neutrini e stata ampiamente verificata in espe-rimenti con neutrini solari, atmosferici e esperimenti di long-baseline conneutrini da reattore o acceleratore. I valori di ∆m2 derivanti da fit sui datirelativi ai neutrini solari (SOL) e atmosferici (ATM) sono [8]:

∆m221 = ∆m2

SOL ' 8× 10−5eV 2 (1.3)

|∆m231| ' |∆m2

32| = ∆m2ATM ' 2× 10−3eV 2 (1.4)

dove ∆m2jk = m2

j −m2k e mj e la massa del neutrino νj.

1.1.2 Esperimenti di short-baseline

Come gia accennato, NESSiE e un esperimento di tipo short-baseline (SBL).Tipicamente gli esperimenti SBL utilizzano una sorgente artificiale di neutrini(da acceleratore o reattore); un rivelatore e posto a una certa distanza L(detta baseline) dalla sorgente e misura il numero di interazioni di neutrinidi un dato tipo.

La ricerca di oscillazioni di neutrino richiede la conoscenza della sorgente,sia rispetto alla composizione in sapore che in termini di spettro di energia [4].Ci sono due tipi di ricerche. Nel primo metodo si cerca di osservare unariduzione del numero di neutrini rivelati rispetto al numero atteso. Ricerchedi questo tipo sono dette misure di scomparsa. Il secondo metodo si basasulla ricerca di un numero di eventi maggiore di quello atteso per neutrini di

9

sapore non presente (o presente in minima quantita) nella sorgente. Ricerchedi questo tipo sono denominate come esperimenti di comparsa.

I rate di comparsa e di sparizione osservati sono ottenuti dal rapporto trail numero di eventi osservati e di eventi attesi (il primo e dato dalle misuresperimentali, mentre il secondo e valutato in base all’intensita della sorgentedi neutrini, alle caratteristiche geometriche del rivelatore, alla sezione d’urtoneutrino/bersaglio, ecc. ed e solitamente calcolato mediante metodi MonteCarlo); di qui possono essere dedotte le rispettive probabilita di oscillazionee di sopravvivenza. Queste a loro volta possono essere inquadrate in unmodello di mixing e descritte in termini di differenze di masse quadratichee angoli di mixing. Solitamente i risultati degli esperimenti di SBL sonopresentati in termini di regioni di confidenza nel piano (sin2 2θ,∆m2), con θangolo di mixing e ∆m2 = m2

i −m2j (fig. 1.2).

Esempi di esperimenti di short-baseline sono LSND [4] e MiniBooNE [5].Il primo, pensato per ricercare oscillazioni νµ → νe, ha riscontrato un segnaledi produzione di νe che se interpretato in termini di oscillazioni di neutrinocomporterebbe un valore di ∆m2 di gran lunga superiore a quelli standard.L’esperimento MiniBooNE, sebbene non abbia confermato il risultato diLSND, ha riscontrato una nuova “anomalia”. I risultati di questi esperimentipotrebbero essere interpretati in termini della esistenza di neutrini sterili.

L’esperimento ICARUS/NESSiE e pensato per indagare nell’intervallo divalori |∆m2

new| > 1 eV 2 e | sin2new | ≈ 0, 1 , in cui i citati esperimenti di SBL

hanno individuato un comportamento anomalo. L’esperimento e basato sudue rivelatori che osservano il segnale di neutrino nelle posizioni “Near” e“Far”. Differenze nelle distribuzioni di eventi osservate sperimentalmentedai due rivelatori possono essere attribuite alla presenza di oscillazioni.

L’esperimento ICARUS/NESSiE potrebbe dare una risposta definitivariguardo la presunta esistenza di neutrini sterili, in quanto esso raccogliera intre anni di presa dati molta piu statistica degli esperimenti suoi predecessori.Basti pensare che i 3300 eventi di neutrino raccolti dall’esperimento CDHS [7]nel proprio Far detector corrispondo alla statistica che ICARUS/NESSiEraccoglierebbe in un solo giorno di presa dati; d’altra parte esso raccoglierebbela statistica dell’esperimento LSND in circa 10 giorni.

Sostanzialmente l’esperimento ICARUS/NESSiE indaghera le seguenti“anomalie” [2]:

• le anomalie di neutrino e antineutrino elettronico degli esperimentiLSND e MiniBooNE;

• le anomalie di scomparsa di segnale di neutrino (antineutrino) elettro-nico negli esperimenti radiochimici e con reattore;

10

(a)

(b)

Figura 1.2: (a) Regioni consentite nel piano sin2 2θeµ − ∆m241 e ∆χ2 marginali

per sin2 2θeµ e ∆m241 ottenuti dal fit globale dei dati SBL nello schema 3+1. Il

punto di best-fit, corrispondente a ∆χ2min, e indicato da una croce. [1] (b) Regioni

consentite nei piani sin2 2θee − ∆m241 e sin2 2θµµ − ∆m2

41 e ∆χ2 marginali persin2 2θee e sin2 2θµµ ottenuti dal fit globale dei dati SBL nello schema 3+1. I coloridelle linee hanno lo stesso significato che in figura a. [1]

11

• equivalente scomparsa nel segnale di neutrino muonico;

• la possibilita remota di violazione CPT, identificata da differenze trale oscillazioni di neutrino e antineutrino.

La scoperta di oscillazioni νµ → νe e stata rivendicata dagli esperimentiLSND e MiniBooNE. Nessun esperimento ha pero finora riportato evidenzadi sparizione di νµ o νµ nella regione di ∆m2 consentita per i neutrini sterili.Una migliore misura di scomparsa di νµ (νµ) potrebbe mettere severamentein crisi i fit globali di neutrino sterile in caso di risultato nullo, o viceversafornire una imprescindibile conferma in caso di osservazione di segnale.

In caso di conferma dell’esistenza di neutrini sterili, i dati raccolti dall’e-sperimento ICARUS/NESSiE saranno inquadrati nell’ambito di uno tra imodelli di mixing descritti nei paragrafi seguenti e ne saranno determinati irelativi parametri.

1.1.3 Modello “3 + 1”

La teoria del neutrino sterile prevede l’esistenza di un ulteriore neutrino,oltre ai tre neutrini attivi, che interagirebbe solo gravitazionalmente. Taleneutrino e detto neutrino sterile (νs).

Questa teoria e stata introdotta per dare una spiegazione ai segnali dioscillazione trovati negli esperimenti di short-baseline (SBL) corrispondentia una differenza di massa quadratica insolitamente grande (∆m2 & 0, 1 eV 2).Questo valore di ∆m2 non e contemplato nella teoria di mixing a tre neutrini,la quale prevede valori di ∆m2 decisamente inferiori (equazioni 1.3 e 1.4).Pertanto si e resa necessaria l’introduzione di un quarto neutrino leggero.Poiche il numero di neutrini attivi e limitato a tre dalla misura della larghezzadella risonanza Z0, neutrini leggeri aggiuntivi non possono avere accoppia-menti elettrodeboli, di qui il neutrino sterile.

Nell’approssimazione in cui ∆m221 ≈ ∆m2

31 ≈ 0, la probabilita di appa-rizione SBL nello schema di (3 + 1) neutrini e equivalente al caso di dueneutrini:

P SBL(να → νβ) = P SBL(να → νβ) = sin2(2θαβ) sin2

(∆m2

41L

4E

)(1.5)

P SBL(να → να) = P SBL(να → να) = 1− sin2(2θαα) sin2

(∆m2

41L

4E

)(1.6)

per α, β = e, µ, τ, s, con

sin2(2θαβ) = 4|Uα4|2|Uβ4|2 (1.7)

sin2(2θαα) = 4|Uα4|2(1− 4|Uα4|2) (1.8)

12

Nelle equazioni precedenti gli Uαi sono gli elementi della matrice di mixingU , che consente il passaggio dalla base degli autostati di sapore (νe, νµ, ντ , νs)a quella degli autostati di massa (ν1, ν2, ν3, ν4). Questa matrice in generaleinclude 3(s+ 1) angoli e (2s+ 1) fasi, con s pari al numero di neutrini steriliintrodotti nel modello. Nell’approssimazione in cui ∆m2

21 = ∆m231 = 0 essa

si semplifica, per cui gli esperimenti SBL dipendono da 2s angoli e (s − 1)fasi.

Il modello (3 + 1) dipende quindi da tre parametri: U4e, U4µ, ∆m214.

Caratteristiche salienti di questo modello sono le seguenti [1]:

• Le probabilita efficaci di oscillazione SBL dipendono solo dal piu grandedei ∆m2, ossia dal valore assoluto di ∆m2

14.

• Le ampiezze di oscillazione dipendono solo dai valori assoluti deglielementi nella quarta colonna della matrice di mixing, ossia da trenumeri reali con somma minore di 1, poiche l’unitarieta della matricedi mixing comporta che

∑α |Uα4|2 = 1.

• La violazione di CP non puo essere osservata negli esperimenti dioscillazione SBL, per cui neutrini ed antineutrini hanno le stesse pro-babilita efficaci di oscillazione SBL.

1.1.4 Modello “3 + 2”

Un modello alternativo a quello esaminato nel paragrafo precedente e ilmodello “3 + 2” che considera due neutrini sterili. E stato dimostrato [9]che questo modello fornisce un miglior fit dei dati sperimentali rispetto almodello “3 + 1”. La ragione per cui questo modello e preferito rispetto aquello “3 + 1” e che risolve il conflitto sperimentale tra il segnale νµ → νedell’esperimento LSND e la mancanza di oscillazioni νµ → νe riportatadall’esperimento MiniBooNE grazie all’introduzione della violazione di CP,la quale richiede almeno due neutrini sterili.

Nell’ambito della teoria a (3 + 2) neutrini, nell’approssimazione di SBL(∆m2

21 ≈ ∆m231 ≈ 0), la probabilita di apparizione di νe e data da [9]:

P (νµ → νe) = 4|Ue4|2|Uµ4|2 sin2 φ41 + 4|Ue5|2|Uµ5|2 sin2 φ51

+8|Ue4Uµ4Ue5Uµ5| sinφ41 sinφ51 cos(φ54 − δ) (1.9)

con le definizioni:

φij ≡∆m2

ijL

4E, δ ≡ arg(U∗e4Uµ4Ue5U

∗µ5) (1.10)

13

L’equazione 1.9 vale per i neutrini; per quanto riguarda gli antineutrinil’equazione analoga si ottiene con la sostituzione δ → −δ.

La probabilita di sopravvivenza e data da:

P (να → να) = 1−4

(1−

∑i=4,5

|Uαi|2)∑

i=4,5

|Uαi|2 sin2 φi1−4|Uα4|2|Uα5|2 sin2 φ54

(1.11)dove φij e lo stesso che in equazione 1.10.

Il modello possiede quindi sette parametri: U4e, U4µ, ∆m214, U5e, U5µ,

∆m215, ∆s.

1.1.5 Modello “3 + 1” con violazione di CPT

Nell’ambito dei modelli “3 + 1” la sola variante che sembra in grado diinterpolare i dati globali e il modello di Giunti-Laveder [10] che considera (3+ 1) neutrini e violazione di CPT. Il modello e stato ispirato dalle analisisui dati di neutrino elettronico delle misure di calibrazione degli esperimentiradiochimici e dai dati di antineutrino elettronico degli esperimenti con reat-tore (Bugey, Chooz). Questi dati possono essere spiegati in termini di oscilla-zioni di neutrino aventi differenza di masse quadratiche e mixing di neutrinie antineutrini violanti CPT.

In questo modello i parametri che governano le oscillazioni di neutrino edi antineutrino possono essere differenti (tab. 1.1). I neutrini possono averesolo transizioni νe → νe, mentre gli antineutrini hanno una fenomenologiamolto piu ricca.

∆m241 |Ue4| |Uµ4| ∆m

2

41 |U e4| |Uµ4|1.92 0.275 0.0 0.47 0.068 0.886

Tabella 1.1: Parametri di best fit del modello “3 + 1” con violazione CPT.

1.2 Il fascio

L’esperimento NESSiE utilizzera un fascio di neutrini νµ prodotto dall’ac-celeratore SPS del CERN avente uno spettro di energia centrato intorno ai2 GeV. I neutrini del fascio verranno prodotti in impulsi della durata di10, 5 µs.

L’energia del fascio e stata raddoppiata rispetto al precedente scenarioche prevedeva di utilizzare un fascio prodotto dall’acceleratore PS. Nel piu

14

recente proposal si prevede di utilizzare un nuovo fascio di neutrini dal SPSnella North Area. Lo spazio piu ampio disponibile nella North Area consenteuna distanza piu lunga (fino a 1, 6 km) che puo essere sfruttata dal rivelatoreFar, invece che la distanza di 850 m prevista nell’ipotesi di utilizzare il fasciodal PS. Anche la distanza del rivelatore Near e stata aumentata da 127 m acirca 300 m. Per far fronte ad una baseline (L) lunga, anche il valore centraledello spettro di energia del fascio di neutrini e stato corrispondentementeraddoppiato da Eν ∼ 1 GeV a Eν ∼ 2 GeV in modo da ottenere lo stessorapporto L/Eν per l’esperimento.

Il fascio di neutrini viene prodotto nella maniera descritta di seguito. Unfascio di protoni di energia opportuna viene fatto incidere su un bersaglio.L’interazione dei protoni con gli atomi del bersaglio produce diverse particelle,tra cui soprattutto pioni e muoni. Al bersaglio segue un sistema di focalizza-zione che, per mezzo di campi magnetici, seleziona e concentra le particellecariche di dato segno e momento. Infine, i neutrini derivano dal decadimentodi pioni e muoni, secondo i seguenti modi di decadimento:

π+ → µ+νµ ; π+ → e+νeπ− → µ−νµ ; π− → e−νe

(1.12)

µ+ → e+νeνµµ− → e−νeνµ

(1.13)

Un focusing positivo consente di ottenere tramite il decadimento π+ → µ+νµun fascio principalmente composto da νµ, con una piccola contaminazionederivante dagli altri modi di decadimento elencati nelle 1.12 e 1.13; d’altrocanto un focusing negativo permette di ottenere un fascio con prevalenza diνµ, derivanti dal decadimento π− → µ−νµ.

La figura 1.4 mostra i flussi di neutrino agli spettrometri Near e Far infocusing positivo e negativo. Essi sono stati calcolati per fascio di neutrinidel PS mediante una simulazione al computer basata sul software GEANT4

Figura 1.3: Layout del fascio di neutrini dell’acceleratore PS del CERN. [2]

15

Figura 1.4: Flussi νµ (nero) e νµ (rosso) agli spettrometri Near (colonna sinistra)e al Far (colonna destra) nel caso di focusing positivo (riga superiore) e focusingnegativo (riga inferiore). [1]

e FLUKA. La generazione di interazioni protone-bersaglio e stata effettuatamediante FLUKA-2008; e stato usato invece GEANT4 per seguire le traccedelle particelle nel campo magnetico e nei materiali e per il trattamento deldecadimento dei mesoni. Il risultato della simulazione ha mostrato che inquesta configurazione si ha un ν/p.o.t. (protons on target) di circa 10−2 nelrivelatore Near e una ulteriore riduzione di un fattore di circa 20 per quantoriguarda il rivelatore Far. Le frazioni di (νµ, νµ, νe, νe) nello spettrometroNear sono (12.2, 86.6, 0.49, 0.75)% nella modalita di focusing positivo e (12.2,86.6, 0.49, 0.75)% nella modalita di focusing negativo. Nel rivelatore Far lerelative percentuali sono molto simili.

Per il nuovo fascio di neutrini SPS si pensa di utilizzare come sorgenteprimaria protoni aventi energia intorno a 100 GeV, valore sufficientementebasso al fine di produrre neutrini di 2 GeV e mantenere sotto controllo ilfondo. Inoltre la durata dell’impulso di neutrini sara di 10, 5 µs, valorecomunque adeguato alle esigenze dell’esperimento.

16

1.3 Il rivelatore

Sia il rivelatore Near che il rivelatore Far sono composti da una camera aproiezione temporale ad argon liquido (LAr-TPC) e da uno spettrometroper muoni composto da rivelatori RPC (Resistive Plate Chamber) in campomagnetico (fig. 1.5).

(a)

(b)

Figura 1.5: (a) Visione schematica d’insieme del complesso sperimentale dell’e-sperimento NESSiE (non in scala). (b) Layout generale del sito sperimentale cheospitera il Far Detector. [3]

17

Le due LAr-TPC, di competenza del gruppo ICARUS [2], sono la parteprincipale dell’esperimento. Esse, oltre ad essere di fatto il bersaglio per ilfascio di neutrini con la loro grande massa attiva di argon liquido, costi-tuiscono uno strumento di imaging molto sensibile per la rivelazione delleinterazioni da neutrino.

La parte degli spettrometri, di competenza del gruppo NESSiE, e com-plementare a quella delle TPC. Per mezzo di rivelatori RPC immersi in uncampo magnetico, lo spettrometro sara in grado di misurare momento e caricadei muoni provenienti da interazioni di neutrino nel LAr. Data la grandestatistica che l’esperimento e in grado di raccogliere, la sua sensibilita saradominata da errori sistematici. L’informazione aggiunta dagli spettrometrisara di fondamentale importanza al fine di mantenere gli errori sistematiciquanto piu bassi possibile.

Gli spettrometri, con le misure del momento dei muoni, contribuirannoalla misura di scomparsa di νµ e a fornire una misura precisa del flusso deineutrini presso il rivelatore Near, misura cruciale dal punto di vista dellariduzione degli errori sistematici. L’informazione sulla carica dei muoni,invece, sara determinante al fine di distinguere eventi di νµ da eventi diνµ.

1.3.1 Le LAr-TPC

Il rivelatore che si prevede di utilizzare presso il sito Far e il rivelatore T600dell’esperimento ICARUS (fig. 1.6), attualmente in funzione presso la HallB del complesso LNGS (Laboratori Nazionali del Gran Sasso), e che saratrasportato al CERN e posizionato nel sito Far per il nuovo esperimento.Questo rivelatore e composto in realta da due semi-moduli da 300 tonnellatedi dimensioni interne 3, 6(w)×3, 9(h)×19, 6(l) m3 ciascuno. Il rivelatore chesara installato presso il sito Far e piu grande rispetto a quello Near in virtu delfatto che, a causa della maggiore distanza, il fascio di neutrini ha un’aperturamaggiore e quindi deve essere maggiore l’area del rivelatore. Nel sito Nearverra installata una LAr-TPC piu piccola denominata T150 che sara costruitaapposta per l’esperimento e sara all’incirca quattro volte piu piccola rispettoal T600. Il T150 (fig. 1.7) sara composto da una sola unita ed avra stessasezione del T600 (interna 3, 6(w)× 3, 9(h) m2; esterna 3, 9(w)× 4, 2(h) m2)e una lunghezza interna di 11, 8 m (12, 1 m quella esterna).

Nelle LAr-TPC la grande massa di argon liquido ultrapuro (circa 760 tdi cui 476 t attiva nel T600, 200 t di cui 119 t attiva ipotizzata per ilT150) costituisce il bersaglio dell’esperimento. Un sofisticato sistema dielettrodi a filo e fotomoltiplicatori acquisisce elettronicamente le informazioniriguardanti le interazioni di neutrino, ricostruendo le tracce di particelle

18

(a)

(b)

Figura 1.6: (a) Schema del rivelatore ICARUS T600 mostrante struttura internae sistema di isolamento. (b) Sistema delle camere a filo del rivelatore T600. [3]

19

(a)

(b) (c)

Figura 1.7: (a) Schema del rivelatore ICARUS T150 mostrante struttura internae sistema di isolamento. (b) Sistema delle camere a filo del rivelatore T150, (c)visione della sezione trasversale. [3]

20

cariche con un’accuratezza dell’ordine di 1 mm3. Un complesso impian-to criogenico mantiene l’argon al disotto della temperatura di ebollizione(87,3 K) e provvede al ricircolo e alla purificazione dell’argon liquido.

L’idea alla base del funzionamento del rivelatore T600 e la stessa dellecamere TPC a gas, originariamente proposta da Charpak [11]. Le particelleionizzanti rilasciano energia nel mezzo formando coppie elettrone-ione. Suglielettroni formati dagli eventi di ionizzazione e indotto un moto di derivagrazie a un campo elettrico uniforme ed essi vengono raccolti alla fine delloro percorso da elettrodi a filo che individuano una coordinata nel piano xy.Il percorso della traccia nella direzione di drift z e ricostruito combinandol’informazione del tempo assoluto dell’evento di ionizzazione con quella sullavelocita di deriva degli elettroni. Questo permette di ricostruire una immaginetridimensionale della traccia.

Condizione fondamentale per il funzionamento di una LAr-TPC e chegli elettroni prodotti dal passaggio delle particelle cariche debbano viaggiareimperturbati dal punto di produzione ai piani di fili. Questo richiede che leimpurezze elettronegative (perlopiu O2, H2O e CO2) debbano essere tenutea un bassissimo livello di concentrazione. Il drift degli elettroni nell’argonliquido richiede una purezza del mezzo decisamente superiore (meno di 0,1ppb) rispetto alle TPC a gas, questo perche la densita e maggiore di un fattorecirca 1000. Pertanto per le LAr-TPC e necessaria una complessa tecnologiache provvede al ricircolo del liquido e alla sua continua purificazione.

Nel rivelatore T600 (fig. 1.6b) il campo elettrico applicato e di ED =500 V/cm e induce per gli elettroni una velocita di deriva di vD ∼ 1.6 mm/µs.Ognuno dei due semi-moduli ospita due TPC separate da un catodo comune.Ciascuna TPC e formata da tre piani paralleli di fili orientati verso il camminodi drift (1, 5 m) e aventi una distanza di separazione di 3 mm; in ognipiano i fili sono orientati a un angolo di 0, ±60 rispetto all’orizzontale.Globalmente nel rivelatore sono installati 53248 fili di lunghezza fino a 9 m.

Il tempo assoluto dell’evento di ionizzazione e misurato per mezzo difotomoltiplicatori che rivelano la luce di scintillazione prodotta nel LAr dalpassaggio di particelle ionizzanti. Una serie di PMT (Photo Multiplier Tube)e installata dietro ciascuna camera a fili; ciascun PMT e rivestito da wave-length shifter che consente la rivelazione di luce di scintillazione nell’ultra-violetto (λ = 128 nm).

L’elettronica del T600 e costruita in modo da permettere una continualettura, digitalizzazione e registrazione della forma d’onda dei segnali daciascun filo delle TPC. L’architettura di read-out consiste in un preamplifi-catore di front-end sensibile alla carica e a basso rumore; i segnali da ciascunfilo sono digitalizzati indipendentemente ogni 400 ns da un FADC a 10 bit.

21

Questo schema e implementato su una singola scheda analogica in grado digestire 32 canali; i dati sono inviati a una scheda digitale per il buffering.

1.4 Gli spettrometri di NESSiE

I due spettrometri di NESSiE (Near e Far) sono basati sulla stessa concezionedello spettrometro di OPERA [12] (par. 2.2). La principale funzione a cuiessi devono adempiere e quella di ricostruire carica e momento dei muoniprovenienti dal LAr. Questa misura e eseguita determinando la deviazioneche le particelle cariche subiscono a causa di un campo magnetico.

La parte principale dello spettrometro e costituita da un grande magnetein ferro avente una struttura simile a quello di OPERA (Iron-Magnet). Essoospitera nella sua struttura piani di rivelatori RPC. I muoni a basso momentosono misurati da un sistema ausiliario che utilizza un campo magnetico inaria (Air-Magnet).

1.4.1 Gli spettrometri in ferro

Il magnete principale di ciascuno dei due spettrometri e un magnete dipolarecostituito da due pareti verticali a sezione rettangolare e da due gioghi diritorno di flusso posti in cima e alla base (fig. 1.8). Ciascuna parete ecomposta da 21 lastre di ferro spesse 5 cm, separate da 20 intercapedini ingrado di ospitare rivelatori RPC. I due gioghi sono avvolti da una bobina dirame.

Il magnete fondamentalmente sara costruito assemblando lastre di ferroche nel caso dello spettrometro Far sono 5860 mm in altezza, 1246 mm inlarghezza e 50 mm di spessore (per il Near 3515 mm l’altezza, 1246 mm lalarghezza e 50 mm lo spessore). Complessivamente occorreranno 294 lastrenel caso del Far e 210 lastre per il Near.

La costruzione comincera col posizionamento del giogo alla base del ma-gnete. Si procedera quindi all’installazione degli strati di ferro e degli RPCnei due bracci del magnete. L’assemblaggio comincera dai piani piu internidei due bracci e procedera via via verso quelli piu esterni frapponendo trauno strato di ferro e l’altro elementi di rivelatori RPC, i piani di strisce dirame ortogonali e il materiale di isolamento, inserito per prevenire scariche dialta tensione verso le pareti in ferro. Una volta posizionato il giogo superioredel magnete, la struttura sara in grado di auto-sostenersi dal punto di vistameccanico.

Il campo magnetico del magnete sara generato grazie a due bobine avvolteattorno ai gioghi di ritorno di flusso posti alla base e in cima al magnete. La

22

(a)

(b)

Figura 1.8: (a) Viste trasversa e longitudinale del magnete Far. (b) Viste trasversae longitudinale del magnete Near. [3]

forza magnetomotrice necessaria a produrre il campo magnetico nel ferroe fornita da alimentatori DC, posizionati in alto rispetto al magnete. Essisono dei convertitori AC → DC single-quadrant che forniscono una correntemassima di 1700 A e una tensione massima di 20 V .

Il campo magnetico previsto sara circa 1, 5 T dentro il ferro. Il profilo delcampo magnetico e mostrato in figura 1.9. Il campo magnetico in ciascuno deidue bracci del magnete ha direzione verticale e verso opposto. L’andamentoperiodico del campo magnetico rispecchia la struttura interna del magnete, invirtu della diversa permeabilita magnetica tra gli strati di ferro e il materialefrapposto. Il primo gradino in figura 1.9(b), di valore piu basso, e il campomagnetico fornito dal magnete in aria.

23

(a)

(b)

Figura 1.9: (a) Distribuzione di campo magnetico simulata per lo spettrometro.L’asse orizzontale e in metri; la scala dei colori e in tesla. (b) Profilo globaledel campo magnetico (in aria e nel ferro). Lungo l’asse delle ordinate e riportatoil modulo del campo magnetico in tesla, lungo l’asse delle ascisse e riportata lacoordinata lungo il fascio in metri. [3]

24

1.4.2 Gli spettrometri in aria

Per la misura di muoni a basso momento e stato introdotto un sistema cheutilizza un campo magnetico uniforme in aria. Questo sistema ausiliario enecessario perche l’effetto dello scattering multiplo nel ferro limita le perfor-mance del sistema di tracciamento del magnete in ferro.

Il magnete (fig. 1.10) e costruito usando 80 bobine a “pancake” lunghe9 m nella parte dritta, piu due regioni di curvatura semicircolari per il ritornodei conduttori, fuori dalla regione del fascio. Le connessioni e i controllielettrici ed idraulici sono anch’essi fuori dalla regione del fascio.

Il disegno delle bobine e della struttura di sostegno tiene conto, oltre dellespecifiche di campo magnetico, termiche e strutturali, anche della necessitadi avere la minima quantita di materiale nella direzione del fascio. Per questomotivo il materiale che e stato scelto e l’alluminio.

(a) (b)

(c) (d)

Figura 1.10: (a) Struttura a “pancake” dello Air-Magnet. (b) Sezione trasversaledi una bobina dello Air-Magnet. (c) Montaggio delle bobine dello Air-Magnet. (d)Modello 3D del campo magnetico in aria. [3]

25

Ciascun pancake e costituito da due strati di un conduttore cavo dialluminio avvolto in primo luogo dall’esterno verso l’interno, viceversa nelsecondo strato. In questo modo sia l’inizio che la fine di ciascun pancakesono sullo stesso lato e possono essere facilmente connesse elettricamente,lasciando accesso alle connessioni di ingresso e uscita del sistema di raffred-damento ad acqua.

Il sistema dovrebbe garantire una regione magnetizzata in aria profondacirca 30 cm nella direzione del fascio e con un valore di campo magnetico tra0, 1÷ 0, 4 T .

1.4.3 I rivelatori

Il sistema di tracciamento e basato sui rivelatori RPC sviluppati per l’esperi-mento OPERA, con dimensioni di 2904×1128 mm2. Questi RPC opererannoin streamer mode e saranno dotati di lettura digitale. Gli RPC sarannodotati di strisce di lettura in rame mutuamente perpendicolari, in modo daricostruire una informazione bidimensionale nel piano x − y. Tali strisceavranno un passo di 2÷ 3 cm in modo da ottenere una risoluzione di ∼ 1 cme mantenere il numero totale di canali a un valore ragionevole.

I rivelatori saranno disposti nel magnete principale tra uno strato di ferroe l’altro, formando 20 piani sensibili in ciascun braccio del magnete. Nellospettrometro Near gli RPC sono disposti in piani da 3 righe e 2 colonne, peruna superficie totale di circa 20m2; un totale di 40 strati di rivelatori saradotato di 600 camere. Nello spettrometro Far gli RPC sono disposti in pianida 5 righe e 3 colonne, per un’area di circa 50 m2; i 40 piani saranno dotatiin totale di 600 camere RPC.

Ipotizzando una larghezza di strip di 2, 6 cm lungo la direzione verticalee 3, 5 cm lungo la direzione orizzontale, nel rivelatore Far ciascun piano saradotato di 160 strisce orizzontali e 336 strisce verticali, per un totale di circa500 canali di elettronica per piano (circa 20000 in tutto il rivelatore); per ilrivelatore Near, invece, il numero di canali elettronici sara di circa 340 perpiano, 12000 in totale.

Per quanto riguarda i rivelatori degli Air magnets, sono state propostediverse soluzioni tra cui l’utilizzo di drift tubes (come negli High PrecisionTrackers dell’esperimento OPERA), rivelatori RPC con lettura analogica,rivelatori RPC con lettura digitale in avalanche mode. Tra queste possibilitala piu accreditata sembra essere quella degli RPC con lettura analogica. Conquesti rivelatori e possibile raggiungere le performance richieste dall’espe-rimento (risoluzione spaziale dell’ordine di 1 mm) con un costo limitato.Per il fatto che i rivelatori RPC sono usati anche nella sezione in ferro dello

26

spettrometro, questa scelta comporterebbe di avere un solo tipo di rivelatore,con il conseguente risparmio in tempo e costi.

Per la misurazione della carica di particelle a basso momento sono previsti4 piani di RPC posti davanti al campo magnetico in aria e 4 piani posti dopo.La superficie del singolo RPC e di 2, 91× 1, 13 m2; ciascun piano di RPC nelNear (Far) Detector e organizzato in 3 righe e 2 colonne (5 righe e 3 colonne)per un totale di 48 (120) RPC.

Per la parte in aria dello spettrometro la ricostruzione delle tracce erichiesta nel solo piano di curvatura, per cui la lettura analogica e implemen-tata nella sola vista x-z. In aggiunta una lettura digitale sara implementataanche nella vista y-z a un costo limitato. Questa vista aggiuntiva permetteradi ricostruire le tracce nelle tre dimensioni e di rigettare hit spuri dovuti arumore elettronico o a raggi cosmici.

1.4.4 Ricostruzione del momento

Nello spettrometro l’impulso dei muoni viene determinato misurando la de-flessione che le particelle cariche subiscono nell’attraversare il campo magne-tico. Nel sistema di coordinate in cui l’origine e nel punto di interazione,l’asse z punta nella direzione del fascio, l’asse y punta verso l’alto e l’assex e orizzontale, la traiettoria della particella carica entrante nel rivelatoresubisce una deviazione nella direzione dell’asse x, essendo z − x il piano dicurvatura. Carica e momento della particella possono essere dedotte dalsegno e dall’entita di questa deviazione (fig. 1.11).

Il fatto di avere un fascio di energia relativamente bassa, permette dideterminare l’impulso dei muoni mediante misure di range in un ampiointervallo. Le simulazioni hanno mostrato che 2 m di ferro trattengono circail 90% dei muoni in caso di focusing positivo (∼ 85% per focusing negativo).

Per i muoni che riescono ad attraversare il rivelatore (Eµ > 3GeV/c), laricostruzione del momento puo essere eseguita sfruttando la curvatura delletracce nel campo magnetico. Una risoluzione per i rivelatori posti all’internodel magnete di ∼ 1 cm e sufficiente a garantire una risoluzione σp/p chevaria dal 20% a 3 GeV/c fino al 30% a 10 GeV/c. Una tale risoluzione delsistema tracciante puo essere ottenuta usando strisce con passo di 2− 3 cmcon lettura digitale.

Per valori d’impulso dell’ordine di qualche centinaio di MeV/c, il fenomenodel Multiple Coulomb Scattering (MCS) limita la capacita di identificareil segno della carica, in quanto l’effetto del MCS nel ferro e paragonabilealla deviazione da campo magnetico. Per questo motivo momenti inferioria 1 GeV/c sono meglio misurati per mezzo del campo magnetico in aria.In questo caso e sufficiente una ricostruzione delle tracce nel solo piano di

27

Figura 1.11: Scostamento della traiettoria dei muoni nel piano di curvatura infunzione del momento dopo l’attraversamento di una regione di campo magneticoin aria di 30 cm di spessore. Sono presi in considerazione diversi valori di campomagnetico nel range di valori 0, 1 ÷ 0, 4 T . La direzione del muone entrante eperpendicolare ai piani del rivelatore. [3]

curvatura (z-x), con una risoluzione ottimale dell’ordine di 1 mm. Questarisoluzione puo essere ottenuta utilizzando rivelatori RPC con una larghezzadi strip di circa 1 cm e lettura analogica.

La performance globale del sistema di tracciamento puo essere visualizzatadalla charge mis-identification η, definita come la frazione dei muoni la cuicarica non e assegnata correttamente. Questa quantita, nell’approssimazionegaussiana della distribuzione di Moliere, e legata alla risoluzione in momentodalla relazione:

η =1

2erfc

[1√

2(σp/p)

](1.14)

dove erfc e la funzione complementare di errore.

Un grafico di η in funzione del momento per lo spettrometro e riportato infigura 1.12. La mis-identification e piu grande a bassi momenti per l’effettodel MCS; per grandi valori di p essa aumenta a causa della ridotta capacitadi curvatura per particelle ad alto momento.

28

Figura 1.12: Charge mis-identification dei muoni calcolata per diverseconfigurazioni dello Iron Magnet, con un campo magnetico B = 1,5 T. [3]

1.4.5 L’elettronica

I rivelatori Iron-RPC di NESSiE saranno dotati di schede di front-end ingrado di effettuare una lettura digitale dei segnali degli RPC e di inviare idati al sistema di elaborazione. Le front-end board (FEB) dovranno inoltrefornire una marcatura temporale del segnale acquisito con una risoluzione di5÷10 ns. Ogni FEB ospitera 64 canali elettronici. In totale per i circa 32000canali elettronici dell’esperimento saranno prodotte all’incirca 600 front-endboard.

Lo studio e la progettazione della nuova front-end board per l’esperimentoNESSiE e proprio l’argomento di questa tesi. La FEB sara trattata in ampiodettaglio nel capitolo 3.

29

Capitolo 2

Il sistema di RPC di OPERA

La concezione dello spettrometro di NESSiE trae spunto dal know-how dell’e-sperimento OPERA [12] che possiede uno spettrometro per muoni simile aquello che sara in costruito per NESSiE. Del resto i rivelatori RPC utilizzatiin NESSiE saranno in parte recuperati dall’esperimento OPERA, il quale e inprocinto di terminare la fase di presa dati. In questo capitolo vengono trattatiin dettaglio i rivelatori RPC e viene data una descrizione dello spettrometrodi OPERA e della elettronica per suoi rivelatori RPC.

2.1 I rivelatori RPC

I rivelatori RPC (Resistive Plate Chamber) sono un tipo di rivelatore a gas,sviluppato agli inizi degli anni ‘80 da Santonico e Cardarelli [13, 14]. UnRPC (fig. 2.1) e costituito da due elettrodi piani di bakelite che racchiudonoil volume attivo riempito di gas (tipicamente 90% di tetrafluoroetano C2H2F4

e 10% di isobutano i-C4H10). Sulle due facce esterne delle lastre di bakelite esteso uno strato di grafite che fa da elettrodo per l’applicazione della tensionedi polarizzazione. Il campo elettrico presente tra i due elettrodi e uniformee dell’ordine di qualche decina di kV/cm (il sistema e a tutti gli effetti uncondensatore a facce piane e parallele). Il segnale viene prelevato tramitedelle strisce metalliche (strip) poste esternamente alla camera.

Le caratteristiche piu rilevanti di questi rivelatori sono l’eccellente risolu-zione temporale e la possibilita di operare ad alti rate. Anche la risoluzionespaziale e abbastanza buona; ad esempio in particolari condizioni il centroidedel profilo di carica indotta e stato determinato con una risoluzione FWHMdi ∼ 0, 12 mm [15]. Il costo moderato di questi rivelatori li rende unatecnologia molto utilizzata per la costruzione di rivelatori di grande area.

30

Figura 2.1: Rappresentazione schematica di un rivelatore RPC. [18]

2.1.1 Fisica del rivelatore

Come nelle altre tipologie di rivelatori a gas, il fenomeno sfruttato per larivelazione delle particelle e quello della ionizzazione del mezzo da partedelle particelle cariche. Una particella carica che entra nell’area attiva delrivelatore cede parte della sua energia al mezzo gassoso ionizzando alcunemolecole di gas. Le cariche libere (coppia elettrone – ione positivo) formatenel processo di ionizzazione vengono accelerate dal campo elettrico uniformea una energia tale da produrre nuovi fenomeni di ionizzazione (ionizzazionisecondarie). Le cariche prodotte per ionizzazione secondaria danno originea nuovi fenomeni di ionizzazione producendo un effetto a valanga, cioe simoltiplicano creando un flusso di elettroni e di ioni positivi da una piastraall’altra del condensatore [16].

Gli elettroni rispetto agli ioni positivi possiedono una velocita di derivapiu alta tipicamente di un fattore 103, percio si trovano in testa alla valangae formano il cosiddetto “segnale veloce”. La diversa mobilita di elettroni eioni influisce anche sulla forma della valanga che assume una forma tipica “agoccia” (fig. 2.2).

Le cariche prodotte dallo sviluppo della valanga si neutralizzano suglielettrodi producendo una corrente nel circuito esterno ed una variazionelocalizzata, spazialmente e temporalmente, della differenza di tensione ai capidegli elettrodi. L’utilizzo di piani resistivi garantisce la diffusione localizzatadelle cariche cosı da lasciare costantemente inalterate le prestazioni dellaparte restante del rivelatore [17].

A differenza di altri tipi di rivelatore a gas, l’intenso campo elettricouniforme che si instaura tra i due elettrodi molto ravvicinati (distanza tipicadi 2 mm) permette l’istantanea formazione di una valanga, qualunque sia ilpunto del rivelatore in cui e passata la particella ionizzante (senza bisogno

31

Figura 2.2: Sviluppo della valanga in un rivelatore RPC. [17]

di deriva delle cariche primarie prima dell’innesco della valanga). Questogarantisce una migliore risoluzione temporale.

Un elettrone libero nel volume di gas di un RPC tende a muoversi conuna velocita di deriva costante vd verso l’anodo, grazie all’azione combinatadel campo elettrico costante e delle interazioni con gli atomi del gas. Leionizzazioni successive da parte degli elettroni in moto verso l’anodo com-portano una moltiplicazione della carica inizialmente presente, secondo lalegge [17]:

dn = n(α− η)dx (2.1)

dove α e il primo coefficiente di Townsend; il coefficiente η tiene conto delfenomeno di cattura degli elettroni da parte di atomi neutri che da luogo aioni negativi. L’integrazione della equazione 2.1 tra x=0 e x=x’ porta a:

n = n0e(α−η)x′ (2.2)

che comporta una moltiplicazione esponenziale di carica.

Il guadagno di carica G = n/n0 viene a dipendere dalla distanza delcluster di prima ionizzazione dall’anodo. Le valanghe generate in prossimitadell’anodo non hanno spazio per svilupparsi a sufficienza per essere rivelate.Nei piu diffusi RPC a gap di 2 mm solo le valanghe generate dai cluster creatinei primi 200÷ 300 µm vicino al catodo (gap utile di ionizzazione) possonodare origine a un segnale rivelabile, avendo lo spessore restante del gap persvilupparsi (gap utile di moltiplicazione). Al limite in cui la ionizzazioneparte vicino al catodo si ha il guadagno di moltiplicazione massimo di G =e(α−η)d, con d lo spessore del gap. Con il processo di moltiplicazione a valangageneralmente si arriva fino alla produzione di ∼ 107 elettroni. Se questonumero diventa dell’ordine di 108 si puo avere la degenerazione in fenomenidi streamer o breakdown.

32

Il moto delle cariche libere nella gap genera una corrente data da [17]:

I−(t) =en0vd−d

e(α−η)vd−t 0 ≤ t ≤ T− (2.3)

I+(t) =en0vd+d

α

α− η(e(α−η)d − e(α−η)vd+t) T− ≤ t ≤ T+ (2.4)

dove I− e la corrente dovuta agli elettroni che arrivano sull’anodo; I+ ela corrente dovuta agli ioni positivi sul catodo, vd− e vd+ rappresentanorispettivamente la velocita di deriva degli elettroni e degli ioni positivi; T− =d/vd− e T+ = d/vd+ sono i tempi massimi di transito di elettroni e ionirispettivamente. Se si considerano gli effetti di carica spaziale, situazione piusimile al caso reale le equazioni 2.3 e 2.4 si complicano ulteriormente.

2.1.2 Modello elettronico

Il funzionamento di una camera RPC e basato sul principio di scarica locale,ossia sul fatto che la carica generata nella valanga, una volta arrivata all’elet-trodo, a causa del suo carattere resistivo, non si disperde sulla intera super-ficie, ma lo attraversa fino a raggiungere lo strato di grafite [17]. Il rivelatorepuo essere pensato come una matrice di celle di rivelazione indipendenti traloro; l’estensione superficiale S di tali celle e proporzionale alla carica totaleQ liberata nel gas e allo spessore d della gap.

La singola cella puo essere descritta dal modello elettronico in fig. 2.3 [18].La corrente di ionizzazione e trattata come un generatore di corrente i′(t);la strip di lettura, a causa della sua lunghezza, viene trattata come unalinea di trasmissione terminata ad entrambe le estremita sulla sua impedenzacaratteristica R0 (da un lato –back-end– la terminazione verso massa e pas-siva, mentre dal lato di lettura –front-end– la terminazione e l’ingresso delcircuito di amplificazione e discriminazione). I condensatori Cg = ε0S/d eCb = ε0εrS/s sono rispettivamente le capacita del gap di gas e della bakelite (de s sono gli spessori rispettivamente della gap e della bakelite, εr e la costantedielettrica relativa della bakelite); Ca e Cc sono capacita di accoppiamentoparassite. Le resistenze Rb, Rs e Rc sono rispettivamente la resistenza dellabakelite (Rb = ρs/S), la resistenza superficiale della bakelite e la resistenzadello strato di grafite.

Il movimento delle cariche nella gap gassosa induce un segnale sullestrip di campionamento esterne. La componente veloce di questa corrente,che costituisce il segnale utile, e dovuta al moto di deriva degli elettroni.L’intensita della corrente indotta puo essere dedotta col metodo del weightingfield. Essa e proporzionale alla corrente di ionizzazione della gap secondo la

33

Figura 2.3: Modello elettronico di un rivelatore RPC. [18]

formula:

i(t) = kQ(x)vdd

(2.5)

dove la costante di proporzionalita k e legata alla geometria della cella ed edata da [18]:

k =Cb

Cb + Cg=

εrds

εrds

+ 2(2.6)

Dopo il passaggio di una particella ionizzante, la corrente nella gap digas scarica il condensatore Cg e la differenza di potenziale e spostata su Cb.Il campo elettrico esterno e temporaneamente spento. Il tempo necessarioaffinche l’area del rivelatore interessata dalla valanga S ritorni operativa edato da:

τ = Rb(Cg + 2Cb) = ρε0(εr + 2s

d) (2.7)

Inserendo il valore della resistivita della bakelite e considerando s/d ∼ 1si trova che il tempo τ e dell’ordine della decina di ms.

34

2.1.3 Regimi di funzionamento

I rivelatori RPC possono operare in due regimi di funzionamento differenti:a scintilla (streamer) o a valanga (avalanche). I primi RPC utilizzavano ilregime a scintilla in quanto il segnale fornito dalla carica indotta era piuampio di un fattore 10÷ 20 rispetto al regime a valanga [16]. Questo mododi funzionamento e caratterizzato dalla presenza localizzata di gas allo statodi plasma. Il fenomeno si manifesta quando il numero di elettroni nellavalanga raggiunge un valore critico dell’ordine di 108 (limite di Raether),per cui il campo elettrico generato dalla densita di carica spaziale diventaconfrontabile con il campo elettrico esterno e influisce sul processo di sviluppodella valanga.

Il funzionamento in regime streamer possiede tuttavia dei problemi, tracui soprattutto un basso limite per il rate di eventi osservabili (∼ 10Hz/cm2),inferiore ai tipici 150 Hz/cm2 della modalita a valanga. Il funzionamento inregime avalanche garantisce inoltre una maggiore longevita dei rivelatori euna minore dissipazione di potenza, data la minor corrente che attraversa ilrivelatore. Con il funzionamento in regime a valanga si rende pero necessariol’utilizzo di uno stadio di ampilficazione nell’elettronica di front-end, edinoltre risulta piu difficile la separazione fra segnale e rumore di fondo [17].

2.1.4 Gli RPC di OPERA

Il sistema degli RPC di OPERA e costituito da circa 1000 camere per unasuperficie totale di 3000 m2. I rivelatori usati sono degli RPC a singolo gapoperanti in streamer mode. I due elettrodi piani sono in bakelite e formanoun gap di gas di 2 mm. Essi sono trattati all’esterno con una vernice digrafite avente resistivita superficiale di circa 100 kΩ/2. La forma di questiRPC e rettangolare, con dimensioni 2904 mm di larghezza e 1128 mm inaltezza. Al fine di assicurare l’uniformita del campo elettrico, una griglia dispaziatori e inserita nel gap di gas, con una spaziatura di 10 cm.

Ciascun RPC opera con una miscela di gas composta da Ar/C2H2F4//I-C4H10/SF6 nei rapporti di volume 75, 4/20, 0/4, 0/0, 6 [19]. Nei rivelatoriil gas viene fatto fluire a un ritmo di cinque ricambi completi al giorno, conun sistema di tipo open flow. Con la miscela di gas suddetta i rivelatori RPCvengono fatti funzionare con una tensione di 5, 8 kV e una corrente inferiore a100 nA/m2. L’alta tensione e divisa simmetricamente tra l’elettrodo positivoe l’elettrodo negativo in modo da facilitare l’isolamento dal ground.

Le strip di lettura sono poste su entrambi i lati delle camere RPC indirezioni perpendicolari tra loro. Il segnale prelevato sulle strip poste incorrispondeza dell’anodo e negativo; il segnale delle strip in corrispondenza

35

del catodo e positivo. Un tipico segnale di questi rivelatori ha ampiezza diqualche centinaio di mV e durata di qualche decina di ns. La figura 2.4mostra un segnale di RPC proveniente da un test di laboratorio effettuatosugli RPC di OPERA.

Figura 2.4: Segnale di un rivelatori RPC di OPERA alimentato a 8200 V lettodalle strip negative.

2.2 Lo spettrometro di OPERA

L’esperimento OPERA [20] e un esperimento di long-baseline sulla fisicadel neutrino, attualmente operativo presso i laboratori sotterranei del GranSasso (LNGS). Scopo dell’esperimento e quello di fornire dirette osservazionidi apparizione di ντ dalle oscillazioni νµ ↔ ντ nel fascio di neutrini CNGS(CERN Neutrino to Gran Sasso).

Il disegno del rivelatore e basato su un bersaglio di piombo massivo/emul-sione nucleare (ECC) complementato da scintillatori plastici che consentonola localizzazione dell’evento e pilotano la scansione delle emulsioni.

Il bersaglio e seguito da uno spettrometro magnetico basato sull’utilizzoa larga scala di rivelatori RPC come tracciatori. Esso ha la funzione diriconoscere la carica del muone per mezzo del campo magnetico e di ricostruireall’indietro il punto di interazione del νµ nel bersaglio. Grazie alle otti-me caratteristiche temporali, gli RPC consentono di generare un segnale di

36

prompt per l’elettronica dei drift tubes (DT), i quali rivelatori garantisconouna ricostruzione delle tracce con grande accuratezza.

Lo spettrometro (fig. 2.5) e costituito da un magnete dipolare che ga-rantisce un campo magnetico di 1, 55 T dentro il magnete. Quest’ultimoe fatto da due pareti in ferro intervallate da tracciatori ad alta risoluzioneche consistono in drift tubes verticali posizionati prima, in mezzo e dopo ilmagnete. Ciascuna parete e fatta da 12 strati di ferro spessi 5 cm. Essi sonoseparati da intercapedini larghe 2 cm dove sono inseriti i rivelatori RPC. Ilferro e magnetizzato da una corrente di circa 1200 A che circola in bobinedi rame poste nella parte superiore e inferiore del magnete. Le dimensionitrasverse dell’area utile del magnete sono 8 m in altezza e 8, 7 m in larghezza.

Il bersaglio, con la relativa strumentazione, e lo spettrometro costituisconoun “supermodulo”. L’esperimento OPERA e fatto da due supermoduli ospi-tati nella Hall C del LNGS.

I rivelatori RPC utilizzati hanno un gap di gas di 2 mm e operanoin streamer mode. I segnali indotti sono prelevati per mezzo di strisce dirame posizionate su entrambi i lati dei piani RPC. Le strisce corrono in duedirezioni perpendicolari in modo da fornire una informazione bidimensionale.Esse hanno un passo di 26 mm e sono lunghe 8 m per la direzione verticale;hanno un passo di 35 mm e lunghezza di 8, 7 m nella direzione orizzontale.

(a) (b)

Figura 2.5: (a) Layout dello spettrometro di OPERA. (b) Layout degli RPC diOPERA. [20]

37

La carica indotta e dell’ordine di 100 pC e l’impulso ha un tempo di salitadi qualche ns.

I segnali dalle strip sono raccolti per mezzo di speciali schede chiamateInterconnection Boards (IB) e inviati alle schede di front-end (FEB) tramitecavi twisted-pairs (fig. 2.6). Le IB, oltre a far combaciare la modularita deicavi con il passo delle strip, sono anche utilizzate per connettere la massadelle strip con il ground comune dello spettrometro. Sulle estremita lontanedelle strip sono piazzate resistenze da 26 Ω per garantire l’adattamento diimpedenza e quindi evitare la riflessione del segnale.

Ciascun piano di RPC copre una superficie di 70 m2. Undici piani di RPCsono ospitati in ciascun braccio dello spettrometro, 44 per l’intero apparato.In totale l’area coperta dai rivelatori RPC e di 3000 m2, per un numero totaledi canali pari a 25000.

Figura 2.6: Una Interconnection Board. [21]

2.3 Elettronica degli RPC di OPERA

L’elettronica di read-out degli RPC di OPERA [21] consiste in tre stadiseparati: il sistema delle Front End Board (FEB), il sistema delle ControllerBoard (CB) e il sistema delle Trigger Board (TB). Le schede di elettronicasono ospitate in 26 crate EUROCARD 6U, ciascuno dei quali puo contenere19 schede.

Le FEB hanno la funzione di discriminare e formare i segnali dalle stripe di generare un segnale di fast-OR usato per triggerare l’acquisizione di unpiano. L’acquisizione di un piano e gestita dalle CB, le quali provvedonoanche ad impostare i parametri di funzionamento delle FEB (soglie, polaritadei segnali in ingresso, tempo di shaping, maschere di ingresso) tramite unaconnessione seriale con le FEB e a comunicare i dati acquisiti, assieme altempo dell’evento, al DAQ dell’esperimento. Nove FEB e una CB sonousate per leggere il singolo piano. Infine le TB permettono di introdurreuna correlazione tra i segnali entro ciascun braccio dello spettrometro.

38

Figura 2.7: Schema a blocchi di una Front End Board degli RPC di OPERA. [21]

2.3.1 La Front-End Board

Lo schema dell’elettronica della Fron End Board di OPERA, disegnato permemorizzare al massimo un singolo evento per burst, e mostrato in figura 2.7.Ogni FEB raccoglie i segnali da 64 strip e fornisce discriminazione e shapinge produce una uscita fast-OR che contribuisce alla costruzione del segnale difast-OR di piano. Lo stadio di ingresso utilizza ricevitori LVDS usati comecomparatori. Questi dispositivi, in grado di accogliere segnali differenziali edotati di un elevato rapporto di reiezione del modo comune, consentono unabuona discriminazione dei segnali trasmessi per mezzo cavi twisted-pairs.

I segnali in ingresso, dopo la discriminazione e il mascheramento, seguonodue percorsi differenti. Nel primo percorso i segnali sono formati a 300 ns,messi in OR e inviati alla CB per generare il segnale di trigger di piano (Planefast-OR); nel secondo percorso i segnali sono formati a 2 µs per consentirela generazione del segnale di LOAD nella CB. Quando viene ricevuto unsegnale LOAD dalla CB, i segnali formati a 2 µs sono memorizzati in unoshift register a 64 bit con ingresso parallelo e uscita seriale e sono letti dallaCB.

Lo Slow Control consente di impostare le condizioni di lavoro della FEB.Esso consente di impostare soglie e polarita dei segnali in ingresso per ciascungruppo di 32 canali; una maschera di input a 64 bit permette di escludere icanali rumorosi; una sequenza di test consente di verificare il collegamento

39

Figura 2.8: Schema a blocchi del sistema di readout degli RPC di OPERA. [20]

FEB-CB. I comandi di Slow Control sono inviati dalla CB alla FEB permezzo della stessa connessione seriale usata la lettura dei dati.

2.3.2 La Contoller Board

Le Controller Board costituiscono l’interfaccia tra il sistema delle FEB e ilDAQ dello spettrometro. Il diagramma a blocchi di una CB e mostrato infigura 2.8.

Ciascuna CB e in grado di leggere i segnali digitali immagazzinati neglishift register delle FEB e di gestire i segnali di Slow Control verso di esse.Essa inoltre riceve in ingresso nove segnali di fast-OR dalle FEB e general’output di fast-OR di piano, usato per scopi di trigger. La CB ospitauna scheda figlia detta “mezzanino” che fornisce il time stamp dell’eventoe permette di comunicare col DAQ tramite la connessione ethernet.

Le CB possono operare in due modalita: auto-trigger e external trigger.Nella modalita auto-trigger un singolo fast-OR fa partire l’acquisizione dell’in-tero piano; quando la CB e in modalita di external-trigger, invece, l’acqui-sizione parte all’occorrenza di un trigger esterno, ossia quando le condizioni

40

selezionate di trigger tra i vari piani RPC sono soddisfatte. Il segnale ditrigger e contato e ne viene fatto un time stamp dal mezzanino.

Quando le condizioni di trigger sono soddisfatte, la CB abilita un segnaledi BUSY per indicare che la procedura di acquisizione e in corso e inviaun segnale comune di LOAD alle FEB. Il segnale di LOAD e seguito daun treno di 64 colpi di clock alla frequenza di 10 MHz per eseguire lalettura degli shift register a 64 bit d ciascuna FEB (l’acquisizione dei singolishift register e seriale, mentre tutte le FEB sono lette in parallelo). LaCB impiega circa 8 µs per completare l’acquisizione di un piano di RPC;questo garantisce una velocita massima di acquisizione di circa 100 MHz perpiano. L’informazione dagli shift register e elaborata con un algoritmo dizero-suppression e organizzata in parole da 20 bit, prima di essere inviata almezzanino.

In seguito a un trigger il segnale di LOAD e trasmesso alle FEB solo seBUSY e disabilitato, questo per evitare l’accavallamento tra l’acquisizionee la trasmissione dei dati. I segnali di fast-OR di piano e di trigger chearrivano durante il processo di acquisizione sono contati e caratterizzatitemporalmente al fine di valutare l’efficienza di trigger e di identificare itrigger persi.

Il mezzanino esegue una semplice formattazione dei dati, aggiungendoil time stamp dell’evento. La misura precisa (10 ns) del tempo dell’eventoe ottenuta per mezzo del sistema GPS (Global Position System) attraversoil clock PPS (Pulse Per Second). L’informazione dell’evento e trasmessaal sistema DAQ attraverso un protocollo Ethernet. Il mezzanino consenteinoltre di impostare i parametri dello Slow Control all’inizio del run. Unainterfaccia seriale indipendente consente la gestione della CB per scopi ditest.

2.3.3 La Trigger Board

La Trigger Board e stata sviluppata al fine di minimizzare l’effetto dellesezioni rumorose dell’apparato imponendo condizioni di trigger speciali tragli 11 piani dello spettrometro e un segnale esterno proveniente da altririvelatori. Ogni TB gestisce l’acquisizione di un intero braccio dello spet-trometro. Il trigger generato viene distribuito solo alle CB che interessatedalle condizioni di trigger, in modo tale che l’acquisizione dei dati comincisolo sui piani dove e capitato un segnale di Plane OR.

La TB permette di selezionare 8 condizioni di trigger differenti tra i 16canali di input (11 dagli RPC e 5 provenienti da altri rivelatori). Essa ein grado di rispondere ad ogni configurazione in ingresso entro 175 ns, ben

41

al disotto i 300 ns del segnale LOAD generato dalla CB. L’elaborazione deisegnali di trigger e implementata per mezzo di LUT (Look Up Table).

Una scheda “mezzanino” costituisce l’interfaccia col DAQ ed e usata perimpostare le condizioni dei canali in input (AND, FIXED PLANE, NOT,ENABLE) e il livello di maggioranza. Il mezzanino consente inoltre l’acqui-sizione delle condizioni di trigger, il tempo di trigger e il trigger pattern, ossiai piani dello spettrometro che concorrono al trigger.

42

Capitolo 3

La front-end board di NESSiE

Questo capitolo trattera in dettaglio la scheda di front-end per i rivelatori IronRPC dell’esperimento NESSiE. La trattazione comincera con la descrizionedelle specifiche per la scheda per poi proseguire con il resoconto delle varie fasidel progetto della scheda. Infine verra data una descrizione dei componentielettronici principali presenti sulla scheda e delle loro funzionalita.

Nel lavoro di tesi mi sono occupato da vicino del progetto della front-endboard di NESSiE in tutte le sue fasi, in particolare per quanto riguarda laprogrammazione del firmware della FPGA.

3.1 Il DAQ di NESSiE

Nell’esperimento NESSiE il sistema di acquisizione dei dati per ciascun rive-latore sara costituito dalle Front-End Board (FEB), dalle Controller-TriggerBoard (CTB) e dallo Event Builder. Il sistema di Data Acquisition (DAQ)e costruito come una rete Ethernet i cui nodi sono le Front End Board,le quali sono provviste di un controller Ethernet (fig. 3.1). Le FEB sonostate progettate per discriminare i segnali provenienti dai rivelatori RPC,memorizzarli e fornire per essi un time stamp. Le FEB inoltre fornisconoin uscita un segnale di fast-OR, il quale e messo alto per una durata fissaquando almeno uno dei canali in ingresso e attivo e viene usato dal DAQ perscopi di trigger (tramite le CTB). La rete Ethernet e usata per raccogliere idati dalle FEB ed inviare alle FEB i comandi di configurazione, monitoraggioe slow control [1].

Il DAQ agisce in modo sincrono con il ciclo dell’acceleratore SPS (fig. 3.2).Per ogni ciclo macchina sono previsti due spill da 10 µs ciascuno intervallatida un tempo di circa 50 ms e seguiti da una pausa di circa 6 s. Immediata-mente prima del primo spill il DAQ invia a tutte le FEB un segnale di Beam

43

Figura 3.1: Schema semplificato del sistema di data acquisition di NESSiE (peril Far detector).

Warning al fine di preparare le FEB alla scrittura dei dati. I dati relativi aidue spill vengono acquisiti durante le due finestre da 10 µs ed inviati dalleFEB al sistema di elaborazione durante il periodo di inter-spill. Il periodo diinter-spill e utilizzato anche per l’acquisizione di raggi cosmici.

Figura 3.2: Ciclo di spill dell’esperimento NESSiE.

44

Complessivamente il sistema del DAQ sara costituito da 600 FEB, ripar-tite come 360 per lo spettrometro Far e 240 per lo spettrometro Near. NelNear detector ogni piano di rivelatori e acquisito da 6 FEB; nel Far detectorogni piano di rivelatori e acquisito da 9 FEB. Le FEB saranno ospitate incrate ognuno dei quali conterra 18 FEB e una CTB. In totale si avranno 20crate per il rivelatore Far e 14 crate per il rivelatore Near.

3.2 Specifiche della FEB

Il progetto della scheda di front-end per i rivelatori RPC risponde alle richiesteda parte del DAQ di NESSiE [22]. Esso segue lo schema a blocchi difigura 3.3.

Figura 3.3: Schema a blocchi della FEB.

La singola FEB legge 64 segnali elettronici da rivelatori RPC ed e in gradodi gestire sia segnali negativi che segnali positivi. Il segnale dai rivelatori RPCe discriminato per mezzo di ricevitori LVDS (4 chip 75LVDS386, ognuno deiquali riceve 16 segnali) che agiscono come discriminatori e di qui inviati aduna FPGA. Le soglie per i discriminatori sono impostate mediante due DACa 10 bit della serie DAC5652. Essi consentono di impostare separatamentele soglie per i 4 chip LVDS (ogni chip DAC5652 contiene due DAC fisici).I valori delle soglie sono letti per mezzo un ADC a 10 bit e a 4 canali

45

(ADC104S051). Poiche i segnali provenienti dai rivelatori RPC avrannoampiezza di 100÷ 200 mV , tipici valori di soglia saranno tra 50÷ 70 mV .

I segnali una volta discriminati sono memorizzati in un buffer circolare,implementato su una FPGA (Field Programmable Gate Array). Oltre afornire la funzionalita di buffer circolare, la FPGA deve implementare iltime-stamp, il fast-OR con la possibilita di mascheramento dei canali ru-morosi, l’interfaccia Ethernet.

La scrittura nel buffer avviene in modo continuo con un clock da 10 ns(prodotto localmente sulla FEB). La scrittura sul buffer e abilitata dallaDAQ e parte e si ferma con un segnale di START WRITE BUF (HIGH) /STOP WRITE BUF (LOW). Il segnale e distribuito a tutte le schede FEBattraverso il modulo di trigger. Durante lo stop, il DAQ puo avviare lalettura. Un segnale di ABORT puo interrompere le operazioni di scrittura epredisporre la FEB per un nuovo ciclo.

La FEB genera due segnali di fast-OR organizzati a gruppi di 32 canali.I segnali di OR sono inviati sul backplane del crate in modo da essere residisponibili a una scheda di trigger in grado di formare un OR di piano e disvolgere le funzioni di trigger supervisor.

La lettura della scheda di front-end avviene tramite interfaccia Fast Ether-net 100BASE-TX con protocollo UDP. I parametri della FEB come soglie,maschere, ecc. possono anch’essi essere impostati tramite l’interfaccia Ether-net. E stata prevista, inoltre, la possibilita di aggiornare il firmware dellaFPGA mediante Ethernet. La comunicazione sulla Ethernet e mediata dalchip DP83848C PHYTER che gestisce il Physical Layer, ossia provvede allaricezione e trasmissione dei segnali sul mezzo fisico (il cavo ethernet); il livellodi protocollo e gestito internamente alla FPGA. La FPGA comunica conil PHYceiver tramite una interfaccia RMII (Reduced Media IndependentInterface). FPGA e PHYceiver sono serviti da un clock a 50 MHz generatoda un oscillatore al quarzo (tale frequenza e raddoppiata all’interno dellaFPGA).

3.2.1 Il formato della scheda

La FEB ha un fattore di forma VME, compatibile con il crate EUROCARD6U utilizzato nell’esperimento OPERA (e che si prevede di riutilizzare inNESSiE).

Il bus VME o VMEbus [23] e un bus standard per computer utilizzatoampiamente in applicazioni di informatica ed ingegneria. VME e acronimodi VERSABUS Module Eurocard. Il bus VME e dotato di due connettoriseparati, generalmente indicati con P1 e P2, entrambi dotati di 3 linee da 32pin. Questo tipo di connettore e denominato come DIN 41612 (fig. 3.5(a)).

46

Figura 3.4: Crate EUROCARD 6U (vista frontale). [25]

(a) (b)

Figura 3.5: (a) Schema del connettore DIN41612. [26] (b) Dimensioni fisiche delleschede VME. [27]

47

Il bus VME e basato sullo standard Eurocard. Eurocard [24] e un formatostandard europeo per circuiti stampati, spesso anche detto “scheda formatoEuropa”. Schede Eurocard possono essere interconnesse in una strutturastandardizzata chiamata subrack. Il subrack consiste in una serie di guide,posizionate in alto ed in basso, nei quali le schede possono scivolare e possanostare in verticale, come libri su uno scaffale. Sul retro di ciascuna schedasi trovano uno o piu connettori, i quali a loro volta si inseriscono in unconnettore fissato su una scheda (noto anche come “Backplane”) che costi-tuisce il retro del cassetto subrack.

I subrack e le schede hanno dimensioni standardizzate sia in orizzontaleche in verticale. L’altezza e specificata mediante l’unita ’U’, dove 1U equivalea 1,75 pollici (44,45 mm). La larghezza e specificata dall’unita ’HP’, dove1 HP equivale a 0,20 pollici (5,08 mm). ‘U’ sta per “Unit”, unita e ‘HP’per “Horizontal Pitch”, ossia passo orizzontale. Le schede Eurocard vengonoprodotte con profondita modulari, partendo da 100 mm e quindi aumentandoa passi di 60 mm. Le dimensioni della FEB, vincolate da quelle del crate,sono di 233 mm in altezza e 160 mm in profondita.

3.2.2 Segnali di ingresso e uscita alla FEB

I segnali di ingresso e di uscita alla FEB (fig. 3.6) sono di seguito elencati:

• 64 inputs dai rivelatori RPC (positivi e negativi). I segnali raccoltidalle strip dei rivelatori RPC sono inviati tramite cavi twisted pairssul backplane del crate e di qui alle FEB. Anche se la FEB lavoreracon segnali single-ended (una delle due polarita sara collegata con lamassa), essa, per come e costruito lo stadio di ingresso, puo anchegestire segnali bipolari.

• Segnale di WRITE BUF: esso abilita la scrittura dei dati sul buffercircolare.

• clock esterno (cycle): questo segnale e mandato dalla DAQ alla FEBcon una periodo di 0,6 sec. Esso serve al fine della marcatura temporaledel segnale in ingresso.

• Segnale di ABORT: permette di terminare qualsiasi processo e portarela FEB ad essere pronta per un nuovo ciclo di acquisizione.

• Segnali di fast-OR: la FEB genera un segnale di OR a gruppi di 32canali.

48

• Segnale PULSE: segnale di diagnostica che puo essere inviato dal DAQper verificare il corretto funzionamento della FEB. Esso simula unsegnale di RPC inviato su tutti i canali.

• segnali switch (SW[11:0]): questi segnali sono usati per impostare unMAC address Ethernet unico per ogni FEB, basato sulla localizzazionegeografica (crate, posizione). Dei 12 bit che compongono questo bus,6 identificano il crate e saranno impostati manualmente mediante DIPswitch montati sul backplane; gli altri 6 bit saranno impostati elet-tronicamente mediante il backplane e identificheranno univocamenteognuna delle 19 schede montate sul crate.

• Interfaccia Ethernet: l’interfaccia Fast Ethernet 100BASE-TX con pro-tocollo UDP e utilizzata per la trasmissione dei dati al DAQ e laricezione di segnali di controllo. La connessione ethernet avviene me-diante un connettore di tipo RJ-45 posto sulla facciata anteriore dellascheda.

Infine, sulla parte anteriore della FEB sono presenti dei LED ad indicare lostato della FEB.

Figura 3.6: Schema della FEB indicante i segnali in ingresso e in uscita.

49

3.2.3 Il time stamp

L’implementazione del time-stamp e una tra le questioni piu critiche delprogetto della FEB. A tal proposito sono stati ipotizzati tre diversi scenaridal grado crescente di complessita [22].

1. Nessun time stamp e prodotto dalla FEB.Il segnale di START WRITE BUF / STOP WRITE BUF viene mar-cato temporalmente esternamente alla FEB. La FEB conta il numero diSTART WRITE BUF / STOP WRITE BUF in modo da associare ilcontenuto del buffer ad un particolare ciclo. Il suo valore e memorizzatoin un registro R/W. Il segnale di START WRITE BUF sincronizza lafase del clock interno. La marca temporale del segnale in ingresso allaFEB e data dalla sua posizione all’interno del buffer circolare in quantola scrittura nel buffer e sincrona con il clock interno. Questo sistema edi facile implementazione e di facile utilizzo in un setup di laboratorioin quanto per acquisire la scheda e sufficiente generare il segnale diSTART/STOP WRITE BUF e permette di studiare il funzionamentodel buffer circolare.

2. Semplice time stamp prodotto dalla FEB.La marcatura temporale del segnale di ingresso e fatta nella FEB attra-verso due contatori: il primo e un contatore fine che conta un segnale diclock 100 MHz prodotto localmente sulla FEB, il secondo e un contatorepiu grossolano che conta un segnale di clock esterno (cycle) mandatodalla DAQ alla FEB con una periodo di 0,6 sec. Quando arriva unsegnale di STOP WRITE BUF il valore di questi due contatori vengonomemorizzati all’interno di due registi e poi mandati alla DAQ insieme alcontenuto del buffer circolare alla fine del ciclo di lettura. Il contatoredel clock a 100 MHz viene azzerato ad ogni inizio ciclo.

Una soluzione simile e stata adottata nell’esperimento OPERA (fig.3.7). Nel caso di NESSiE il segnale di trigger riportato in figura 3.7sarebbe il segnale STOP WRITE BUF.

3. White Rabbit.La terza soluzione prevede l’utilizzo del protocollo White Rabbit (WR),protocollo di nuova generazione che si sta sviluppando al CERN. IlWR [29] e un protocollo basato su Ethernet che combina il protocolloIEEE 1588, anche noto come Precision Time Protocol (PTP), con ilSynchronous Ethernet (SyncE). Il PTP e un protocollo che usa messaggiche trasportano precise informazioni di timing; il SyncE fornisce unmeccanismo per trasferire una frequenza per mezzo della connessione

50

Figura 3.7: Schema del sistema di marcatura temporale di OPERA [28]

Ethernet. Il nuovo protocollo WR, secondo recenti test, sarebbe ingrado di fornire un timing con precisione inferiore al nanosecondo.

Utilizzando il protocollo White Rabbit e possibile marcare temporal-mente i segnali di ingresso alla FEB utilizzando un sistema di contatorisimili a quelli descritti al punto 2).

Tra le tre possibilita proposte e stata scelta la seconda, considerata la piufattibile. E stato scelto, almeno per il momento, di accantonare l’utilizzo delprotocollo White Rabbit, essendo questa tecnologia non ancora ben affermata.

Per maggiori dettagli sull’implementazione del time-stamp si rimanda alparagrafo 4.3.6.

3.2.4 Differenze con la FEB di OPERA

Il modo di operare della nuova FEB si distingue da quello della vecchia FEBdella elettronica di OPERA. Nel caso dell’elettronica di OPERA, l’acqui-sizione dei dati dalle FEB avveniva solo quando venivano soddisfatte dellecondizioni di trigger, il quale era elaborato da una Trigger Board sulla basedei segnali di fast-OR di piano (si veda il par. 2.3). La lettura dei dati dalleFEB era comandata da una Controller Board collegata alle FEB tramiteconnessioni seriali. Essa utilizzava un algoritmo di zero-suppression perridurre il volume dei dati da inviare al DAQ tramite connessione Ethernet.

Occorre osservare che nel caso dell’esperimento OPERA il rate di eventoe molto piu basso rispetto a quello atteso per NESSiE, sia per la minore lumi-nosita del fascio di neutrini e la maggiore distanza del rivelatore (∼ 800 km),ma anche per il fatto che le interazioni da radiazione cosmica sono notevol-mente ridotte a causa dell’ubicazione sotterranea dell’esperimento. Questifattori fanno sı che i dati relativi al singolo evento possano essere acquisiti

51

dal DAQ nel tempo che intercorre tra due eventi successivi senza una rilevanteperdita di eventi.

Quanto appena detto per l’elettronica di OPERA non vale per l’esperi-mento NESSiE, in cui il rate atteso nello spettrometro e di diverse decine dieventi per spill nel rivelatore Near e di alcuni eventi nel Far. A causa dell’altorate di eventi le FEB opereranno in modalita trigger-less, in cui l’uscita deidiscriminatori viene campionata e memorizzata in un buffer circolare pertutta la durata di una gate di spill esterna, la quale dovrebbe includerecompletamente il beam spill. La modalita trigger viene usata solo durantel’acquisizione di raggi cosmici, in cui la scrittura dei dati sul buffer circolareavviene mediante una fake gate generata a livello della scheda di trigger. Inquesto caso non e rilevante la perdita di eventi durante la lettura delle FEB.

Altra differenza rispetto alla elettronica di OPERA e che in NESSiE non eprevista zero-suppression sui dati a livello di FEB. Alla base di questa sceltac’e la considerazione che, dato l’alto rate di eventi e il fatto che ogni eventoe distribuito in una finestra temporale di ∼ 50 ns a causa della lunghezzadelle strip di lettura (8 ÷ 9 m), la zero-suppression non comporterebbe unrilevante guadagno in termini di lunghezza dei dati da trasmettere, in quantoquesta scelta significherebbe associare ad ogni hit una marcatura temporale,la quale ha una dimensione di 64 bit. Trasmettere tutti i dati in blocco,invece, rende necessari solo due time-stamp, ossia quelli di inizio e fine spill.Assumendo il caso peggiore, ossia il dover trasmettere il contenuto dellamemoria del buffer circolare per intero, la trasmissione di ∼32KB di dati perscheda (64 channels × 4kb) su una connessione Fast Ethernet da 100 Mbpsimpiegherebbe un tempo di circa 1, 2 ms× ∼ 300 FEBs.

3.3 Il progetto della FEB

Si descriveranno nel seguito le varie fasi del progetto della front-end board,di cui mi sono occupato.

Nella fase preliminare della progettazione ci si e occupati dello stadio diingresso dei segnali della FEB. In questa fase sono state eseguite delle misuredi laboratorio sui ricevitori LVDS per verificare il funzionamento di questidispositivi come discriminatori (par. 5.1).

Dopo che sono state ben delineate le specifiche della FEB, si e cominciatocon il definire i componenti principali della FEB (FPGA, DAC, ADC, ecc.).Al progetto della FPGA, componente centrale nel progetto della FEB, ededicato l’intero capitolo 4 di questa tesi.

Una volta definito il pin-out della FPGA si e proceduto con il disegnare loschematico della scheda. Lo schematico mostra tutti i componenti elettronici

52

Figura 3.8: Disegno del circuito stampato per la FEB di NESSiE.

53

(comprese resistenze, condensatori, ecc.) presenti sulla scheda e le lorointerconnessioni. La fase successiva e quella del disegno del layout dellascheda, ossia la progettazione del circuito stampato (PCB), di cui e mostratouno schema in figura 3.8. La realizzazione della PCB e stata affidata ad unaditta esterna.

Una volta disponibili la PCB e tutti i componenti si procedera all’assem-blaggio della scheda. Sul prototipo della scheda sono stati eseguiti test inlaboratorio sulla parte di discriminazione del segnale, mentre non essendoancora disponibile la scheda si e proceduto alla simulazione per la FPGA.

3.4 Discriminatori LVDS

Per quanto riguarda lo stadio di ingresso dei segnali degli RPC, poiche ilsegnale degli RPC (fig. 2.4) e sufficientemente ampio (> 100 mV ) e solo

Figura 3.9: Esempio di segnali LVDS. Gli ingressi VIA e VIB assumono tipicamentei valori 1V - 1,4V, che corrispondono ad un segnale differenziale VID di ±0, 4 V .Per il segnale in uscita sono mostrati i tempi caratteristici di salita/discesa (tr etf ) e di attraversamento (tPHL e tPLH). [31]

54

l’informazione di tracciamento deve essere inviata al DAQ, sulle FEB nonsono richiesti ne preamplificatori e ne comparatori ad alta sensibilita. Perquesto motivo quindi, e stato disegnato uno stadio di ingresso con ricevitoriLVDS usati come comparatori. Questa soluzione rispecchia quella adottatanell’esperimento OPERA [30].

Normalmente i ricevitori LVDS sono utilizzati assieme a trasmettitoriLVDS che funzionano sostanzialmente come dei generatori di corrente cheforniscono una corrente di 3, 5 mA il cui verso (uscente/entrante) corrispondeal valore logico (H/L). Il segnale di corrente e inviato dal trasmettitore suun cavo che lo collega al ricevitore. Una resistenza di terminazione di 100 Ωe utilizzata per l’adattamento di impedenza e quindi per evitare riflessionidel segnale. Il ricevitore LVDS e in sostanza un comparatore che, nellamodalita comune di utilizzo, riceve in ingresso un segnale differenziale di±3, 5 mA · 100Ω = ±350 mV e fornisce in uscita il valore logico 0-3 V.Esso lavora normalmente con un modo comune di 1, 2 V . In figura 3.9 sonorappresentati alcuni tipici segnali LVDS.

La figura 3.10 mostra come i ricevitori LVDS sono utilizzati nel circuitodella FEB. Il segnale (bipolare) del rivelatore RPC e terminato sulla resistenzacaratteristica dei cavi twisted-pairs (100 Ω) che collegano le strip degli RPCalle FEB; segue una rete di protezione a diodi (non mostrata in fig. 3.10(a))che protegge il receiver 75LVDS386 [31] da sbalzi improvvisi di tensione chepossono provenire dagli RPC; due condensatori da 100 nF collegano i segnali

(a) (b)

Figura 3.10: Schema dello stadio di ingresso della FEB. (a) Rete di polarizzazioned’ingresso. (b) LVDS receiver SN75LVDS386.

55

positivi e negativi agli ingressi del ricevitore LVDS (essi isolano l’ingressodalla tensione continua della rete di polarizzazione per la soglia). La sogliaper il segnale in ingresso e impostata agendo tramite i DAC sulle tensioniindicate come VUP e VDW in fig. 3.10(a). La rete di polarizzazione ecostruita in modo che il range di soglia va da −500 mV a +500 mV . Ilsegnale di pulse e immesso all’ingresso positivo del receiver LVDS tramite uncondensatore da 100 pF .

Il circuito in fig. 3.10(a) e relativo al singolo canale elettronico. Esso ereplicato 64 volte sulla FEB per tutti i 64 canali in ingresso. Il singolo chip75LVDS386 contiene 16 receiver, cosicche occorrono solo 4 chip per gestire 64canali. Le uscite dei ricevitori LVDS sono collegate direttamente alla FPGA.

3.5 Il DAC

Nel progetto della FEB e utilizzato un DAC per impostare le soglie didiscriminazione (analogiche) per i segnali dei rivelatori RPC in ingresso allaFEB. Per come e stato progettato, il sistema consente di impostare le sogliein un range di −500 mV ÷ 500 mV e con una risoluzione di 1 mV .

Un DAC (Digital to Analog Converter) e un dispositivo in grado diconvertire un segnale digitale (solitamente in codice binario) in un segnaleanalogico (ad esempio di corrente, tensione o carica elettrica). La tabelladi conversione dal valore digitale a quello analogico prende il nome di LUT(Look-Up Table) e puo avere caratteristiche proporzionali, o puo seguire unandamento del tutto arbitrario, a seconda del suo impiego [32].

Il DAC5652 della Texas Instruments [33] in uso sulla FEB contiene sullostesso chip due DAC a 10 bit che forniscono due output complementari dicorrente IOUT1 e IOUT2 che dipendono dal codice binario in ingresso. IlDAC5652 e costituito da una schiera di sorgenti di corrente in grado difornire una corrente di fondoscala fino a 20 mA (fig. 3.11). Un decoderinterno indirizza gli switch di corrente differenziali ogni volta che il DACviene aggiornato; la corrispondente corrente in uscita e formata indirizzandotutte le correnti in uno dei nodi IOUT1 o IOUT2.

La funzione di trasferimento del dispositivo e lineare per valori dellacorrente di fondoscala nel range 2 ÷ 20 mA. Le correnti IOUT1 e IOUT2possono essere espresse come:

IOUT1 = IOUTFS ×(Code

1024

)(3.1)

IOUT2 = IOUTFS ×(

1023− Code1024

)(3.2)

56

dove Code e la rappresentazione decimale della parola binaria in ingresso;IOUTFS e la corrente di fondoscala ed e la somma delle due uscite com-plementari. La corrente di fondoscala e impostata mediante una resistenzaesterna RSET collegata sul pin BIASJ che fornisce una tensione di riferimentodi 1,2 V; la risultante corrente IREF e moltiplicata internamente di un fattore32 per produrre una corrente effettiva in uscita che puo andare da 2 mA a20 mA, a seconda del valore di RSET :

IOUTFS = 32× IREF = 32× VREFRSET

(3.3)

Nella modalita comune di utilizzo le uscite sono collegate a resistenze dicarico RLOAD in modo da produrre i segnali di tensione:

VOUT1 = IOUT1 ×RLOAD ; VOUT2 = IOUT2 ×RLOAD (3.4)

La tensione differenziale e di:

VOUTDIFF = VOUT1−VOUT2 =

(2× Code− 1023

1024

)×IOUTFS×RLOAD (3.5)

I due DAC nel DAC5652 possono funzionare in due modalita differenti:nella modalita Dual-bus (fig. 3.12(a)) i due DAC agiscono come due DACindipendenti; nella modalita Single-bus Interleaved (fig. 3.12(b)) i due DACcondividono il bus del dato in ingresso. I DAC5652 sono controllati da uningresso WRT che abilita la scrittura del dato in ingresso su un latch internoe un segnale CLK che pilota il DAC. Gli ingressi WRT e CLK sono di solitocollegati insieme.

Figura 3.11: Uscite analogiche del DAC5652. [33]

57

(a) (b)

Figura 3.12: (a) Modalita operativa Dual-bus. (b) Modalita operativa Single-busInterleaved. [33]

Figura 3.13: Schematico del DAC.

58

Nel circuito della FEB i due DAC5652 sono utilizzati in modalita Dual-bus(fig. 3.13). Dalla FPGA partono verso i DAC un bus a 10 bit del dato digitale,collegato in parallelo a tutti i DAC fisici, e quattro linee di scrittura collegateai rispettivi ingressi WRT e CLK di ogni DAC. L’invio di un segnale di clocksu una di queste quattro linee aggiorna le uscite del DAC selezionato con ilnuovo valore presente sul bus a 10 bit. Le uscite dei DAC sono terminate suresistenze di carico da 56 Ω e collegate ad amplificatori CMOS AD8652 chefungono da buffer. Le uscite di questi amplificatori costituiscono le tensioniVUP e VDW della rete di figura 3.10(a).

Utilizzando l’equazione 3.3 con VREF = 1, 2 V e RSET = 2, 2 kΩ si trovache la corrente di fondoscala e pari a IOUTFS = 17, 45 mA; le tensioni VUP eVDW possono andare da 0 a 2 V (gli amplificatori introducono un guadagnodi un fattore 2) e i relativi valori di soglia hanno un range−500 mV ÷500 mV .

3.6 L’ADC

L’ADC e utilizzato nella FEB al fine di rileggere i valori di soglia impostatiper mezzo dei DAC. La possibilita di monitorare le soglie consente di avereuna sorta di processo di feedback per cui il DAQ puo modificare opportuna-mente le soglie in base al valore letto tramite l’ADC.

Un ADC (Analog to Digital Converter) [34], e un circuito elettronico ingrado di convertire un segnale Analogico con andamento continuo (ad es. unatensione) in una serie di valori discreti. La maggior parte degli ADC sonolineari, il che significa che sono progettati per produrre in uscita un valoreche e funzione lineare del segnale di ingresso (fig. 3.14).

La risoluzione di un ADC indica il numero di valori discreti che puoprodurre. E usualmente espressa in Bit. Per esempio, un ADC che codificaun ingresso analogico in 256 livelli discreti ha una risoluzione di 8 bit, essendo28 = 256. La risoluzione puo anche essere definita elettricamente, ed espressain volt. La risoluzione in volt di un ADC e uguale alla minima differenzadi potenziale tra due segnali che vengono codificati con due livelli distintiadiacenti. Essa puo essere espressa come il range della misura di tensionediviso il numero di valori discreti:

Q =EFSR2M

(3.6)

dove M e la risoluzione dello ADC in bit e EFSR dato da:

EFSR = VRefHi − VRefLow (3.7)

dove VRefHi e VRefLow sono gli estremi superiore ed inferiore delle tensioniche possono essere codificate.

59

Figura 3.14: Caratteristica ideale di un ADC a 8 livelli. [34]

Lo ADC104S051 della National Semiconductor [35], utilizzato nel progettodella FEB per leggere i valori VUP delle soglie, e un ADC CMOS a 10 bite a 4 canali dotato di una interfaccia seriale ad alta velocita. Esso e basatosu una architettura ad approssimazioni successive con un circuito interno ditrack-and-hold.

Un ADC ad approssimazioni successive (SAR - Successive ApproximationRegister) usa un comparatore e un convertitore digitale-analogico; ad ognipassaggio l’ADC prova a impostare un bit, partendo dal MSB (Most Sig-nificant Bit, bit con peso maggiore) e usando il DAC confronta il segnalecampionato con il segnale di ingresso in feedback. Questo convertitore indi-vidua un bit ad ogni iterazione in una sorta di ricerca binaria e la risoluzionee limitata solo dalle esigenze di sample-rate e dal rumore in ingresso.

L’architettura dello ADC104S051 e basata su un convertitore digitale-ana-logico a ridistribuzione di carica; il funzionamento e mostrato in figura 3.15.Nella modalita track lo switch SW1 collega il condensatore di campionamentoad uno dei quattro canali di ingresso analogico attraverso un multiplexer;l’interruttore SW2 chiuso bilancia gli ingressi del comparatore. Nella moda-lita hold lo switch SW1 connette a massa il condensatore di campionamentomantenendo la tensione campionata e lo switch SW2 (aperto) sbilancia ilcomparatore; la logica di controllo comanda il DAC a ridistribuzione di caricadi aggiungere delle quantita fisse di carica al condensatore di campionamentofinche il comparatore non e bilanciato; quando il condensatore e bilanciato, laparola digitale fornita dal DAC e la rappresentazione digitale della tensione

60

Figura 3.15: Schema operativo dello ADC104S051 (in Track Mode). [35]

analogica in ingresso.Lo ADC104S051 comunica con la FPGA con un protocollo seriale SPI

(Serial Peripheral Interface). Lo SPI e un sistema di comunicazione traun microcontrollore e altri circuiti integrati o tra piu microcontrollori. Latrasmissione avviene tra un dispositivo detto master e uno o piu slave. Ilmaster controlla il bus, emette il segnale di clock, decide quando iniziare eterminare la comunicazione.

Il bus SPI (fig. 3.16(a)) si definisce:

• di tipo seriale

• sincrono per la presenza di un clock che coordina la trasmissione ericezione dei singoli bit e determina la velocita di trasmissione

• full-duplex in quanto il “colloquio” puo avvenire contemporaneamentein trasmissione e ricezione.

Esso si basa su 4 segnali (sui datasheets possono essere trovati nomidifferenti):

• SCLK - SCK: Serial Clock (emesso dal master)

• SDI - MISO - SIMO - DI - SI: Serial Data Input, Master Input SlaveOutput (ingresso per il master ed uscita per lo slave)

• SDO - MOSI - SOMI - DO - SO: Serial Data Output, Master OutputSlave Input (uscita dal master)

• CS - SS - nCS - nSS - STE: Chip Select, Slave Select, emesso dal masterper scegliere con quale dispositivo slave vuole comunicare

61

(a)

(b)

Figura 3.16: (a) Il bus SPI. (b) Trasferimento di dati sul bus SPI. [36]

La trasmissione dei dati sul bus SPI (fig. 3.16(b)) si basa sul funzionamen-to dei registri a scorrimento (shift register). Ogni dispositivo sia master cheslave e dotato di un registro a scorrimento interno i cui bit vengono emessi e,contemporaneamente, immessi, rispettivamente, tramite l’uscita SDO/MOSIe l’ingresso SDI/MISO. Il registro puo avere dimensione arbitraria (ma ugualeper i dispositivi master e slaves) anche se usualmente ha la dimensione di 8bit. Il registro a scorrimento e un’interfaccia completa mediante la qualevengono impartiti comandi e trasmessi dati che arrivano in modo seriale mache internamente sono prelevati, a fine trasmissione, in modo parallelo. Adogni impulso di clock i dispositivi che stanno comunicando sulle linee del busemettono un bit dal loro registro interno rimpiazzandolo con un bit emessodall’altro interlocutore.

Il protocollo dello ADC104S051 utilizza una parola a 16 bit (fig.3.17).Il clock seriale SCLK controlla sia il processo di conversione che il timingdel dato seriale. Il dato in ingresso codifica su quale dei 4 ingressi analogicieffettuare il campionamento; il risultato della conversione e inviato su DOUTcome un flusso di dati seriale. Un frame seriale e inizializzato in corrispon-denza del fronte di discesa di CS e termina sul fronte di salita di CS. Ciascunframe deve contenere 16 fronti di salita di SCLK. L’uscita DOUT e in unostato di alta impedenza quando CS e High ed e attivo quando CS e Low.Durante i primi 3 cicli di SCLK l’ADC e in track mode e acquisisce la tensione

62

Figura 3.17: Diagramma temporale del funzionamento dello ADC104S051. [35]

in ingresso; nei successivi 13 cicli di SCLK e effettuata la conversione e il datoe inviato in uscita, il MSB (Most Significant Bit) per primo, a partire dal5 clock. Se c’e piu di una conversione in un frame, l’ADC rientrera in trackmode sul fronte di discesa di SCLK dopo N × 16 fronti di salita di SCLK, esi portera in modalita hold sul (N × 16 + 4)-esimo fronte di salita di SCLK,dove ‘N’ e un intero.

3.7 Circuito di configurazione della FPGA

Nel progetto della FEB la FPGA (una Spartan-6 XC6SLX9 della Xilinx)e il componente principale. Essa gestisce i segnali di controllo del DAQ,riceve e memorizza i segnali discriminati, gestisce DAC e ADC, provvede allacomunicazione dei dati sulla Ethernet. Della FPGA si parlera in dettaglio nelcapitolo 4; in questo paragrafo anticipiamo la discussione sulla configurazionedella FPGA al fine di descrivere il circuito per la configurazione della FPGA.

Le FPGA sono componenti programmabili che possono essere program-mati caricando dei dati di configurazione (un bitstream) nella loro memoriainterna [37]. Le FPGA della serie Spartan-6 sono in grado di caricare unprogramma in modo automatico da una memoria non volatile o possonoessere configurate da una sorgente esterna come un microprocessore. Poichei dati di configurazione sono immagazzinati in latch di configurazione CMOS,la FPGA deve essere riconfigurata ogni volta che e tolta l’alimentazione. Ilbitstream e caricato nel dispositivo attraverso dei pin speciali di configura-zione. La procedura di inizializzazione della FPGA e avviata al momentodell’accensione oppure quando il segnale di PROGRAM B viene messo bassoper piu di 500 ns (PROGRAM B fa il reset generale della FPGA).

63

Tra le diverse modalita consentite per la configurazione, e stato sceltoil Master Serial, il quale fa uso di una memoria flash seriale di tipo SPI(fig. 3.18). Questa modalita e stata scelta poiche essa permette la riscritturadel bitstream nella memoria di configurazione, come richiesto dalle specifiche.Il circuito per la configurazione e mostrato in figura 3.19.

Figura 3.18: Schema di configurazione Master Serial con flash SPI. [37]

La memoria flash usata e una M25P80 della Micron, la quale ha unadimensione di 8 Mb. La sua dimensione e stata scelta in modo che essapossa contenere due immagini dei dati di configurazione (la FPGA Spartan-6XC6SLX9 richiede 2’742’528 bit di configurazione). Questo accorgimentoe dovuto al fatto che, se si vuole riscrivere la memoria flash con nuovidati inviati tramite la connessione Ethernet, occorre comunque mantenereuna immagine funzionante in maniera tale da poter riavviare la FPGA nelcaso l’operazione di riprogrammazione non vada a buon fine (la riscritturadei dati sulla flash attraverso il protocollo SPI e gestita da un processoreimplementato sulla FPGA stessa).

Un’altra questione che e stata presa in considerazione e il fatto che all’ac-censione la memoria flash potrebbe non essere ancora pronta a rispondereai comandi della FPGA (in questo caso la configurazione fallirebbe). Laflash M25P80 possiede un circuito di power-on-reset che fa in modo che ildispositivo sia in uno stato di reset in cui non risponde ad alcun comandoesterno finche la tensione di alimentazione non supera un determinato valore;la FPGA stessa tollera un ramp time della tensione di alimentazione tra 0,20e 50 ms [38]. Per ovviare a questo problema e stato introdotto nel progettodella FPGA il circuito di reset MAX6443 della Maxim, il quale mantienebasso il segnale di PROGRAM B finche la tensione di alimentazione nonraggiunge 3, 1 V ; la riconfigurazione della FPGA e triggerata dal fronte disalita di PROGRAM B.

64

Figura 3.19: Interfaccia di configurazione SPI per la FPGA Xilinx Spartan-6. [37]

65

Capitolo 4

La FPGA

La FPGA e stata una delle parti piu importanti di questo lavoro. Il progettodel firmware della FPGA e le relative simulazioni hanno interessato unabuona parte dell’attivita di tesi.

Come in parte anticipato nel capitolo precedente, la FPGA nella FEBdi NESSiE riceve i segnali discriminati, li forma a 30 ns e li memorizzain un buffer circolare di profondita 4kb per canale (32KB). Essa inoltreimplementa le funzionalita di fast-OR, di mascheramento dei canali rumorosie di time-stamp dei segnali in ingresso. Un processore implementato sullaFPGA controlla la rilettura del buffer circolare, gestisce il traffico dei datida e verso il DAQ attraverso un controllore ethernet, consente di impostaremaschere e soglie. Le varie unita logiche implementate sulla FPGA sonointerconnesse come in figura 4.1.

In questo capitolo verranno trattate in una prima sezione le FPGA ingenerale, per poi entrare nello specifico del progetto della FPGA per la FEBdi NESSiE. Infine saranno esaminate singolarmente le varie unita logiche delprogetto della FPGA.

4.1 FPGA: overview

Una FPGA (Field Programmable Gate Array) e un dispositivo VLSI (VeryLarge Scale of Integration) a logica programmabile. Essa e un circuitointegrato digitale la cui funzionalita e programmabile via software.

Come avviene per una PLA (Programmable Logic Array), e possibileprogrammare una FPGA con una qualsiasi funzione logica voluta dall’utente.A differenza di una PLA, una FPGA puo implementare sia logica combina-toria che sequenziale; inoltre essa puo contenere una vastissima quantita dilogica.

66

Figura 4.1: Schema a blocchi della FPGA.

Spesso le FPGA sono paragonate agli ASIC (Application Specific Integra-ted Circuit) per la loro elevata complessita e potenziale velocita. Un ASICe un circuito integrato creato appositamente per risolvere un’applicazione dicalcolo ben precisa (specific purpose).

Il grande vantaggio rispetto agli ASIC e che le FPGA permettono diapportare eventuali modifiche o correggere errori semplicemente riprogram-mando il dispositivo in qualsiasi momento. Per questo motivo esse sonoutilizzate ampiamente nelle fasi di prototipizzazione, in quanto eventualierrori possono essere risolti semplicemente riconfigurando il dispositivo. Dicontro, per applicazioni su grandi numeri sono antieconomiche perche ilprezzo unitario del dispositivo e superiore a quello degli ASIC (che di conversohanno elevati costi di progettazione).

4.1.1 FPGA: principio di funzionamento

Una FPGA e costruita sulla base di una unita logica fondamentale dettaCLB (Configurable Logic Block), duplicata centinaia o migliaia di volte. Unacella logica (fig 4.2) e fondamentalmente una piccola lookup table (LUT), unflipflop-D e un multiplexer 2-to-1 (per bypassare il flipflop all’occorrenza).

67

La LUT e come una piccola ROM che puo implementare qualsiasi funzionelogica.

Figura 4.2: Un modello semplice di cella logica. [40]

Ciascuna cella logica puo essere connessa ad altre CLB per mezzo dellerisorse di interconnessione (fili/multiplexers piazzati intorno le celle logiche).I fili di interconnessione, inoltre, si estendono anche alle estremita del dispositivo,dove sono implementate le celle di I/O che connettono ai pins della FPGA(fig 4.3).

Figura 4.3: Interconnessioni tra celle logiche. [40]

In aggiunta alle risorse di interconnessione general-purpose, le FPGAhanno delle line veloci dedicate tra celle logiche adiacenti. Il tipo piu comunedi linee veloci dedicate sono le “carry chains”. Le carry chains consentono dicreare funzioni aritmetiche (come contatori e sommatori) in maniera efficiente(basso utilizzo di logica ed elevata velocita operativa).

Ad esempio la FPGA Spartan-6 XC6SLX9 [41] contiene al suo interno9152 celle logiche. Ogni CLB e connessa a una switch matrix che consentel’accesso alla matrice di routing generale. Ciascuna CLB contiene due slices;ciascuna di queste contiene quattro LUT e otto flip-flops (fig 4.4).

La figura 4.5 [42] ad esempio mostra lo schema logico di una SLICEX.La SLICEX e la slice di base di una Spartan-6. Altri tipi di slices sono leSLICEL e le SLICEM: Le SLICEL contengono in piu rispetto alle SLICEX

68

Figura 4.4: Disposizione delle slices all’interno di una CLB. [42]

Figura 4.5: Diagramma logico di una SLICEX. [42]

69

una struttura di carry aritmetico e multiplexer di funzionalita piu ampia; leSLICEM forniscono in aggiunta le funzionalita di memoria distribuita e dishift register a lunghezza variabile.

4.1.2 Risorse di clock

Oltre alle CLB una FPGA contiene altre importanti risorse. Tra queste moltoimportanti sono le risorse di clock.

In un disegno dove e utilizzata logica sincrona, un singolo clock puopilotare un gran numero di flip-flop simultaneamente. Questo puo causareproblemi elettrici e di timing all’interno della FPGA. Affinche una FPGAlavori propriamente, i costruttori di FPGA forniscono dei collegamenti internispeciali chiamati “global routing” o “global lines”. Essi consentono di distri-buire il segnale di clock in tutta la FPGA con un basso skew (bassa differenzafra i tempi di arrivo dei segnali ai vari flip-flop).

Ulteriori risorse per la gestione del clock sono i DCM (Digital ClockManager) e i PLL (Phase-Locked Loops).

In primo luogo i DCM eliminano il clock skew, quindi migliorando leperformance del sistema. Un DCM consente inoltre di: shiftare di fase ilclock in uscita rispetto al clock in ingresso di una frazione del periodo delclock; moltiplicare o dividere la frequenza del clock in ingresso per sintetizzareuna nuova frequenza di clock. I DCM si integrano direttamente con la reteglobale di distribuzione del clock.

Un PLL e un sistema di controllo che genera un segnale di output la cuifase e collegata alla fase di un segnale in input di riferimento. Esso e uncircuito elettronico che consiste in un oscillatore a frequenza variabile e unrivelatore di fase. Questo circuito confronta la fase del segnale in ingressocon quella del segnale derivato dall’oscillatore in uscita e regola la frequenzadel suo oscillatore in modo da mantenere i due segnali in fase tra loro. Ilsegnale dal rivelatore di fase e usato per controllare l’oscillatore in un anellodi reazione. L’utilizzo principale dei PLL e come sintetizzatore di frequenze,e come filtro di jitter per i clock.

Il funzionamento di un DCM (fig 4.6) e basato su un dispositivo dettoDLL (Delay-Locked Loop). Tale dispositivo ha un funzionamento simile aquello dei PLL, con la differenza che l’oscillatore controllato in tensione erimpiazzato da linee di ritardo.

Una FPGA Spartan-6 XC6SLX9 ad esempio ha al suo interno due CMT(Clock Management Tile) ciascuno dei quali contiene due DCM e un PLL.

70

4.1.3 Memoria RAM interna

In aggiunta alla logica, tutte le FPGA hanno dei blocchi dedicati di memoriaRAM statica, controllata dagli elementi logici e distribuita tra essi. In unaFPGA ci sono due tipi di RAM: RAM a blocchi (Block RAM) e RAMdistribuita. La dimensione della RAM di cui si ha bisogno di solito determinaquale tipo e da utilizzarsi. Se la dimensione della memoria necessaria esuperiore a qualche centinaio di bytes e preferibile implementare tale memoriain una Block-RAM. I blocchi di RAM piu piccoli sono organizzati nella“memoria distribuita”. La memoria distribuita permette di utilizzare lecelle logiche come minuscole RAM, il che fornisce una distribuzione di RAMall’interno della FPGA molto flessibile.

Altro fattore che caratterizza una RAM e il numero di agenti che possonoaccedere alla RAM simultaneamente. Le RAM si distinguono in:

• RAM “single-port”: solo un agente puo leggere/scrivere la RAM.

• RAM “dual-port” o “quad-port”: 2 o 4 agenti possono leggere/scrivere.

In una RAM multi-port ogni agente ha il proprio bus di dati/indirizzidedicato. Caratteristica importante delle RAM multi-port e che ciascunagente puo usare un clock differente, il che e utile se si vuole trasferire datitra due domini di clock differenti.

Figura 4.6: Diagramma a blocchi funzionale di una DCM. [44]

71

Nelle FPGA della serie Spartan-6 la blockram e organizzata in blocchida 18kb (fig 4.7), utilizzabili all’occorrenza come due blocchi indipendenti da9kb. Ciascun blocco di memoria puo funzionare sia come single-port RAMche come double-port RAM.

Figura 4.7: 18kb dual-port block RAM. [47]

4.1.4 Risorse di I/O

Le FPGA tendono ad avere moltissimi pin. Essi si possono distinguere inpin utente e pin dedicati.

I pin utente sono pin configurabili dall’utente come input, output o bidi-rezionali; molti standard di I/O sono supportati (sia single-ended che diffe-renziali e con tensioni di riferimento che vanno da 1,2V a 3,3V).

I pin dedicati sono pin che hanno funzionalita specifica: essi comprendonoi pin di alimentazione, i pin di configurazione e gli ingressi di clock. Alcunipin di configurazione diventano pin utente una volta terminata la fase diconfigurazione della FPGA.

Ciascun pin utente della FPGA e gestito da un IOB. Gli IOB sonoorganizzati in banchi. Ciascun banco puo lavorare con una propria tensione dialimentazione, anche diversa dalle altre. In una FPGA della serie Spartan-6ci sono da quattro a sei banchi di I/O, a seconda del modello e del package.

72

Ciascun IOB, oltre a supportare diversi standard di I/O, puo essereconfigurato per fornire un dato valore di corrente, supporta tre diverse impos-tazioni di slew rate e per ciascuna uscita puo impostare un pullup/pulldowninterno. Altra risorsa molto utile e il IODELAY2 che consente di impostareper un segnale di input o di output un ritardo fisso o variabile tra il pin diI/O e la logica interna della FPGA.

4.2 Scelta della FPGA

La FPGA scelta per la FEB di NESSiE e una FPGA della serie Spartan-6,precisamente la XC6SLX9-2FT256C. La scelta della FPGA e stata determi-nata essenzialmente da due fattori:

• la quantita di memoria richiesta dall’applicazione;

• il numero di ingressi/uscite.

La prima delle due e quella che si e rivelata piu limitante nella scelta dellaFPGA, dato che il nostro progetto richiede una grande quantita di memoria(256kb solo per il buffer circolare; in piu la PROM del processore (8kB),la XRAM del processore (4kB), la FIFO della ethernet (2kB), . . . ). Tra leFPGA della serie Spartan-6 la scelta e ricaduta sulla XC6SLX9, la qualepossiede un quantitativo di block RAM pari a 576kb [41], sufficiente per lanostra applicazione.

Il numero di pin di ingresso/uscita (120) ha invece condizionato la sceltadel package tra quelli disponibili per il modello XC6SLX9. La scelta ericaduta sul package FT256, per cui sono disponibili 186 I/O utente [48].Questo package e di tipo BGA, cioe ha i pin alla base del chip, disposti comeuna matrice quadrata di sfere 16 × 16. Un package di questo tipo e piucompatto ma piu difficile da saldare sulla scheda rispetto a quelli con i pinai lati. Lo speed grade scelto per la FPGA e il −2.

4.3 Il progetto della FPGA

La progettazione della FPGA ha seguito lo schema generale di figura 4.8 [50].In primo luogo si e descritto il progetto in linguaggio HDL (Hardware de-scription language). Un linguaggio HDL consente una descrizione di uncomponente digitale di tipo “behavioral”, ossia che prescinde dai dettaglidella implementazione hardware. I linguaggi HDL permettono una descri-zione FPGA-indipendente. Tra i due linguaggi HDL piu diffusi (VHDL eVerilog) in questo lavoro e stato utilizzato il Verilog, linguaggio dalla sintassi

73

Figura 4.8: Flusso di progettazione di una FPGA. [50]

molto simile al C. In questo linguaggio le varie unita logiche del progettosono descritte come una serie di moduli.

In questo primo stadio (Design Entry) il progetto e costituito da una seriedi file sorgenti, ognuno dei quali descrive un modulo Verilog. Il progettoviene verificato mediante simulazione comportamentale, la quale permettedi verificare che la descrizione in HDL implementi l’algoritmo voluto (estato utilizzato il simulatore NCverilog, simulatore di linguaggio Verilog dellaCadence).

L’implementazione del progetto a partire dai sorgenti HDL e effettuatamediante il software propretario dei costruttori della FPGA (ISE nel casodella Xilinx). Esso e in grado di tradurre i sorgenti in notazione HDL in uncircuito specifico per la FPGA selezionata. Questa operazione, molto similealla compilazione di un programma, e detta di sintesi.

Alla sintesi segue la fase di implementazione, la quale:

• Mappa il circuito nelle risorse del dispositivo selezionato;

• Realizza le interconnessioni fra IOB, CLB etc;

• Ottimizza il layout per tentare di ottenere le velocita richieste dalprogettista;

74

• Genera un modello del circuito completo dei ritardi reali.

Il modello Verilog post-implementazione, comprensivo dei ritardi reali delcircuito della FPGA, e stato risimulato al fine di verificare che il circuito finalerealizzasse le funzioni richieste alle velocita necessarie.

L’ultimo stadio del progetto di una FPGA prevede di generare il bitstreamdi programmazione e di scaricare il firmware nella FPGA, ad esempio con uncavo JTAG o mediante PROM.

Si analizzeranno nel seguito una per una le unita logiche implementatesulla FPGA. Per maggiori dettagli sul linguaggio Verilog e sulla sintesi diFPGA si rimanda alle Appendici.

4.3.1 I clock

Nel disegno della FPGA sono state utilizzate due frequenze: una da 100 MHze una da 50 MHz.

L’uso della frequenza di clock a 100 MHz e vincolata dalle specifichedi progetto. Il clock a 100 MHz e utilizzato dalla logica di formazione delsegnale, dal buffer circolare, nonche dalla logica di time-stamp.

La frequenza a 50 MHz e utilizzata dal processore, il quale possiededella logica piu lenta e non puo lavorare alla frequenza di 100 MHz, e dallaEthernet, che necessariamente deve andare a 50 MHz.

Le due frequenze sono generate tramite una DCM. Essa utilizza comeriferimento un segnale generato da un oscillatore esterno a frequenza 50 MHz.In uscita fornisce una frequenza clone a 50 MHz e una frequenza doppia a100 MHz. In fig.4.9 sono mostrati i clock generati tramite la DCM.

La scelta di entrare nella FPGA con un clock da 50 MHz anziche da100 MHz e dovuta al fatto che il PHY della Ethernet necessita di un ingressodi clock a 50 MHz. L’alternativa sarebbe stata entrare con un clock da100 MHz, dividerlo internamente alla FPGA, e uscire con una frequenza a50 MHz verso il PHY della Ethernet.

4.3.2 La logica di formazione del segnale

I segnali in ingresso provenienti dai discriminatori LVDS sono segnali logicidel tipo 0-3.3V (sia positivi che negativi) e hanno una durata di pochi ns,seguendo il profilo del segnale del rivelatore RPC. Si vuole formare talesegnale a una durata di 30 ns.

La soluzione “classica” di campionare il segnale introducendolo all’ingres-so di un flip-flop-D pilotato dal clock a 100 MHz risulta inadeguata in quanto

75

Figura 4.9: Nello schema extClk50 e il clock esterno in ingresso alla FPGA; clk50e clk100 sono i clock generati tramite la DCM; IBUFG e un buffer di input; iBUFG sono linee globali di clock.

in questa maniera un segnale di durata inferiore al periodo di clock potrebbenon essere rivelato.

Per essere sensibili anche a segnali di durata inferiore al periodo di clocke stato scelto di introdurre il segnale nell’ingresso di clock di un flip-flop-Dcon ingresso fisso ad 1. In questa maniera l’uscita q1 del flip-flop scatta ad1 all’arrivo del segnale indipendentemente dal clock da 100 MHz. Il segnaleq1 e ritardato in tre successivi flip-flop-D pilotati dalla frequenza a 100 MHz

Figura 4.10: Schema del circuito di formazione del segnale a 30 ns.

76

(a)

(b)

Figura 4.11: (a) risposta del circuito in fig.4.10 a un segnale positivo (screenshotsimulatore ISim, simulazione Post-Route). (b) risposta del circuito in fig.4.10 a unsegnale negativo (screenshot simulatore ISim, simulazione Post-Route).

77

(le relative uscite sono indicate q2, q3, q4 nello schema del circuito fig.4.10).Tali uscite sono messe in un AND a tre ingressi, il cui segnale in uscita fa unreset asincrono del primo flip-flop. In questa maniera q1 e riportato a zero eil circuito puo rispondere ad un nuovo segnale in ingresso; q2 risulta esseredella durata richiesta (30 ns) e sincrono con il clock, per cui puo essere presocome segnale in uscita.

Altro fatto da tenere in considerazione e che il circuito deve poter rispon-dere sia a segnali positivi che a segnali negativi. Per questo motivo e statointrodotto un registro di controllo per la polarita del segnale. A secondadi come e impostato il bit di polarita il circuito inverte o lascia inalteratoil segnale in ingresso prima di introdurlo nell’ingresso di clock del primoflip-flop. In questa maniera il circuito puo rispondere alla stessa maniera asegnali di entrambe le polarita.

Il circuito completo e mostrato in fig. 4.10; la figura 4.11, invece, mostrale forme d’onda del circuito in risposta a un segnale positivo (fig. 4.11a) o aun segnale negativo (fig. 4.11b).

4.3.3 La logica di mascheramento dei dati

Il mascheramento dei dati consente di escludere all’occorrenza uno o piucanali in ingresso, ad esempio se rumorosi. Se un canale e mascherato, essonon viene considerato nella logica di fast-OR; inoltre i dati in ingresso relativia tale canale non sono memorizzati nel buffer circolare.

Il mascheramento e implementato semplicemente come un AND bit a bittra i 64 bit del dato e un registro maschera a 64 bit (fig 4.12). In questamaniera ponendo a 1 (0) i bit del registro maschera si abilita (disabilita) ilcanale corrispondente. Il dato mascherato e fornito in input al buffer circolaree alla unita di fast-OR. Le maschere sono caricabili via Ethernet.

4.3.4 Il buffer circolare

Il dato in ingresso deve essere memorizzato in un buffer circolare di profondita4096 bit. La scrittura avviene quando e attivo il segnale di WRITE BUFinviato dal DAQ. La rilettura avviene sotto il controllo del processore.

Data la grande quantita di memoria richiesta dall’applicazione (64 · 4k =256k bit di memoria), il buffer circolare e stato implementato come unablock RAM, al fine di sfruttare al meglio le risorse presenti all’interno dellaFPGA. Poiche la scrittura e la lettura avvengono in maniera indipendente,la block RAM e stata configurata come una RAM dual-port, con una portadi scrittura (port A) e una porta di lettura (port B). Questa scelta semplificail problema dell’attraversamento tra domini di clock in quanto le due porte

78

Figura 4.12: Logica di mascheramento dei dati.

possono essere pilotate da due clock distinti: la porta di scrittura e sincronacon il clock a 100 MHz; la porta di lettura e sincrona con il clock a 50 MHz.

In fig. 4.13 e rappresentato il principio di funzionamento dello stadio: uncontatore modulo-n pilota gli input di indirizzo di una block RAM; ad ogniciclo di clock il contatore indirizza la locazione di memoria successiva, doveviene scritto il dato. La circolarita sta nel fatto che il contatore quando va inoverflow ricomincia a contare da zero; in tal modo la scrittura sulla memoriacontinua senza discontinuita dall’ultima locazione alla prima. Avere unamemoria dimensionata come una potenza di due semplifica l’hardware delcontatore in quanto in tale maniera non e necessaria ulteriore logica perl’azzeramento del contatore.

Nel nostro caso sono stati utilizzati due contatori: uno per la scrittura euno per la lettura.

La RAM e abilitata alla scrittura quando e attiva la linea WRITE BUFdel DAQ; questo segnale, dopo essere opportunamente sincronizzato con ilclock, e collegato all’ingresso WE (write enable) della port A. Lo stessosegnale abilita il contatore dell’indirizzo di scrittura in modo tale che adogni ciclo di clock punta alla locazione successiva.

La porta di lettura (port B) e sempre abilitata. Un contatore, abilitato daun segnale di READ, pilota l’indirizzo di lettura della port B. Le operazionidi lettura della RAM prevedono che essa venga riletta un dato numero diposizioni prima dell’ultimo dato scritto. Un segnale di REWIND riposizional’indirizzo di lettura indietro rispetto all’indirizzo di scrittura di un valore

79

Figura 4.13: Implementazione di un buffer circolare usando block RAM econtatore. [49]

fornito da un registro speciale (comunque modificabile all’occorrenza). Ri-posizionato il puntatore di lettura, si procede alla lettura delle successivelocazioni di memoria ponendo alto il segnale di READ.

Si e previsto, inoltre, un segnale di CLEAR che fa il reset sincrono deicontatori di scrittura e di letttura. I segnali di READ, REWIND, CLEARsono forniti mediante il processore. Il segnale di ABORT inviato dal DAQtra le altre cose fa il CLEAR del buffer circolare.

Essendo il processore un processore ad 8 bit mentre il buffer circolareha una dimensione di 64 bit, e stata prevista una interfaccia tra CPU ebuffer circolare che consente al processore di leggere 8 bit per volta. Ad ognirichiesta di lettura da parte della CPU viene incrementato un selettore a 3bit che pilota un multiplexer che pone in uscita, disponibili al processore, gli8 bit selezionati tra i 64 bit che la RAM rende disponibili in uscita. Quandoil selettore arriva a sette e attivata la linea di READ verso il buffer circolarein modo tale da leggere la locazione di memoria successiva.

Il circuito completo e mostrato in figura 4.14.

4.3.5 Il fast-OR

La logica di fast-OR e stata organizzata a gruppi di 32 canali. Nella FPGApertanto sono state previste due unita di fast-OR la prima delle quali processai segnali provenienti dai primi 32 canali, la seconda processa gli altri 32.Ciascuna unita di fast-OR produce un segnale di trigger se almeno una delle32 linee e attiva. Tale segnale e dimensionato ad una durata di 100 ns.

La lunghezza del segnale designata rappresenta un compromesso tra lanecessita che il segnale sia breve per un miglior timing e il fatto che il segnalenon deve essere troppo breve, in modo tale da essere correttamente trasmesso

80

Figura 4.14: Schema completo del buffer circolare.

ed elaborato. La durata di 100 ns e un valore ragionevole, anche per il fattoche, a causa della lunghezza delle strip dei rivelatori RPC (circa 8 m), isegnali relativi ad un dato evento giungono all’elettronica in una finestratemporale di circa 50 ns.

Nella progettazione della logica di fast-OR sono state valutate due pos-sibilita: costruire il fast-OR in maniera retriggerabile o non retriggerrabile.Tra le due alternative e stata scelta la prima.

Il circuito retriggerabile ha lo svantaggio che se si presentano in ingressodue segnali vicini entro i 100 ns, il segnale in uscita risulta piu lungo rispettoai 100 ns preventivati, di una lunghezza che dipende dal tempo di arrivo deidue segnali. Questo inconveniente non e presente se si opera nella modalitanon retriggerabile, per la quale se il circuito scatta su un dato segnale, essorimane inattivo per i successivi 100 ns e non reagisce ad altri segnali chedovessero arrivare in questa finestra temporale. La questione dell’allunga-mento del segnale di fast-OR e tutto sommato di scarsa importanza perche,dato il basso rate di eventi attesi in fase di acquisizione di raggi cosmici, laprobabilita di occorrenza di due segnali entro 100 ns e molto bassa.

La ragione per cui si e optato per la soluzione retriggerabile e perche essaha un miglior comportamento rispetto al rumore (fig. 4.15). Infatti, se si

81

opera in modalita non retriggerabile, e possibile che il circuito non rispondaa un dato segnale in ingresso perche bloccato dall’arrivo di un segnale spuriodi rumore occorso immediatamente prima. Questo potrebbe risultare nellaperdita di un evento, in quanto la coincidenza di questo segnale di fast-ORcon altri fast-OR generati su altre FEB potrebbe risultare compromessa.Questo problema non e presente se si opera in maniera retriggerabile: inquesto caso se il circuito di fast-OR e scattato a causa del rumore, esso ecomunque in grado di rispondere a un segnale in ingresso che dovesse arrivaresubito dopo, allungando la durata del fast-OR in uscita.

Il fast-OR e generato nella maniera seguente: innanzi tutto i 32 ingressi

Figura 4.15: Comportamento del circuito di fast-OR rispetto al rumore. Nel-la parte superiore dello schema sono rappresentati alcuni segnali di esempio (persemplicita e visualizzata una sola linea di segnale anziche 32, si puo pensare comel’OR dei 32 canali). Sulla linea 2 e presente un impulso spurio dovuto a rumo-re (evidenziato in rosso) che si presenta poco prima dell’evento vero. La partecentrale e inferiore dello schema rappresentano la risposta del circuito di fast-OR rispettivamente nella versione non retriggerabile e retriggerabile. Si vede cheper qusti ipotetici segnali in ingresso nel caso del modo non retriggerabile nonvi e coincidenza tra le linee 2 e 4, mentre il problema non e presente nel modoretriggerabile.

82

del dato mascherato sono messi in OR tra loro. Questo segnale attiva uncontatore alla rovescia che mantiene alta una linea di segnale per il tempovoluto; quando il contatore si azzera, esso si ferma e riporta a zero la lineadi segnale in uscita. Il segnale controllato dal contatore e messo in OR conil segnale proveniente dall’OR di tutti i canali per avere un segnale in uscitail piu rapido possibile.

4.3.6 La logica di time stamp

La logica di time stamp e fondamentale se si vuole che un evento sia lo-calizzato temporalmente nella maniera piu corretta. A tal fine sono statiprevisti una serie di contatori e registri che tengono conto dell’informazionetemporale e la memorizzano al momento opportuno.

Un contatore fine (risoluzione di 10ns) misura il tempo trascorso contandosul clock a 100 MHz. Il riferimento temporale viene fornito dal DAQ attraver-so un segnale denominato CYCLE. All’arrivo del segnale di CYCLE vengonoeffettuate le seguenti due operazioni: viene azzerato il contatore temporalefino e viene incrementato un contatore di cycle. L’unicita del riferimentotemporale e garantita dal fatto che il segnale di CYCLE e sincronizzato conil clock e reso della durata di un periodo di clock all’interno della FPGA.

Il contatore fine e dimensionato a 32 bit, dimensione piu che sufficiente agarantire che esso non vada in overflow nel periodo di tempo tra l’arrivo di duesegnali di CYCLE (il contatore andrebbe in overflow dopo 42, 95 sec, temposuperiore sia al periodo tra due cycle –atteso essere 0, 6 ms–, che al ciclodi spill dell’esperimento –circa 6 sec– ). Il contatore di cycle e dimensionatoanch’esso a 32 bit. L’informazione del numero di cycle e del tempo dall’ultimoCYCLE consentono una completa ricostruzione temporale da parte del DAQ.

Un ulteriore contatore di dimensione 16 bit ha lo scopo di contare ladurata dello spill. Questo contatore di durata dello spill rimane a zero pertutto il tempo in cui il segnale di WRITE BUF e basso; quando WRITE BUFe attivo esso conta sul clock da 100 MHz; al termine del ciclo di scritturaWRITE BUF torna a zero e il valore del contatore viene memorizzato primache quest’ultimo sia azzerato nuovamente.

La soluzione che e stata pensata per la memorizzazione dell’informazionetemporale e della durata dello spill prevede l’utilizzo di una macchina a statifiniti (FSM, Finite State Machine) e di una FIFO a due posizioni.

La macchina a stati e una semplice FSM a due stati. Essa e normalmentenello stato IDLE; quando viene attivato WRITE BUF si porta nello statoRUN; quando WRITE BUF si riporta a zero (alla fine del ciclo di scrittura) laFSM memorizza il valore dei vari contatori di tempo e torna nello stato IDLE.I valori dei vari contatori sono memorizzati in una FIFO a due posizioni

83

in maniera tale che viene mantenuta sempre memoria delle informazioniriguardanti gli ultimi due cicli di scrittura. Un segnale di ABORT provenientedal DAQ porta la FSM nello stato IDLE.

Il funzionamento della FSM e illustrato in figura 4.16.

Figura 4.16: Schema di funzionamento della logica di time stamp.

Pensata in questo modo, questa logica si adatta bene al modo di opera-zione della FEB, per il quale sono previste due fasi di scrittura in ogni ciclo dispill. Alla fine del primo semi-spill i valori dei tre contatori sono memorizzatirispettivamente nei registri time stamp2, cycle stamp2 e spill duration2; allafine del successivo semi-spill i valori memorizzati in precedenza vengonoshiftati nei registri time stamp1, cycle stamp1 e spill duration1 mentre iregistri time stamp2, cycle stamp2 e spill duration2 vengono caricati con inuovi valori. Il processore provvedera durante la fase di inter-spill a leggerequesti registri. Esso utilizzera l’informazione della durata del ciclo di letturaper rileggere il buffer circolare dalla giusta posizione ed inviera al DAQl’informazione di time stamp assieme ai dati.

Per quanto riguarda la fase di acquisizione di raggi cosmici i registritime stamp2 e cycle stamp2 conterranno l’informazione temporale relativaall’istante in cui il DAQ mette basso il segnale di WRITE BUF per richiederei dati alla FEB.

La logica di time stamp, cosı come e stata ideata, e robusta rispettoal tempo di durata del segnale di WRITE BUF. Inoltre essa e facilmentegeneralizzabile nel caso che si vogliano aggiungere ulteriori fasi di scritturaall’interno del ciclo di spill (o anche ridurle a una sola fase di scrittura): inquesto caso sarebbe sufficiente aumentare la profondita della FIFO da dueal nuovo numero di fasi di scrittura previsto.

84

4.4 Il processore

La descrizione del processore e delle sue funzionalita merita un paragrafo aparte.

Un processore e un dispositivo programmabile, ma in maniera diversarispetto a una FPGA: esso esegue un set di istruzioni in maniera sequenziale.Un processore puo essere programmato a fare diverse operazioni: esso legge leistruzioni dalla memoria, legge i dati dalla memoria, puo eseguire operazioniaritmetiche e logiche sui dati, scrive i risultati sulla memoria, puo svolgerefunzioni di controllo.

L’avere un processore dentro la FPGA e utile per realizzare tutte quellefunzionalita che possono essere meglio implementate in maniera “software”.Nel nostro caso il processore e utilizzato per gestire il buffer circolare, se-lezionare i dati da inviare via Ethernet, decodificare e gestire i comandiprovenienti dal DAQ, gestire il protocollo di comunicazione con le periferiche.

Il modello di processore implementato sulla FPGA e basato sull’architet-tura del microcontrollore Intel 8051, modello molto diffuso e per cui esistonodiversi compilatori.

Il modello Verilog del processore (denominato d’ora in avanti V51) estato disegnato presso il Servizio elettronico della Sezione I.N.F.N. di Baried utilizzato in vari altri progetti, per cui esso e ampiamente collaudato everificato.

4.4.1 Il microcontrollore 8051

Il microcontrollore 8051 e un microcontrollore ad 8 bit basato su architetturaHarvard, ossia vi e separazione tra la memoria contenente i dati e quellacontenente le istruzioni.

L’architettura dello 8051 e schematizzata in figura 4.17.Un microcontrollore 8051 integra le funzionalita seguenti [52]:

• CPU a 8 bit

• Registri, accumulatore e unita aritmetico-logica ALU a 8 bit

• bus dati a 8 bit

• Bus indirizzi a 16 bit (spazio indirizzabile complessivo: 216 = 64 kBindipendenti su RAM e ROM)

• RAM interna (memoria dati) - 128 byte

• ROM interna (memoria programma) - 4kB

85

Figura 4.17: Diagramma a blocchi dello 8051. [51]

• Quattro porte di I/O orientate al byte

• UART (porte seriali) di tipo sincrono e asincrono

• Due contatori/timer a 16 bit

• Gestore di interrupt a due livelli di priorita

• Controllo del consumo (modalita di risparmio energetico)

Una caratteristica particolarmente utile dell’8051 e la possibilita di ela-borare direttamente e in modo efficiente variabili booleane a un solo bit, neiregistri e nella RAM.

Un 8051 puo gestire tre tipi di memoria (fig 4.18) [53]:

• Memoria On-Chip (RAM interna e SFR, 128 Byte);

86

• Memoria di programma esterna, 64 kByte;

• RAM esterna (max 64 kByte).

Figura 4.18: Tipi di memoria dello 8051. [54]

In particolare la memoria On-Chip comprende (fig 4.19): RAM interna(banchi di registri, memoria a bit, memoria utente e stack) e area registrispeciali (SFR memory).

4.4.2 La memoria SFR

I registri speciali (SFR, Special Function Register) sono aree di memoriache controllano specifiche funzionalita dell’8051, quali l’accesso alle 32 lineedi I/O, l’accesso in lettura e scrittura sulla porta seriale (e l’impostazionedel suo baud rate), l’accesso ai timer e la configurazione del sistema degliinterrupt.

L’8051 standard e dotato di 21 registri SFR (fig 4.20) che permettono,mediante lettura o modifica del loro contenuto attraverso il programma u-tente, di impostare i diversi modi operativi del microcontrollore.

L’accesso ai registri, ognuno identificato con un proprio nome ed indirizzo,avviene come se questi fossero parte della normale RAM interna: la soladifferenza e che la RAM interna e compresa fra gli indirizzi da 00h a 7Fh,mentre i registri SFR risiedono nell’area dall’indirizzo 80h all’indirizzo FFh.

Anche se questo range di indirizzi offre 128 possibili byte, ci sono solo21 registri SFR nell’8051 standard (mostrati in figura 4.20); tutti gli altriindirizzi sono considerati non validi, e la loro lettura puo produrre un valoreindefinito.

87

Figura 4.19: Organizzazione della memoria On-Chip. [53]

Figura 4.20: Registri SFR dell’8051 standard. I registri in celeste sono poste diI/O; i registri in giallo sono SFR di controllo; i registri in verde sono altri SFR. Iregistri della prima colonna sono accessibili a bit e sono evidenziati in rosso. [54]

88

4.4.3 Implementazione del V51

Il modello Verilog del processore V51 rispetta sostanzialmente l’architetturadel microcontrollore 8051 (fig 4.17), ma con alcune differenze: essendo il V51essenzialmente un modello software (tradotto in hardware mediante softwarefornito dal costruttore della FPGA), e possibile svincolarsi dal modello fisicodell’8051 ed adattarlo alle proprie esigenze.

Ad esempio nel V51 e stata eliminata la UART ed introdotta una in-terfaccia Ethernet; e stato aumentato il numero di ingressi e uscite rispettoalle 32 linee di I/O costituite dalle porte P0, P1, P2 e P3, non presenti nelmodello del V51; e stato introdotto un timer di periodo fisso a 1 ms, perverificare periodicamente il contenuto dei registri di stato; e stato aumentatoda cinque a sette il numero di interrupt gestibili.

Al fine di ampliare le funzionalita del V51, sono state utilizzate quellelocazioni di memoria dell’area SFR normalmente non indirizzabili nello 8051fisico. Il V51 ha in uscita un bus indirizzi a 7 bit (in realta un indirizzodi lettura e uno di scrittura) che consente di indirizzare dei registri esterni(external SFR, XSFR). Esso inoltre ha in uscita una linea di scrittura, unalinea di lettura, un bus di uscita a 8 bit per trasmettere i dati in scrittura,un bus di ingresso ad 8 bit per ricevere i dati in lettura (fig 4.21).

Ad ogni XSFR corrisponde una linea di scrittura. Quando il V51 mette

Figura 4.21: Schema a blocchi del V51.

89

alta la sua linea esterna di scrittura, esso attiva una delle linee di scritturadegli XSFR, a seconda dell’indirizzo puntato. Quando una di queste lineee attive, al successivo fronte positivo del clock viene effettuata l’operazionedi scrittura, che puo essere per esempio la scrittura di un dato a 8 bit sulloXSFR, il quale puo essere per esempio un bus in uscita.

In lettura si utilizza un meccanismo simile: il V51 scrive su un bus inuscita l’indirizzo di lettura; esso viene decodificato da un decoder; vienefornito in ingresso al V51 il dato dallo XSFR indirizzato, il quale puo esserepensato come un bus in ingresso al processore.

4.4.4 Mappatura della memoria SFR

In riferimento alla figura 4.22 descriviamo la funzionalita dei vari registriSFR che sono stati introdotti nel V51:

• La porta P0, non utilizzata nel modello del V51, e stata riconfiguratacome flag in uscita per la polarita del segnale in ingresso (DPOL).

Figura 4.22: Mappatura della memoria SFR del V51. In grigio sono evidenziatigli SFR mantenuti rispetto allo 8051 fisico; in giallo sono evidenziati gli SFRaggiuntivi rispetto allo 8051 fisico.

90

• La porta P1, non utilizzata nel modello del V51, e una porta di I/O peri dispositivi seriali SPI (memoria flash e ADC). Esso e stato posizionatoin una locazione accessibile a bit al fine di facilitare la programmazione.

• Il registro CBDIN/CLR ha una doppia funzione: in lettura legge 8 bitdal buffer circolare; in scrittura attiva la linea di CLEAR verso il buffercircolare.

• Il registro CBREW, se indirizzato in scrittura, attiva la linea REWINDverso il buffer circolare.

• I due registri POSREW contengono il valore a 12 bit di quante posizioniil puntatore di lettura del buffer circolare si deve portare indietrorispetto al puntatore di scrittura in seguito a una operazione di rewind.Essi sono accessibili solo in scrittura.

• I registri a 16 bit SP DUR1 e S DUR2 contengono l’informazione sulladurata degli ultimi due cicli di lettura.

• La porta P2, non utilizzata nel modello del V51, e stata rinominatacome DACWR ed e utilizzata come un bus a 4 bit in uscita. Quandoe messa alta una di queste linee e abilitata la scrittura sul DAC corri-spondente. Esso e un registro accessibile a bit.

• I registri DACTH contengono il valore a 10 bit da scrivere sui DAC.

• I registri a 32 bit TIME STAMP1, TIME STAMP2, CYCLE STAMP1,CYCLE STAMP2 contengono l’informazione di time stamp riguardantegli ultimi due cicli di scrittura.

• Il registro CYCLR se indirizzato in scrittura azzera il contatore di cycle.

• Le quattro locazioni da C0h a C3h sono quattro registri che consentonola gestione della Ethernet.

• Il registro TIMER consente di gestire il timer di periodo fisso di 1ms. Scrivere su questo registro consente di riportare a zero la linea diinterrupt del timer, che scatta ogni volta che questo si azzera.

• Il registro LEDS/TP consente di gestire i LEDs (4 bit in scrittura) etest-points (4 bit in lettura).

• Il registro SWITCH consente al processore di leggere un valore a 12 bitimpostato mediante switch.

91

• Il registro a 48 bit ETHMACADD consente al processore di impostarel’indirizzo MAC della Ethernet.

• Gli 8 registri DATAMASK costituiscono la maschera a 64 bit per isegnali in ingresso.

Per i registri POSREW e DACTH, che occupano due locazioni di memoria,affinche il dato non venga aggiornato parzialmente alla scrittura della partealta e della parte bassa, e stato messo a punto questo sistema: viene effettuataprima la scrittura sulla parte alta, che viene memorizzata in un latch; allascrittura della parte bassa il registro e aggiornato per intero.

4.4.5 Teoria di funzionamento

Si illustra di seguito la maniera in cui deve funzionare il processore una voltaprogrammato.

Al termine delle due fasi di scrittura il DAQ richiede attraverso la Ethernet(la comunicazione avviene attraverso un protocollo UDP) i dati presenti inmemoria sul buffer circolare. Il processore procede a rileggere la memoriadel buffer circolare e contemporaneamente a formare un pacchetto di datida inviare sulla porta Ethernet. Esso calcola di quante posizioni riportareindietro il buffer circolare, sommando il contenuto dei registri SP DUR1e SP DUR2; tale valore viene scritto nel registro POSREW. Tramite unascrittura sul registro CBREW, il puntatore di lettura del buffer circolare eposizionato in corrispondenza dei primi dati scritti. Il processore procede allalettura dei dati 8 bit alla volta leggendo dal registro CBDIN/CLR. Per leggeretutti i dati memorizzati durante il primo semi-spill occorrono [SP DUR1]×8operazioni di lettura.

Al termine di queste operazioni il processore legge le informazioni ditime stamp dai registri TIME STAMP1 e CYCLE STAMP1 e le invia sullaEthernet. Fatto cio, il processore riprende la lettura del buffer circolareleggendo i dati memorizzati nel secondo semi-spill. Questa procedura richiede[SP DUR2]×8 operazioni di lettura, al termine delle quali il processore accodale informazioni di time-stamp, lette dai rispettivi registri TIME STAMP2 eCYCLE STAMP2. Conclusa la trasmissione dei dati il processore resetta ilbuffer circolare effettuando una operazione di scrittura su CBDIN/CLR.

Il funzionamento in modalita di acquisizione di raggi cosmici e simile. Infase di raggi cosmici il buffer circolare e scritto in continuazione. Quandoil DAQ riconosce l’arrivo di un raggio cosmico, esso mette giu la linea diWRITE BUF per interrompere la scrittura e fare richiesta dei dati alla FEB.All’interruzione della scrittura i registri TIME STAMP2 e CYCLE STAMP2

92

vengono caricati con l’informazione temporale dai rispettivi contatori, mentreil registro SP DUR2 non conterra informazione significativa. La rilettura deidati scritti avviene come in precedenza, con la differenza che il numero diposizioni indietro a cui rileggere il dato e fornito dal DAQ tramite la Ethernet.Al termine della trasmissione dei dati viene accodato il time stamp, letto dairegistri TIME STAMP2 e CYCLE STAMP2. La ricezione di un ABORT daparte del DAQ interrompe la trasmissione dei dati (il segnale di ABORT ecollegato al processore a uno degli ingressi di interrupt).

Oltre che a supervisionare alla trasmissione dei dati, il processore dovraessere in grado di rispondere a richieste da parte del DAQ riguardanti lagestione di DAC e ADC o la abilitazione/disabilitazione di un canale iningresso. Il processore dovra inoltre poter riprogrammare la memoria flashdi programmazione della FPGA, acquisendo i nuovi dati di configurazionetramite la Ethernet.

4.5 Domini di clock

Poiche nel nostro progetto della FPGA sono utilizzati due clock a frequenzadifferente (100 MHz e 50 MHz), occorre fare molta attenzione ai segnali chepassano da un dominio di clock all’altro. Il non trattare adeguatamentequesti segnali puo portare a risultati impredicibili.

Un segnale che passa da un dominio di clock all’altro necessita di esseresincronizzato con il clock del dominio di arrivo. Questo e fatto per mezzo diuna serie di buffer. Il circuito utilizzato e quello di figura 4.23a, per il caso dipassaggio dal dominio di clock a 100 MHz a quello a 50 MHz; il circuito difigura 4.23b, invece, e stato utilizzato per i segnali che passano dal dominiodi clock a 50 MHz a quello a 100 MHz.

L’idea dietro questi due circuiti e la seguente: essendo tutta logica sincro-nizzata sul fronte positivo del clock, e possibile campionare un segnale stabilesul fronte negativo del clock a 100 MHz, che tra i due e quello a frequenza piualta; questo segnale intermedio e sincronizzato al dominio di arrivo passandoper un altro flip-flop-D.

Facciamo una breve rassegna di tutti quei segnali che attraversano idomini in una direzione e nell’altra. Per quanto riguarda il buffer circolare,come gia detto, i domini di clock sono ben separati per il fatto di avereutilizzato una RAM dual-port. L’unico segnale che attraversa i due dominie il segnale di CLEAR, il quale e fornito dal processore (clock 50 MHz), maazzera sia l’indirizzo di lettura (clock 50MHz) che quello di scrittura (clock100 MHz). Per questo segnale e stato utilizzato il circuito in figura 4.23(b)per la parte che azzera l’indirizzo di scrittura.

93

(a)

(b)

Figura 4.23: (a) Circuito di sincronizzazione per un segnale passante dal dominiodi clock a 100 MHz a quello a 50 MHz; (b) Circuito di sincronizzazione per unsegnale passante dal dominio di clock a 50 MHz a quello a 100 MHz.

Altri segnali che vanno dalla logica a 50 MHz verso quella a 100 MHzsono:

• il flag della polarita del segnale, impostato mediante il processore;

• il segnale di reset sincrono del contatore di cycle, fornito dal processore;

• il registro di mascheramento dei segnali in ingresso, caricato medianteil processore.

I segnali che fanno il percorso inverso sono i seguenti:

• i registri di durata scrittura spill duration1 e spill duration2, caricatidalla logica a 100 MHz e letti dal processore (clock 50 MHz);

• i registri di time stamp (time stamp1, time stamp2, cycle stamp1, cy-cle stamp2), anch’essi caricati dalla logica a 100 MHz e letti dal pro-cessore.

Per questi registri e stato utilizzato il circuito in figura 4.23(a).

94

Capitolo 5

Test e simulazioni per la FEBdi NESSiE

Il capitolo e diviso in due sezioni. Nella prima si descrivera il test preliminareeffettuato sui ricevitori LVDS; la seconda parte del capitolo illustrera lesimulazioni effettuate sul progetto della FPGA.

5.1 Test del ricevitore LVDS

5.1.1 Motivazioni

Nell’esperimento OPERA il read-out delle strips dei rivelatori RPC avvieneper mezzo di ricevitori LVDS usati come comparatori. Lo standard LVDS estato scelto per l’elettronica di front-end dell’esperimento OPERA per le suecaratteristiche di pregio di elevata velocita e alta immunita al rumore.

In figura 5.1 [30] e mostrato lo stadio di ingresso della scheda di front-enddegli RPC dell’esperimento OPERA.

Il segnale proveniente dalla strip di un RPC e terminato sulla resistenzacaratteristica del cavo di collegamento Rin, di valore 100 Ω. Sono statiutilizzati segnali single-ended (una delle due polarita e a massa). I duecondensatori servono ad isolare il segnale dalla componente continua.

Il componente SN74LVDS386 e un chip contenente 16 ricevitori LVDS.Esso, come anticipato, e utilizzato come comparatore. L’ingresso del rice-vitore LVDS e polarizzato con tensioni di soglia, impostate da una schedadi controllo che imposta i valori di tensione Va e Vb in fig. 5.1. Essi sonostabilizzati mediante i condensatori C1 e C2. L’uscita cambia stato se ilsegnale in ingresso dalla strip e superiore al valore di soglia.

95

Figura 5.1: Schema circuitale dello stadio di ingresso della FEB degli RPCdell’esperimento OPERA [30]

Nell’esperimento NESSiE si e pensato di adottare per lo stadio di ingressodella FEB una soluzione simile a quella adottata nell’esperimento OPERA,basata anch’essa sull’uso di ricevitori LVDS. A tal fine si e verificata lafattibilita del progetto eseguendo dei test sui ricevitori LVDS, avendo presenteche essi dovranno essere operativi per segnali di ingresso attesi dai rivelatoriRPC pari a circa 100 mV .

5.1.2 Le misure

E stato realizzato il circuito in figura 5.2. Si e utilizzato il componente75LVDS390 che e della stessa serie del 75LVDS386 e che rispetto a quest’ulti-mo possiede le stesse caratteristiche elettriche ma ha al suo interno 4 ricevitorianziche 16. Il chip e montato su zoccolo (l’integrato e mostrato in fig. 5.3).

Il segnale in ingresso con la sua massa sono isolati dalla tensione continuacon due condensatori da 100 nF e sono inviati sui pin 1 e 2 del discriminatore.

Le due soglie sono modificabili agendo sulle due resistenze variabili da10kΩ che consentono di modificare i valori di tensione chiamati Va e Vb infigura 5.1 nel range 0 ÷ 3, 3 V . Il massimo sbilanciamento possibile si haquando Va = 3, 3 V e Vb e a massa (o viceversa) ed e pari a 3, 3V ·5kΩ/35kΩ =471mV ; il minimo sbilanciamento si ha quando Va = Vb.

I due pin 1 e 2 (fig. 5.3) sono facilmente accessibili all’esterno per consentireuna rapida lettura della soglia nominale per mezzo di un tester digitale. Ilsegnale in uscita e prelevato sul pin 15 dell’integrato e inviato all’oscilloscopio.In fig. 5.3 e mostrato lo schema completo dell’apparato di misura.

L’oscilloscopio e un oscilloscopio digitale LeCroy WaveRunner 104Xi,1GHz di banda, rate di campionamento massimo 10 GS/s.

96

Figura 5.2: Schema circuitale del circuito usato per il test del 75LVDS390

Un generatore di impulsi e stato utilizzato per simulare il segnale diun RPC. Lo strumento che e stato utilizzato e un Agilent 81110A pulsegenerator. Esso e stato impostato per fornire impulsi con frequenza di 1kHzdi forma trapezoidale con leading edge di 2 ns, larghezza di 10 ns, trailingedge impostata uguale al leading edge e altezza variabile. Il generatore diimpulsi fornisce inoltre un segnale di trigger sincronizzato con l’istante diformazione del segnale di impulso in uscita; esso e stato usato come triggerper l’oscilloscopio.

La larghezza di impulso di 10 ns e stata scelta in modo tale da simulareal meglio un segnale proveniente da un rivelatore RPC, i quali tipicamenteforniscono segnali molto rapidi e di breve durata.

Poiche il generatore non era in grado di fornire segnali troppo piccoli(inferiori a ∼ 75 mV ), e stato utilizzato un attenuatore da 20 dB (nonmostrato in figura) per attenuare il segnale in uscita dal generatore di impulsidi un fattore 10.

Le connessioni tra i vari dispositivi sono state realizzate con connettoriBNC di impedenza caratteristica di 50 Ω. Il fatto che la resistenza di

97

Figura 5.3: Apparato di misura per il test del 75LVDS390, schema completo

ingresso del circuito fosse diversa (110 Ω) dalla impedenza caratteristica delcavo utilizzato ha comportato qualche problema di riflessione del segnale.Nonostante cio le misure effettuate sono risultate sufficientemente accurateallo scopo di verificare la linearita del discriminatore LVDS e di verificareche i segnali logici in uscita da esso siano compatibili le specifiche di ingressodella FPGA.

Sono state effettuate misure sia per segnali positivi che per segnali negativi.Per segnali positivi e stata impostata una soglia negativa. In questa confi-gurazione l’uscita e normalmente a zero in assenza di segnale; essa scatta a3V quando il segnale in ingresso supera la soglia.

La figura 5.4(a) e un esempio di segnale positivo. Le oscillazioni dirimbalzo sono presumibilmente dovute al disadattamento di impedenza. Emostrato anche il segnale di trigger dell’oscilloscopio (in rosso).

Per segnali negativi, al contrario, la soglia e positiva e l’uscita e normal-mente al livello alto di tensione e va a zero quando il segnale supera la soglia.Un esempio di uscita con segnale negativo e in fig. 5.4(b).

Per entrambi i due tipi di segnali, agendo con un cacciavite sui duetrimmer, sono stati impostati diversi valori della soglia nominale a partireda circa 50 mV fino a circa 500 mV . In corrispondenza di ogni valore si emisurata la soglia effettiva.

98

(a)

(b)

Figura 5.4: Segnali di uscita visualizzati sulla schermata dell’oscilloscopio LeCroyWaveRunner 104Xi. (a) canale C2, rosso: segnale di trigger; canale C3, blu: uscitain risposta a segnale positivo. (b) canale C2, rosso: segnale di trigger; canale C3,blu: uscita in risposta a segnale negativo.

99

Il metodo di misura e di seguito illustrato. Idealmente si dovrebbe avereuna commutazione da livello basso a livello alto non appena il segnale iningresso supera, anche di poco il valore di soglia effettivo. In realta al segnalee sempre inevitabilmente sovrapposto del rumore elettronico, per cui quandoil segnale in ingresso e prossimo alla soglia l’uscita oscilla casualmente trai due stati logici. Essendo il rumore elettronico distribuito statisticamentecome una gaussiana, il valore della soglia effettivo si puo valutare come ilvalore dell’altezza del segnale in ingresso per cui l’uscita e nel 50% dei casinello stato L e nel 50% dei casi nello stato H.

Non avendo a disposizione una maniera immediata per contare diretta-mente gli impulsi, si e adottato un metodo di misura indiretto. Si e osservatoche lavorando con impulsi positivi, il segnale in uscita era normalmente a 0Ve rimbalzava a circa 4V quando l’ingresso superava la soglia. Tra le variemisure automatiche realizzabili con l’oscilloscopio LeCroy WaveRunner cisono le misure di massimo e minimo del segnale. Esso per queste misurefornisce oltre al valore istantaneo anche media e deviazione standard su piumisure. E stato possibile caratterizzare la soglia effettiva variando l’ampiezzadell’impulso in ingresso e guardando al valor medio del massimo: se oltre 4V(l’uscita sul fronte di salita si porta per alcuni istanti a un valore superioreai 3, 3 V nominali, a causa dei rimbalzi da disadattamento di impedenza)significa che il circuito risponde a tutti gli impulsi in ingresso e si e ben al disopra della soglia; se esso e intorno a 2 V (intermedio tra 0 V e 4 V) significache il circuito risponde la meta delle volte e quindi si e in prossimita dellasoglia.

In tabella 5.1 sono riportati i risultati delle misure. E da notare che nelprendere queste misure non si e tenuto conto della prescrizione di mantenereil modo comune a 1, 2 V in quando secondo quanto scritto sul datasheet delricevitore LVDS esso continua a dare i livelli corretti di tensione fintantocheil modo comune e in un range di 1V attorno al livello tipico per lo standardLVDS.

Si e proceduto alla stessa maniera per su segnali negativi. In questo casoil livello di tensione di uscita in assenza di impulsi e di circa 3 V, scatta aun minimo di circa -1 V quando il circuito risponde ad un impulso soprasoglia (il motivo per cui l’uscita si porta a una tensione negativa sul frontedi discesa e sempre dovuto ai rimbalzi da disadattamento di impedenza). Inquesto caso per determinare la soglia effettiva si e utilizzata la misura diminimo anziche di massimo, assumendo che si e in prossimita della sogliaquando il valor medio del minimo e pari a circa 1 V (intermedio tra 3 V e-1 V). Le misure per segnali negativi sono riportate in tab. 5.2.

Si osserva qui che il circuito risponde anche con impulsi di ampiezzainferiore alla soglia. Questo puo essere dovuto al fatto che, a causa del

100

V+ (V) V- (V) ∆V (mV) Vth (mV) Voth (mV)0,897 0,950 52 75,5 821,000 1,090 89 119 1231,220 1,400 180 217 2221,565 1,850 284 325 3301,363 1,749 385 435 4421,558 2,021 462 516 523

Tabella 5.1: Risultato delle misure di soglia effettiva su segnali positivi. In tabellaV+ e V- sono i valori di tensione DC misurati con il tester digitale nei puntiTestPoint+ e TestPoint- nel circuito in fig. 5.2; ∆V e la differenza di potenzialemisurata tra i due punti suddetti ( soglia nominale ); Vth e la soglia effettiva,misurata come descritto nel testo; Voth e il valore dell’ampiezza degli impulsi iningresso oltre il quale l’uscita non manifesta comportamento rumoroso.

V+ (V) V- (V) ∆V (mV) Vth (mV) Voth (mV)2,000 1,950 50 32 351,800 1,700 100 96 1101,800 1,650 144 137 1411,800 1,594 207 205 2081,699 1,452 247 247 2511,691 1,395 295 296 3001,693 1,312 380 387 3912,020 1,560 462 473 478

Tabella 5.2: Risultato delle misure di soglia effettiva su segnali negativi. Ilsignificato dei simboli adottati e lo stesso che per la tabella 5.1.

disadattamento di impedenza, il segnale di tensione all’ingresso del circuito emaggiore dell’ampiezza dell’impulso segnata sul pulse generator. Nonostantecio dal plot della soglia misurata in funzione della soglia nominale (fig. 5.5)si nota una buona linearita.

Questo plot si puo confrontare con il plot (fig. 5.6) contenuto nell’articolodi Dusini [30] in cui sono state fatte misure molto fitte nel range di valoricompresi tra±100 mV , dove il costruttore del ricevitore LVDS non garantisceil corretto funzionamento del dispositivo.

Infine si e voluto misurare il tempo di propagazione attraverso il dispositivoe il jitter temporale. Si e impostato l’oscilloscopio in modalita persistenza e sie impostata la misura automatica di delay, che misura il ritardo temporale delfronte di salita del segnale rispetto al trigger. Si osserva un jitter temporale

101

Figura 5.5: Soglia effettiva in funzione della soglia nominale. I valori di sogliasono dati in mV. Le soglie sono assunte di segno positivo per segnali negativi enegative per segnali positivi.

Figura 5.6: Soglia effettiva in funzione della soglia nominale. Il riquadro mostrauno zoom del grafico per i valori di soglia compresi tra ±100mV . [30]

102

(a)

(b)

Figura 5.7: Segnali visualizzati sulla schermata dell’oscilloscopio LeCroy Wave-Runner 104Xi in modalita persistenza. Sul canale C2 e campionato il segnale ditrigger; sul canale C3 l’uscita al circuito in risposta a segnale positivo. La scalatemporale e di 500 ps/div; il rate di campionamento e di 10 GS/s.

103

(sdev in fig. 5.7) inferiore a 50 ps, valore molto basso. Il ritardo di 23 ns infig. 5.7(a) e dovuto alla diversa lunghezza dei cavi utilizzati per le connessioni.Per una significativa misura del tempo di propagazione si e ritardato ilsegnale di trigger con un cavo da 20 ns in maniera tale da rendere minimolo sfasamento temporale tra il segnale di trigger e il segnale in ingresso alcircuito (misurato circa 300 ps). Il valore di circa 3 ns letto sull’oscilloscopioe consistente con quanto indicato sul datasheet del dispositivo che fornisceun tPLH tipico di 2, 5 ns.

5.2 Simulazione della FPGA

Sul progetto della FPGA sono state eseguite diverse simulazioni al fine diverificare che esso funzionasse correttamente.

In una fase preliminare sono state eseguite delle simulazioni sui singolimoduli Verilog che compongono il progetto. Per il progetto della FPGAsono stati scritti diversi moduli Verilog, di cui si danno degli esempi inappendice C. Per ogni modulo (buffer circolare, fast-OR, ecc.) e statoelaborato un testbench in cui il modulo sotto verifica era testato con deglistimoli in ingresso che simulassero il modo di funzionamento del modulo nelprogetto finale. Nella simulazione con il software NC-Verilog i segnali sonostate memorizzati per poi essere visionati con il visualizzatore di forme d’ondaSimVision e quindi sottoposti a verifica. Ad esempio, per quanto riguarda ilmodulo di fast-OR, e stato verificato che per segnali in ingresso della duratadi 30 ns si avesse in uscita un segnale della durata richiesta di 100 ns.

Una volta definito il progetto della FPGA con tutti i moduli, esso estato simulato nel suo complesso. In una prima fase e stata eseguita unasimulazione comportamentale del modello Verilog del progetto al fine diverificare che i singoli moduli Verilog interagissero tra loro come voluto. Estato messo a punto un testbench che simulasse i 64 segnali discriminati iningresso alla FPGA, il clock da 50 MHz e i segnali di controllo WRITE BUF,CYCLE e ABORT (fig. 5.8(a)). Gli stimoli in ingresso sono stati implementatiin modo da rispecchiare al meglio i segnali attesi nell’applicazione reale dellaFEB di NESSiE (le tempistiche dei segnali sono leggermente diverse da quellereali al fine di avere un tempo di simulazione ragionevole).

La linea WRITE BUF viene attivata per 10 µs e poi per altri 10 µs dopouna breve pausa, in maniera da simulare un ciclo di scrittura dei dati. Esso epreceduto da un impulso sulla linea CYCLE. A questa fase nell’applicazionereale della FEB segue l’invio dei dati al DAQ, terminato il quale il DAQ puomettere la FEB in modalita di acquisizione di raggi cosmici tenendo alta lalinea di WRITE BUF (ciclo lungo di WRITE BUF in fig. 5.8(a)). L’invio di

104

un impulso sulla linea ABORT induce l’interruzione di qualsiasi operazionesui dati e puo essere usato dal DAQ per preparare la FEB all’acquisizionedei dati del burst in caso fosse in modalita di acquisizione di raggi cosmici.

In corrispondenza degli “spill” da 10 µs (WRITE BUF in stato High)sono inviati alcuni segnali di test ai 64 ingressi. Alcuni impulsi sono generatiin maniera pseudo-casuale in modo da simulare la presenza di rumore/segnalida raggi cosmici. A un certo punto della simulazione la polarita dei segnalidi input e invertita al fine di verificare il funzionamento del sistema sia persegnali positivi che per segnali negativi.

Le figure 5.8(b) e 5.8(c) mostrano a una scala temporale piu ristrettaalcuni segnali di input rispettivamente positivi e negativi. Tali segnali sonoassunti provenire dai discriminatori LVDS, per cui essi sono segnali logicidi una durata di 10 ÷ 20 ns. Le figure mostrano inoltre le rispettive uscitefast-OR. Nella figura 5.8(b) i due segnali sulle linee 4 e 62 danno luogo adue fast-OR indipendenti della durata di 100 ns in quanto essi non appar-tengono allo stesso gruppo di 32 canali che danno luogo ai due fast-OR; nellafigura 5.8(c) i due segnali sulle linee 1 e 22, in quanto separati da un tempoinferiore ai 100 ns, danno luogo a un fast-OR di durata piu lunga (il fast-OR eimplementato in maniera retriggerabile). Il tempo di occorrenza del fast-ORrispetto al segnale in ingresso e molto breve e varia tra 0 ÷ 10 ns (nellasimulazione comportamentale il segnale di fast-OR sale sul fronte positivodel clock a 100 MHz immediatamente successivo all’arrivo del segnale).

Nella fase di simulazione comportamentale si e voluto verificare in parti-colare il funzionamento nel loro complesso di logica di formazione del segnale,buffer circolare, fast-OR e logica di time-stamp, dando per scontato il correttofunzionamento di processore e del controller ethernet, gia usati e sottopostia verifica in precedenti progetti. Le simulazioni di buffer circolare e logica ditime-stamp sono descritte nei paragrafi seguenti, mentre per quanto riguardala logica di formazione del segnale e stata gia mostrata una simulazionepost-implementazione in figura 4.11. Al fine di verificare al meglio buffercircolare e logica di time-stamp e stato introdotto nella simulazione un ulte-riore modulo di test che simulasse il comportamento del processore. Fonda-mentalmente questo modulo acquisisce dai registri di time-stamp l’informa-zione sulla durata dei due “spill” e la utilizza per rileggere i dati memorizzatisul buffer circolare agendo sui controlli REWIND e READ. Il modulo verificainoltre durante la rilettura del buffer circolare che i segnali di test siano statimemorizzati correttamente e stampa a video un messaggio di errore nel casotrovasse una incongruenza.

105

(a)

(b)

(c)

Fig

ura

5.8:

Seg

nal

iin

ingr

esso

per

lasi

mu

lazi

one

del

laF

PG

Ae

usc

ite

fast

-OR

.(b

)D

etta

gli

od

eise

gn

ali

di

fast

-OR

per

du

ese

gnal

ip

osit

ivi.

(c)

Det

tagl

iod

eise

gnal

id

ifa

st-O

Rp

erd

ue

segn

ali

neg

ativ

i.

106

5.2.1 Simulazione del buffer circolare

La simulazione in figura 5.9 mostra il funzionamento del buffer circolare.La figura 5.9 e mostrato come alcuni segnali di test sono memorizzati nellamemoria del buffer. I segnali sono forniti in maniera tale da rispecchiare ilcomportamento reale dei rivelatori RPC, per cui ci si aspetta che un datoevento interessi piu strip vicine (cluster). Sulle linee di ingresso sono simulatidue cluster, il primo centrato sulla linea 5, il secondo sulla 14. Il segnale diWRITE BUF e tenuto alto per 100 ns in modo da registrare i segnali fornitinelle prime 10 locazioni di memoria.

I segnali in ingresso prima di essere memorizzati nella memoria del buffervengono formati a 30 ns. I segnali formati a 30 ns sono mostrati in figuradi seguito rispetto ai segnali in input. I segnali in uscita dal circuito diformazione vengono memorizzati sul buffer circolare sul fronte di salita delclock a 100 MHz. Il buffer circolare non e pilotato direttamente dal segnaleesterno WRITE BUF, ma dalla sua versione sincronizzata con il clock a100 MHz, indicata in figura come write. Quando write e alto i 64 segnali inuscita dai rispettivi circuiti di formazione vengono memorizzati nella memoria4096× 64b del buffer circolare. Essa e indirizzata da due puntatori a 12 bit,Wadd per l’indirizzo di scrittura e Radd per l’indirizzo di lettura (la memoriadel buffer e implementata come una RAM dual-port). In corrispondenza delsegnale write si vede come ad ogni ciclo di clock il puntatore di scrittura delbuffer circolare Wadd sia incrementato di una unita in modo da scrivere ilsegnale formato su locazioni di memoria successive.

Il contenuto della memoria del buffer dopo la scrittura dei dati e mostratoin figura 5.10 dove viene mostrato a una scala temporale piu grande ilprocesso di rilettura del buffer circolare. Tramite il modulo del processoresi imposta a 10 il bus posRew e si invia un segnale di REWIND al buffer alfine di posizionare il puntatore di lettura Radd 10 posizioni indietro rispettoa quello di scrittura; vengono quindi inviate una serie di richieste di letturasulla linea XSFRrd. Il buffer circolare rende dispnibile al processore i datimemorizzati 8 bit per volta; ogni 8 richieste di lettura viene incrementato ilpuntatore Radd in modo da leggere dalla locazione di memoria successiva.

107

Fig

ura

5.9:

Sim

ula

zion

edel

lasc

ritt

ura

sul

bu

ffer

circ

ola

re.

108

Fig

ura

5.10

:S

imu

lazi

one

del

lari

lett

ura

dal

bu

ffer

circ

ola

re.

109

5.2.2 Simulazione della logica di time-stamp

La figura 5.11(a) illustra il funzionamento della logica di time-stamp. Inessa sono mostrati i segnali esterni di WRITE BUF e di CYCLE, i contatoridi tempo, di “cycle” e durata spill e gli associati registri di time stampper il primo spill e per il secondo spill. Il contatore di tempo (in figuratimeCounter) e incrementato in maniera continua sul clock a 100 MHz e siazzera quando arriva un segnale di cycle; il contatore di cycle (cycleCounter)conta gli impulsi di cycle; il contatore di durata spill (in figura spillCounter)conta il numero di clock per cui il segnale WRITE BUF e mantenuto alto.La scala temporale di figura 5.11(a) non consente di apprezzare la variazionedei contatori di tempo e di durata spill, per cui e fornita in figura 5.11(b)una visualizzazione a una scala piu ristretta, presa a un tempo nelle vicinanzedella chiusura del secondo spill.

La figura 5.11 fa vedere come alla chiusura del primo spill i registri cycle-Stamp2, timeStamp2 e spillStamp2 vengano caricati rispettivamente con ilcontenuto dei rispettivi contatori cycleCounter, timeCounter e spillCounter.Alla chiusura del secondo spill il contenuto dei registri cycleStamp2, time-Stamp2 e spillStamp2 viene trasferito sui registri cycleStamp1, timeStamp1e spillStamp1 e i primi vengono caricati col contenuto dei rispettivi contatoriassociati. Si puo osservare come al termine dei due spill i registri cycleStamp1,timeStamp1 e spillStamp1 contengono le informazioni di time stamp relativeal primo spill e i registri cycleStamp2, timeStamp2 e spillStamp2 contengonole analoghe informazioni riguardanti il secondo spill. E stato verificato che iregistri di time-stamp contenessero il valore corretto. Ad esempio per quantoriguarda il primo spill, esso e stato aperto al tempo di 2000 ns e chiuso a11990 ns ed e stato fornito un impulso di cycle a 1010 ns; per cui i registri cy-cleStamp1, timeStamp1 e spillStamp1 una volta concluso il ciclo di scritturacontengono rispettivamente i valori: 1 che sta ad indicare che e stato fornitoun solo impulso di cycle prima dello spill, 1098 che rappresenta il tempoespresso in multipli di 10 ns tra il cycle e la chiusura dello spill (i valori sonoindicati in figura in notazione esadecimale), e 999 che indica una durata dispill di 9990 ns.

110

(a)

(b)

Fig

ura

5.11

:(a

)S

imu

lazi

one

del

lalo

gica

di

tim

e-st

amp

.(b

)Z

oom

del

lasi

mu

lazi

on

esu

lse

con

do

fronte

di

dis

cesa

di

WR

ITE

BU

F.

111

5.2.3 Simulazione Post Place and Route

Una volta effettuata la sintesi e l’implementazione del progetto della FPGA,si e eseguita la simulazione del modello Post Place and Route della FPGA,comprensivo dei ritardi reali del circuito. Nella simulazione Post-PAR e piudifficile verificare il funzionamento delle varie unita logiche nella FPGA inquanto la gerarchia dei moduli Verilog del progetto non viene mantenutanel processo di sintesi; segnali interni e registri, inoltre, possono risultareridefiniti nel modello Post-Route con nomi diversi da quelli assegnati neifile sorgenti. Nella simulazione del modello Post-PAR gli unici segnali chepossono essere sottoposti a verifica sono quelli in uscita dalla FPGA. Tral’altro questo e il motivo per cui nell’implementazione dello I/O del processoree stato configurato il registro SFR LED/TP, il quale fornendo delle linee dioutput dal processore in uscita alla FPGA, consente di verificare il funziona-mento del processore nella simulazione Post-PAR.

Ad esempio la figura 5.12 mostra una simulazione Post-PAR delle uscitefast-OR effettuata col simulatore ISim, simulatore di linguaggio Verilog inte-grato nell’ambiente ISE. In figura sono mostrati gli stessi segnali di fig. 5.8 inmaniera tale da mettere in evidenza il fatto che in quest’ultima simulazione,la quale tiene conto dei ritardi reali del circuito, il tempo di salita dei segnalidi fast-OR sono differenti rispetto alla simulazione comportamentale e lasalita e la discesa del fast-OR non occorrono immediatamente dopo il frontepositivo del clock.

Figura 5.12: Simulazione Post Place and Route delle uscite fast-OR.

Con la simulazione Post-PAR si e voluto verificare che il circuito finaledella FPGA si comportasse come richiesto. In particolare si e testato ilfunzionamento della Ethernet simulando l’invio e la ricezione di dati sotto-forma di pacchetti e verificando che i dati in uscita dalla FPGA verso il chipethernet esterno avessero il giusto timing, come richiesto dalle specifiche diquesto dispositivo.

112

5.2.4 Verifica della FPGA con input simulati

Come verifica finale del progetto della FPGA e stata eseguita una simulazionein cui sono stati forniti in ingresso dei segnali simulati mediante metodoMonte Carlo. Scopo di questa simulazione e quello di fornire una ulterioreprova della validita della logica implementata sulla FPGA, mostrando chee possibile ricostruire in maniera ottimale una certa distribuzione di “hit”forniti in ingresso.

I dati per la simulazione sono stati ottenuti generando la produzionedi particelle cariche nel mezzo attivo, aventi una distribuzione in impulsosimile a quella attesa per l’eperimento in preparazione, e seguendone latraiettoria fino alla interazione col rivelatore. I dati relativi all’interazione colrivelatore sono ricavati come strip accesa e tempo di occorrenza del segnalee memorizzati in un file di output; questo file e fornito in input al simulatoredi linguaggio Verilog. La simulazione Monte Carlo tiene inoltre conto deltempo di propagazione del segnale elettrico lungo le strip (lunghe circa 8 m).E stato prodotto un campione di dati corrispondente a due “spill” da 10 µs,ognuno dei quali contenente circa 50 eventi (piu o meno la quantita di eventiattesa nello spettrometro Near).

Nella simulazione Verilog sono stati forniti due segnali di write buf da10 µs, il primo che inizia al tempo 152 ns, il secondo a 14808 ns; in corri-spondenza di questi segnali sono stati forniti gli input come prescritto dallasimulazione Monte Carlo, con una risoluzione sul tempo pari ad 1 ns. Idati sono riletti dal buffer circolare mediante un modulo di test che simula ilcomportamento del processore, simile a quello descritto in precedenza. Essoscrive su un file di output il time-stamp relativo al primo spill; legge dallamemoria del buffer per un numero di locazioni dato dal valore del registrodi durata dello spill scrivendo in output il dato a 64 bit; le stesse operazionisono ripetute per il secondo spill. Il risultato e che i dati letti dal buffer sonoresi disponibili su un file di output come una matrice di zeri e di uno avente64 colonne e un numero di righe dipendente da quanto tempo e stato tenutoalto il segnale di write buf.

Il file di output della simulazione Verilog e stato elaborato mediante unamacro di ROOT avente la funzione di riconoscere gli hit nei dati del buffere di confrontare gli hit ricostruiti con i dati forniti in input alla simulazione.Gli hit sono stati trovati cercando per ogni canale (le colonne della matricedi dati) sequenze di tre “1”. L’informazione di time-stamp permette diricostruire il tempo di inizio della scrittura sul buffer con una risoluzionedi 10 ns, ad esempio 160 ns per il primo spill. A questo punto un segnaleche arriva in ingresso ad esempio tra 160 e 170 ns viene memorizzato contre “1” nelle prime tre righe nella matrice dei dati in output (nella colonna

113

corrispondente alla strip colpita); a tale segnale dovrebbe essere assegnatoun tempo di 165 ns, e cosı via. Sulla base di queste considerazioni il tempodegli hit ricostruiti e stato calcolato come:

trec = tspill + n× 10 ns+ 5 ns

dove tspill e il tempo di inizio della scrittura sul buffer e n e il numero dellariga della matrice di dati in cui e stato individuato l’hit. Il tempo tspill a suavolta e stato calcolato come

tspill = tcycle + (timeStamp− spillStamp)× 10 ns+ 5 ns

dove tcycle e il tempo a cui viene inviato l’impulso di cycle alla FPGA (assuntonoto); timeStamp e il valore letto dal registro di time stamp; spillStamp e ilvalore letto dal registro di durata spill. L’errore su trec e dato da

ε = 10 ns/√

12 ·√

2 ∼ 4 ns

che deriva dalla somma in quadratura dell’incertezza relativa al tempo diarrivo del segnale di cycle rispetto al fronte positivo del clock di periodo10 ns (la quale influisce su tspill) e dell’incertezza relativa al tempo di arrivodei segnali in input rispetto al clock.

La figura 5.13(a) mostra la distribuzione temporale degli hit ricostruitisovrapposta alla distribuzione degli hit forniti in ingresso. In figura sonoevidenziate le regioni relative ai due spill e l’area su cui viene fatto lo zoom difigura 5.13(b). Dalla figura 5.13(a) si vede che tutti i segnali posti in ingressosono stati riconosciuti e se si guarda a una scala di 100 ns (fig. 5.13(b)) sivede che essi sono in effetti ricostruiti entro 10 ns. Dalla figura 5.13(c), cherappresenta un istogramma delle differenze tra il tempo degli hit ricostruitie il tempo fornito per gli hit simulati, si vede che esso e compreso tra ±5 nsper tutti gli hit.

Possiamo concludere questo capitolo affermando che i test effettuati suiricevitori LVDS e le simulazioni sul progetto della FPGA indicano che laFEB possa funzionare come richiesto. Naturalmente una parola definitivariguardo il perfetto funzionamento della FEB puo essere data solo dopo itest di laboratorio sulla FEB ultimata.

114

(a)

(b) (c)

Figura 5.13: (a) Distribuzione tempo/strip degli hit in input alla simulazione edegli hit ricostruiti dai dati scritti sul buffer. (b) Zoom tra 300 ÷ 400 ns. (c)Distribuzione delle differenze dei tempi di hit ricostruiti e simulati.

115

Conclusioni

In questo lavoro di tesi si e studiata l’elettronica di front-end per gli RPCdell’esperimento NESSiE dedicato alla fisica del neutrino. Il risultato e statoil progetto e la realizzazione di un prototipo di una scheda elettronica difront-end (FEB). Tale scheda e in grado di effettuare una lettura digitaledi rivelatori RPC operanti in modo streamer, permettendo il tracciamentodei muoni, prodotti nelle interazioni di neutrino, con risoluzione sufficiente adeterminarne il momento e la carica per energie > 1÷ 2 GeV.

Lo sviluppo della scheda di front-end (FEB) di NESSiE ha richiestodapprima il test del funzionamento di ricevitori LVDS, utilizzati come di-scriminatori, per la digitalizzazione dei segnali analogici provenienti dagliRPC. Successivamente il progetto e proseguito con lo sviluppo del firmwareper una FPGA, che rappresenta il cuore della FEB, nonche la parte principaledel lavoro fatto per questa tesi di laurea. Attraverso questo lavoro, ciascunascheda FEB immagazzina in modo continuo, con una risoluzione di 10 ns, idati provenienti dagli RPC associandoli ad un time stamp. Inoltre ciascunmodulo FEB appare come un nodo Ethernet per il sistema di acquisizionedati dell’esperimento.

Allo scopo di verificare il funzionamento della FPGA, si e prodotto unesteso lavoro di simulazione dei vari moduli che compongono la FPGA,nonche del suo funzionamento post implementazione. L’assemblaggio delprototipo della scheda e stato completato, a cura di una ditta specializzata,e consegnato nel momento in cui viene completata la stesura di questa tesi(fig. 5.14). Nel prossimo futuro, dopo i test di laboratorio, una piccolaproduzione di tali schede verra testata in connessione ad RPC, con striplunghe 8 metri, disponibili presso i Laboratori Nazionali del Gran Sasso.Il progetto dovra essere completato con alcuni moduli per la gestione deltrigger e la distribuzione dei segnali. Per l’esperimento NESSiE e previstauna produzione di circa 600 di tali schede FEB.

116

Figura 5.14: Foto del primo prototipo della FEB di NESSiE.

117

Appendice A

Il Verilog

A.1 Gli hardware description languages

Il linguaggio Verilog [55, 56] e un Hardware Description Language (HDL).Un linguaggio HDL e un linguaggio usato per descrivere i sistemi digitali.

I sistemi digitali possono essere molto complessi: possono consistere dimilioni di transistor o porte logiche. La complessita degli hardware e cresciutanegli ultimi decenni cosı tanto che la pratica del disegno schematico con leporte logiche le loro interconnessioni e andata in disuso, perche non piudi grande aiuto a comprendere la funzionalita di un dato progetto. Findagli anni ‘70 gli ingegneri elettronici ed informatici sono passati agli HDL.Essi consentono ai progettisti hardware di ideare i loro disegni per mezzo dimodelli comportamentali, declinando i dettagli dell’implementazione a unostadio piu avanzato del progetto. Una rappresentazione astratta aiuta ilprogettista a valutare diverse soluzioni architetturali mediante simulazione.

Per mezzo di un HDL e possibile descrivere un sistema digitale a diversilivelli. Per esempio un HDL puo descrivere il layout di fili, resistori e transistorsu un circuito integrato (switch level); puo descrivere porte logiche e flipflop in un sistema digitale (gate level); o ancora, a un livello piu elevato,descrive registri e il trasferimento di vettori di informazione tra registri(Register Transfer Level, RTL). Sebbene il Verilog supporti tutti e tre questilivelli, nella progettazione ci si concentra in genere sul livello RTL. Esistonosoftware che “compilano” programmi in notazione Verilog al livello di circuiticonsistenti in porte logiche e flip flop. Altri tools sono in grado di tradurreprogrammi scritti in Verilog nelle maschere per i circuiti integrati VLSI (VeryLarge Scale Integration). Non da ultimo gli HDL sono i linguaggi che sonocompresi dai programmi per la sintesi delle FPGA, come ISE per le FPGAdella Xilinx e Quartus per le FPGA della Altera.

118

A.2 Il linguaggio Verilog

Verilog e uno dei due piu diffusi HDL usato dai progettisti hardware (l’altroe il VHDL). VHDL e uno standard IEEE dal 1987; Verilog lo e dal 1995.

Il linguaggio Verilog fu introdotto nel 1985 dalla Gateway Design SystemCorporation, divenuta in seguito parte della Cadence Design Systems. Nelmaggio 1990, con la formazione dell’Open Verilog International (OVI), VerilogHDL diventa un linguaggio di pubblico dominio. Nel 1995 il linguaggioVerilog diventa uno standard IEEE (Std.1364-1995)[57].

A.3 La sintassi del Verilog

Il linguaggio Verilog ha una sintassi molto simile a quella del C.

Il linguaggio Verilog descrive un sistema digitale come una serie di moduli,ognuno dei quali e di solito scritto su un file separato (l’estensione dei sorgentiVerilog e “.v”). Essi possono rappresentare pezzi di hardware, ad esempiouna porta logica, un multiplexer, un microprocessore, ecc. Ciascun modulopossiede una interfaccia verso gli altri moduli. La struttura di un modulo ela seguente:

module <nome modulo> (<port list>);<dichiarazioni><module items>endmodule

Un modulo e introdotto dalla parola chiave module seguita dall’identi-ficativo del modulo e dalla lista di ingressi e uscite. Nel corpo del modulosi trovano le dichiarazioni degli oggetti interni al modulo (registri, memorie,wires), costrutti initial e always, istanziazioni di altri moduli. Un modulotermina con la parola chiave endmodule.

Per invocare l’istanza di un modulo la sintassi generale e la seguente:

<nome modulo><lista parametri><nome istanza> (<port list>);

Il seguente esempio di codice Verilog e un contatore modulo 10 conreset sincrono e asincrono. Ad ogni fronte positivo di clock il contatoree incrementato se l’enable in ingresso e a 1. L’enable in uscita diventa 1quando e attivo l’enable in ingresso e il conteggio ha raggiunto la cifra 9.Ingresso e uscita di enable consentono di mettere piu unita in cascata al finedi realizzare un contatore di piu cifre decimali.

119

Source A.1: counter.v

‘timescale 1ns/100ps

module COUNTER( enIn , CLK , RESET, sRST, BCD , enOut );

input enIn , CLK, RESET, sRST;

output [3:0] BCD;

output enOut;

reg [3:0] BCD;

always @( posedge CLK or posedge RESET )

begin

if ( RESET )

BCD <= 0;

else if ( sRST )

BCD <= 0;

else if ( enIn )

BCD <= (BCD==9 )? 0 : BCD+1;

end

assign enOut= ( BCD==9 && enIn )? 1 :0;

endmodule

A.3.1 Registri e wires

L’esempio precedente comincia con la dicitura ‘timescale 1ns/100ps. Questadirettiva stabilisce l’unita temporale (1ns), seguita dalla precisione usata percalcolare le espressioni di tempo (100ps). Nel linguaggio Verilog il simbolo“#” seguito da un valore numerico introduce un delay temporale. Ad esempiola dicitura #2.44 sarebbe stata tradotta in un ritardo di 2, 4ns (arrotondatoalla precisione di 100ps).

Alla direttiva sulla scala temporale seguono la dichiarazione del moduloe la dichiarazione delle variabili di ingresso e uscita. Nel Verilog esistonodue tipi fondamentali di dato: registri (reg) e fili (wire). La differenzafondamentale tra questi due tipi e il fatto che il primo possiede memoria,ossia i reg memorizzano l’ultimo valore assegnato ad essi; i wire al contrarionon possiedono la capacita di immagazzinare dati e possono essere pensaticome dei fili. Le variabili reg sono utilizzate di solito come flip flop e registri, iwire sono utilizzati per implementare logica combinatoria e interconnessioni.Le variabili di input e output sono implicitamente dichiarate come wire, senon altrimenti specificato.

Una variabile dichiarata come reg o wire e di default ad un solo bit. Epossibile avere registri o wire a piu bit specificando un range di bit nella

120

dichiarazione. Ad esempio:

reg [3 : 0] BCD;wire [7 : 0] bus8;reg [7 : 0] mem[0 : 255];

Il primo e un registro a 4 bit; il secondo e un bus a 8 bit; il terzo euna memoria di dimensione 256 × 8 bit (in Verilog non sono ammessi arraymultidimensionali, ma e possibile indicare una memoria come un array diregistri). E possibile riferirsi ai bit di un registro o wire con la notazione[<start-bit>:<end-bit>].

Gli oggetti reg o wire possono assumere i seguenti valori:

0 zero logico o false1 uno logico o truex valore logico ignotoz stato di alta impedenza

I valori numerici in Verilog sono comunemente espressi nella seguenteforma generale:

<size><base format><number>

dove<size> specifica il numero di bit della costante numerica; <base format>e il carattere ’ seguito da una lettera tra b, d, o e h, che stanno rispettivamenteper base binaria, decimale, ottale e esadecimale; <number> contiene le cifredella costante numerica, compatibilmente con il <base format>. Ad esempio:

123 numero in base decimale’h5B numero in base esadecimale4’b10 numero binario a 4 bit 00103’b10x numero binario a 3 bit il cui LSB non e noto

Oltre a registri e wire, altri tipi di variabili del Verilog sono integer, reale time. Integer e real si comportano in maniera simile al linguaggio C: uninteger e un intero con segno a 32 bit, un real e un numero reale a virgolamobile. Variabili di tipo time hanno dimensione 64 bit e sono usate incombinazione con la funzione $time che restituisce il tempo corrente dellasimulazione.

A.3.2 Blocchi initial e always

Un blocco sequenziale e un gruppo di istruzioni tra un begin e un end. Lediciture begin e end hanno nel Verilog la stessa funzione delle parentesi graffe

121

aperte e chiuse nel C (in Verilog “ , ” e l’operatore di concatenazione;congiunge i bit di due o piu espressioni separate da virgole). Un bloccosequenziale e trattato alla stessa maniera di un’istruzione singola; e possibileannidare blocchi sequenziali uno nell’altro.

Un blocco sequenziale puo comparire dopo una direttiva initial oppurealways. Nel primo caso esso viene eseguito una sola volta, nel secondo casoviene eseguito ripetitivamente. Ad ogni modo, se compaiono piu blocchiinitial o always, essi sono eseguiti in parallelo.

E possibile programmare l’esecuzione di una istruzione procedurale inmodo tale da essere innescata da un cambio di valore su un registro o wire odall’accadimento di un certo evento. Un controllo su un evento e introdottodal simbolo “@”, seguito dalla lista delle variabili su cui e fatto il controllo(sensitivity list). Ad esempio:

@(r) a = b+c; // eseguito a ogni cambio di valore// nel registro r

@(r or s) a = b+c; // eseguito a ogni cambio di valore// nei registri r o s

@(posedge clock) a = b+c; // eseguito sul fronte di salita// del clock

@(negedge clock) a = b+c; // eseguito sul fronte di discesa// del clock

Le diciture posedge e negedge devono essere seguite da una espressionead 1 bit, tipicamente un clock. La prima individua una transizione da 0 a1, la seconda individua una transizione da 1 a 0. Una istruzione puo esseretriggerata da piu eventi se separati dal comando or all’interno della parentesi.La seguente struttura, ad esempio, e utilizzata molto spesso ed implementadella logica sincrona sul fronte di salita del clock, con reset asincrono attivoalto:

always @( posedge clk or posedge reset)begin

if (reset). . . // reset instructions

else. . . // some procedural instructions

end

Altro costrutto molto utilizzato e “@*”. Se @ e seguito da un asterisco lasensitivity list viene determinata automaticamente dal simulatore, guardandoalle variabili nel blocco procedurale che segue la direttiva. Questo costrutto

122

risulta particolarmente utile nel caso si voglia descrivere della logica combi-natoria.

Altro costrutto di controllo temporale e la direttiva wait. Essa consentedi ritardare una istruzione finche una data condizione non si verifica. Adifferenza di @, sensibile alle transizioni del segnale, la direttiva wait e levelsensitive.

A.3.3 Assegnamento blocking e non-blocking

Sui data object del Verilog possono agire operatori molto simili a quelli del C,con regole di priorita analoghe. Ad esempio “==” rappresenta l’uguaglianzalogica, “&&” e l’AND logico, “∼” la negazione bitwise, ecc.

Discorso a parte meritano gli operatori di assegnamento, per cui si distin-guono un assegnamento continuo e due forme di assegnamento procedurale.L’assegnamento continuo riguarda le variabili dichiarate come wire ed eintrodotto dalla parola chiave assign. Quando una data espressione e asse-gnata ad un oggetto wire, esso e aggiornato ogniqualvolta uno degli operandicambia valore. L’assegnamento continuo pertanto si presta alla descrizionedi logica combinatoria.

L’assegnamento procedurale riguarda le variabili reg e se ne distinguonodue forme: blocking e non-blocking. Essi sono indicati rispettivamente daglioperatori “=” e “<=”. L’assegnamento blocking (=) agisce in maniera simileai linguaggi di programmazione tradizionali, essendo l’operazione eseguitaper intero prima che il controllo passi all’operazione successiva. L’operatoredi assegnamento non-blocking (<=) valuta tutte le espressioni a destra diesso per un dato valore di tempo e le assegna a sinistra alla fine dell’unitatemporale.

Solitamente l’uso dell’assegnamento non-blocking e preferibile rispetto alblocking, in quanto esso consente di descrivere in maniera piu appropriata letransizioni di livelli logici, che nei circuiti reali non avvengono mai istan-taneamente, ma sempre con un certo ritardo temporale, seppur minimo.L’assegnamento non-blocking e spesso usato in combinazione con il delaytemporale. La sintassi generale e la seguente:

<reg var> <= # <delay> <expression>;

In questo caso l’espressione a destra e calcolata e viene assegnata a sinistrasoltanto dopo il delay temporale.

123

A.3.4 Costrutti di controllo

Il Verilog possiede una ricca collezione di costrutti di controllo che possonoessere usati nelle parti procedurali del codice (cioe tra un begin e un end).

Tra i costrutti di selezione troviamo if/else e case. Il costrutto if consentedi eseguire una data istruzione se una data condizione e verificata. Essopuo essere seguito da un else, che specifica le istruzioni che sono eseguitese la condizione non e verificata. A differenza di if/else, che consente discegliere solo tra due alternative, il costrutto case consente una selezione trapiu possibilita.

Il seguente esempio mostra l’utilizzo di if/else e case. Esso descrive undecoder che codifica un valore BCD (Binary Coded Decimal) in una codificaper un display a sette segmenti. Esso possiede inoltre un ingresso di enable;viene visualizzato un trattino se esso e a zero.

Source A.2: BCD7segmenti.v

‘timescale 1ns/100ps

module BCD7segmenti( EN , A , dis );

input EN;

input [3:0] A;

output [6:0] dis;

reg [6:0] dis;

always @*

begin

if ( EN )

case(A)

0: dis <= 7’b0000001;

1: dis <= 7’b1001111;

2: dis <= 7’b0010010;

3: dis <= 7’b0000110;

4: dis <= 7’b1001100;

5: dis <= 7’b0100100;

6: dis <= 7’b0100000;

7: dis <= 7’b0001111;

8: dis <= 7’b0000000;

9: dis <= 7’b0000100;

default: dis <= 7’hxx;

endcase

else

dis <= 7’b1111110;

end

endmodule

124

In Verilog i costrutti di iterazione sono: for, while, repeat, forever. Icostrutti for e while funzionano allo stesso modo che nel linguaggio C (conl’eccezione che in Verilog non esistono gli operatori di incremento ++ edecremento −−). Il costrutto repeat consente di ripetere un blocco di istru-zioni per un dato numero di volte. Il costrutto forever esegue un ciclo infinito.Le seguenti istruzioni, ad esempio, descrivono l’azzeramento di un registro a16 bit con tre costrutti differenti:

for(i=0; i<=15; i=i+1 ) data[i]<=0;i=0; while(i<=15) begin data[i]<=0; i=i+1; endrepeat(16) begin data[i]<=0; i=i+1; end

A.4 Esempio: una macchina a stati

Vediamo un esempio un po’ piu complesso di codice Verilog, in cui si vuoledescrivere un cronometro con le seguenti funzionalita: se viene premuto ilpulsante START/STOP parte un conteggio che si arresta quando esso vienepremuto nuovamente; il conteggio riparte da dove era stato interrotto a unnuovo START; il cronometro si azzera alla pressione del pulsante CLEAR.

Il cronometro e stato implementato mediante una macchina a stati checostituisce la logica di controllo e da un contatore. La macchina a stati hacome ingressi START/STOP e CLEAR e in uscita pilota gli ingressi di enable(EN) e di reset sincrono (CZ) del contatore nel paragrafo A.3(fig. A.1).

Figura A.1: Schema a blocchi del cronometro.

Una macchina a stati finiti (Finite State Machine, FSM) [58] e unastruttura conveniente per realizzare una funzione logica sequenziale in cuile uscite vengono aggiornate in sincronia con le transizioni di un segnale diclock. Lo schema generale di una FSM e in figura A.2 [59].

La macchina cambia stato ad ogni fronte attivo del clock. La memoria distato e un registro realizzato con k flip-flop edge triggered che memorizzanole variabili interne (lo stato presente) del circuito sequenziale. Ad ognitransizione attiva del clock, il contenuto della memoria di stato (cioe, lo statopresente) viene aggiornato e passa da S(n) a S(n+1), dove l’indice n numeraprogressivamente i periodi del segnale di clock, mentre le uscite assumono

125

Figura A.2: Schema a blocchi di una generica FSM. [59]

il valore Y(n). Sia il valore S(n+1) dello stato futuro che il valore Y(n)dell’uscita asincrona sono funzioni combinatorie del valore X(n) dell’ingressoe del valore S(n) dello stato presente:

S(n+ 1) = F [S(n), X(n)]Y (n) = G[S(n), X(n)]

Le FSM vengono normalmente distinte in macchine di Mealy, in cui ilvalore delle uscite Y(n) dipende sia dal valore dello stato presente S(n) chedal valore degli ingressi X(n), e macchine di Moore, in cui Y(n) e solo funzionedel solo stato presente S(n).

E stato scelto di implementare il cronometro come una macchina di Moorea cinque stati. Si puo utilizzare una rappresentazione grafica per descriverel’evoluzione degli stati. In questo tipo di grafo, detto State Transition Dia-gram (STD) [60], i nodi (i “pallozzi”) rappresentano gli stati, le frecce rap-presentano le transizioni tra stati. In gergo si parla di “pallogramma”.

Lo STD della macchina a stati del cronometro e mostrato in figura A.3.La FSM dopo un reset e nello stato IDLE. In questa configurazione le usciteEN e CZ sono rispettivamente a 0 e 1, quindi la permanenza nello statoIDLE comporta anche l’azzeramento del contatore. La FSM si riporta nellostato IDLE ogniqualvolta e attivo CLEAR, che ha precedenza sul segnale diSTART/STOP. Quando START=1 e CLEAR=0 la FSM si porta nello statoCONTA e vi rimane finche gli ingressi hanno questo valore. Quando START

126

Figura A.3: State Transition Diagram della macchina a stati del cronometro. Incorrispondenza di ogni stato (i box) sono indicati i valori delle uscite (nell’ordineEN e CZ); in corrispondenza di ogni transizione (le frecce) sono indicati i valoridegli ingressi (nell’ordine START/STOP e CLEAR).

torna a zero (rilascio del pulsante) la FSM si porta nello stato CONTA1.Negli stati CONTA e CONTA1 si ha in uscita EN=1 e CZ=0 cosicche ilcontatore e abilitato al conteggio. Quando si ha nuovamente START=1e CLEAR=0 la FSM si porta dallo stato CONTA1 allo stato PAUSA erimane in questo stato finche permane questa combinazione degli ingressi.Nel momento in cui START torna a zero (rilascio del pulsante) la FSM si vanello stato PAUSA1. Negli stati PAUSA e PAUSA1 le uscite assumono valoreEN=0 e CZ=0, cosicche il contatore e fermo e mantiene memoria dell’ultimovalore segnato prima dello stop. Quando si ha nuovamente START=1 la FSMsi porta nello stato CONTA e il conteggio riprende da dove si era interrotto.

Il codice Verilog che descrive questa macchina a stati e il seguente:

Source A.3: cronoFSM.v

‘timescale 1ns/100ps

module cronoFSM( RESET, CLK , START, CLEAR, EN , CZ );

input RESET, CLK, START, CLEAR;

output EN, CZ;

reg EN,CZ;

reg [4:0] cur state;

parameter IDLE= 5’b00001;

parameter CONTA= 5’b00010;

parameter CONTA1= 5’b00100;

127

parameter PAUSA= 5’b01000;

parameter PAUSA1= 5’b10000;

always @( posedge CLK or posedge RESET )

begin

if(RESET)

cur state<= IDLE;

else if (CLEAR )

cur state<= #1 IDLE;

else case(cur state)

IDLE: if (START) cur state<= #1 CONTA;

CONTA: if (∼START) cur state<= #1 CONTA1;

CONTA1: if (START) cur state<= #1 PAUSA;

PAUSA: if (∼START) cur state<= #1 PAUSA1;

PAUSA1: if (START) cur state<= #1 CONTA;

default: cur state<= #1 IDLE;

endcase

end

always @*

case(cur state )

IDLE: EN,CZ <= #1 2’b01;

CONTA: EN,CZ <= #1 2’b10;

CONTA1: EN,CZ <= #1 2’b10;

PAUSA: EN,CZ <= #1 2’b00;

PAUSA1: EN,CZ <= #1 2’b00;

default: EN,CZ <= #1 2’b00;

endcase

endmodule

Un registro a 5 bit contiene lo stato presente. Nel codice sono benseparate una parte sequenziale (primo blocco always), che ad ogni ciclo diclock aggiorna il registro di stato, e una parte combinatoria (secondo bloccoalways), che determina le uscite a seconda dello stato presente.

Nel codice riportato gli stati della FSM sono dichiarati come parametri.La direttiva parameter consente di fornire un nome ad un valore costante.Usare i parametri permette di scrivere codice piu generalizzabile e di piu facilemanutenzione. Ad esempio, se nel codice volessimo cambiare la codifica deglistati della FSM (e stata utilizzata una codifica one-hot), sarebbe sufficientesolamente cambiare la definizione dei parametri e non sara necessario cam-biare nulla nel resto del codice.

Oltre a parameter, un altro modo per definire delle costanti e tramite ladirettiva ‘define. I parametri all’interno di un modulo hanno visibilita locale;le costanti definite con ‘define hanno visibilita globale.

128

Appendice B

Sintesi di FPGA

B.1 L’ambiente ISE

Solitamente i produttori di FPGA forniscono, oltre che le FPGA stesse,anche il software per programmarle. L’ambiente ISE [61] della Xilinx non esemplicemente un software in grado di programmare FPGA, ma un ambientedi sviluppo a tutti gli effetti. Il software ISE e in grado di supportare ilprogettista in ogni fase dello sviluppo, fornendo diversi tool dall’interfacciagrafica.

ISE supporta sia la progettazione basata su HDL che la progettazionebasata su schematico. L’approccio usato in questo lavoro e quello basatosu HDL; in particolare e stato utilizzato il linguaggio Verilog. In questoapproccio il progetto da implementare viene innanzi tutto descritto concodice Verilog a livello RTL. A questo punto il software ISE, attraverso deitool di sintesi, traduce il codice Verilog in hardware implementabile sullaFPGA. Seguono diverse fasi di implementazione, il cui fine ultimo e quellodi creare un file di programmazione caricabile sulla FPGA.

B.2 Progetto di un cronometro

In questa sezione si analizzera nelle sue varie fasi un semplice progetto di uncronometro, pensato per funzionare sulla scheda Spartan-3 Starter Kit [62].

In questo progetto la FPGA prende in ingresso: un clock a 50 MHz,da un oscillatore presente sulla scheda; gli ingressi RESET, START/STOP,CLEAR, provenienti da pulsanti sulla scheda. I segnali di START/STOP eCLEAR gestiscono il cronometro nella maniera gia indicata nel paragrafo A.4(la macchina a stati del paragrafo A.4 e parte integrante del cronometro).

129

(a)

(b)

Figura B.1: (a) Schema del display al LED della scheda Spartan-3 Starter Kit.La figura illustra il funzionamento degli 8 segnali e dei 4 anodi mostrando lacombinazione che visualizza la cifra “2” sul primo display. [62] (b) Schematico delleconnessioni dalla FPGA verso il display al LED. La figura mostra in particolareche i segnali AN3 . . . AN0 provenienti dalla FPGA sono invertiti dai transistorQ4. . . Q1. [62]

Figura B.2: Multiplexaggio dei segnali di controllo del display al LED. [62]

130

In uscita essa deve pilotare un display sette-segmenti a LED composto daquattro caratteri (si vuole contare con una precisione al centesimo di secondo).

Il display (fig. B.1(a)) e di tipo common anode, ossia l’anodo comunefornisce l’alimentazione ai LED che compongono il display; i segnali ai catodideterminano se i LED sono accesi o spenti. Nel display le quattro cifre hannoin comune i segnali di controllo dei catodi che determinano l’accensione deisingoli segmenti LED; ciascun carattere possiede un ingresso di controllo dianodo separato in modo tale da poter controllare quali dei quattro caratteriche compongono il display debbano essere accesi.

In definitiva il display e controllato da: un bus a 8 bit che corrisponde aisette segmenti (denominati a, b, . . . , g) e al punto decimale; un bus a 4 bitche controlla l’anodo di ciascuno dei quattro caratteri di cui e composto ildisplay; sia i primi che i secondi segnali sono attivi bassi (ciascun segnale dianodo e collegato a un transistor che lo inverte, fig B.1(b)).

Affinche il dato sia visibile su tutti e quattro i caratteri, i segnali dicontrollo dei LED sono multiplexati temporalmente come in figura B.2. Iquattro caratteri sono attivati uno alla volta in rapida successione ponendobasso il segnale di anodo corrispondente. Se la transizione avviene a unafrequenza sufficientemente rapida, l’occhio umano non e in grado di percepirlae l’impressione e che i quattro caratteri appaiono simultaneamente.

B.2.1 Il top-level

La prima fase del progetto della FPGA e stata quella di sviluppare del codiceVerilog che ne descrivesse il funzionamento a livello RTL. Tra i moduli Verilogche costituiscono il progetto deve esserci un modulo top-level, i cui ingressie uscite coincidono con quelli del progetto della FPGA e che richiama glialtri sottomoduli della gerarchia. Il codice del top-level per il progetto delcronometro e riportato di seguito; una rappresentazione schematica e datain figura B.3.

Source B.1: cronometro.v

‘timescale 1ns/100ps

module cronometro( EXTCLK, RESET, START, CLEAR, A, DIS );

input EXTCLK, RESET, START, CLEAR;

output [3:0] A;

output [7:0] DIS;

wire clk;

wire en, en0, en1, en2, en3, srst;

wire [3:0] B3, B2, B1, B0;

reg [3:0] BCDbus, A;

reg [1:0] selector;

wire [6:0] segmenti;

131

wire dec point;

//// modulo prescaler

PRESCALER my prescaler( .INCLK(EXTCLK),

.OUTCLK(clk),

.RESET(RESET) );

//// logica selezione dispositivo

always @( posedge clk or posedge RESET )

if ( RESET )

selector<=0;

else

selector <=selector+1;

always @*

case( selector )

2’b00: begin A<= 4’b1110; BCDbus<= B0; end

2’b01: begin A<= 4’b1101; BCDbus<= B1; end

2’b10: begin A<= 4’b1011; BCDbus<= B2; end

2’b11: begin A<= 4’b0111; BCDbus<= B3; end

endcase

//////// macchina a stati

cronoFSM my crono(

.RESET(RESET),

.CLK(clk),

.START(START),

.CLEAR(CLEAR),

.EN( en),

.CZ( srst) );

/////// contatori

COUNTER my counter3(.enIn( en3),

.CLK( clk ),

.RESET( RESET ),

.sRST( srst ),

.BCD( B3 ),

.enOut() );

COUNTER my counter2(.enIn( en2),

.CLK( clk ),

.RESET( RESET ),

.sRST( srst ),

.BCD( B2 ),

.enOut(en3 ) );

COUNTER my counter1(.enIn( en1),

.CLK( clk ),

.RESET( RESET ),

.sRST( srst ),

.BCD( B1 ),

.enOut(en2 ) );

COUNTER my counter0(.enIn( en0),

.CLK( clk ),

.RESET( RESET ),

.sRST( srst ),

.BCD( B0 ),

.enOut(en1 ) );

COUNTER ghost counter( .enIn( en),

.CLK( clk ),

.RESET( RESET ),

.sRST( srst ),

.BCD(),

.enOut(en0 ) );

132

//// decoder BCD-7segmenti

BCD7segmenti my BCD( .EN( ∼RESET ),

.A( BCDbus ),

.dis( segmenti ) );

assign dec point= (selector==2’b10)? 0 :1;

assign DIS= segmenti, dec point;

endmodule

Il modulo PRESCALER ha in ingresso il clock da 50 MHz e fornisce inuscita un clock da 100 kHz, frequenza a cui gira tutto il resto del progetto.Oltre a questo modulo, il top-module richiama i moduli cronoFSM (par. A.4),COUNTER (par. A.3) e BCD7segmenti (par. A.3.4).

I segnali di START/STOP e CLEAR sono gestiti dalla macchina a stati(modulo cronoFSM). La FSM ha in uscita un segnale di enable (il qualeabilita i contatori) e un segnale di azzeramento (esso fa il reset sincrono deicontatori).

Vi sono cinque istanze del modulo contatore; esse sono collegate in cascata.Il segnale di enable e collegato al primo contatore, il quale conta i millesimidi secondo (questa cifra non e visualizzata sul display). L’uscita di enable diquesto contatore e collegato all’ingresso di enable dello stadio successivo, e

Figura B.3: Schema a blocchi del progetto del cronometro.

133

cosı via. Il segnale di reset sincrono e collegato in parallelo a tutti i contatori.Ogni contatore ha in uscita un bus a 4 bit che rappresenta la cifra segnatain codice BCD.

Un multiplexer seleziona a rotazione uno dei quattro caratteri del displaymettendo basso uno dei quattro segnali anodici e selezionando uno dei quattrobus BCD dai contatori verso il decoder BCD-7segmenti. Quando e selezionatoil secondo carattere del display, e messo basso il segnale relativo al puntodecimale, in modo da illuminare il punto decimale della cifra dei secondi.L’uscita del decoder BCD-7segmenti e il segnale del punto decimale formanoun bus a 8 bit in uscita dalla FPGA verso il display.

Una volta delineato il progetto in codice Verilog, esso e stato verificatomediante il simulatore NCverilog [63] della Cadence. A questo scopo e statomesso a punto un modulo di testbench che fornisse una serie di stimoli iningresso al modello Verilog del progetto. Tipicamente un file di testbenchcomprende [64]:

• Un blocco initial per inizializzare tutte le variabili al tempo zero e perabilitare il salvataggio del database di simulazione;

• Un blocco always per la generazione dei segnali di clock;

• Una istanza del modulo Verilog da sottoporre a verifica;

• Un blocco initial per la generazione degli stimoli;

• Istruzioni di chiusura del database e di terminazione della simulazione($finish).

Il risultato della simulazione puo essere analizzato con un visualizzatore diforme d’onda.

Oltre ai sorgenti Verilog, un altro file sorgente che occorre preparare e ilfile di constraints (UCF, User Constraints File). Esso consente di: impostarela localizzazione di ingressi e uscite sui pin della FPGA; creare dei timingconstraints, ad esempio sul periodo del clock. Questo puo essere fatto siascrivendo il file UCF con un editor di testo che usando dei tool ad interfacciagrafica come il Constraint Editor di ISE o il Plan Ahead.

B.2.2 Sintesi

Alla creazione di un nuovo progetto, il programma ISE chiede all’utentealcune informazioni fondamentali sul progetto: il tipo dei sorgenti (HDL/sche-matico), la FPGA usata (modello, package, speed grade), il linguaggio HDLpreferito (VHDL/Verilog), il tool di sintesi, il simulatore HDL, ecc. Nel

134

nostro caso si e selezionato il Verilog come linguaggio HDL e la FPGAXC3S200FT256 della serie Spartan-3 (quella montata sulla scheda StarterKit).

Una volta fornite al programma le informazioni che esso richiede, l’utentepuo aggiungere al progetto il top-level e gli altri sorgenti. La schermataprincipale di ISE apparira come in figura B.4.

Nel Project Navigator il pannello in alto a sinistra mostra il top-modulecon tutta la gerarchia di sottomoduli e i sorgenti cui fanno riferimento; ilriquadro sotto di esso consente di eseguire i diversi stadi dell’implementazionee di richiamare diversi tool; il riquadro a destra mostra all’utente lo statodell’implementazione, le statistiche di utilizzo della FPGA, messaggi di erroree di warning, ecc.

Lo stadio successivo del progetto e costituito dalla sintesi. A questo scopoe stato utilizzato il tool di sintesi XST (Xilinx Synthesis Technology). Essocontrolla la sintassi del codice sorgente; traduce e ottimizza il codice HDLin un set di componenti che il tool di sintesi puo riconoscere (compilazione);

Figura B.4: Schermata di ISE Project Navigator.

135

infine traduce i componenti dallo stadio di compilazione nelle componentiprimitive della FPGA (map). Il risultato di questo processo e la creazione diuna netlist (file .ngc). Una netlist e una descrizione testuale della connettivitadi un circuito; fondamentalmente essa e una lista di connettori, istanze,segnali.

Per il processo di sintesi l’utente puo impostare una serie di opzioni cheinfluenzano il modo in cui sono impiegate le risorse sulla FPGA e la velocitadel progetto finale in termini di massima frequenza di clock. Ad esempio,se il progetto e critico dal punto di vista della velocita, il register balancing,l’utilizzo di registri duplicati e la riduzione del massimo fan-out consentonodi ottenere una maggiore frequenza massima; viceversa se il goal e l’area,conviene disabilitare la creazione di registri duplicati e attivare il resourcessharing al fine di ridurre le risorse utilizzate dal progetto.

Al termine del processo di sintesi l’utente puo visualizzare una rappre-sentazione schematica del progetto sia a livello RTL che a livello di circuitopost-sintesi attraverso i tool View RTL Schematic e View Technology Sche-matic. La figura B.5 mostra lo schematico del circuito generato dal tool disintesi. Esso e descritto in termini di primitive relative alla FPGA Spartan-3XC3S200.

Figura B.5: Schermata di ISE Schematic Viewer.

136

B.2.3 Implementazione

Alla fase di sintesi segue quella di implementazione. Lo stadio di imple-mentazione comprende tre sottoprocessi: Translate, Map, Place & Route.Durante il processo di Translate il programma NGDBuild converte le netlistdi input in una singola merged netlist (file .ngd) contenente le informazionisulla logica di tutto il progetto e ogni constraint di posizionamento e ditiming (in questa fase i vincoli impostati dall’utente tramite il file .ucf sonoaggiunti alla netlist). Il Map svolge le seguenti funzioni: alloca le risorsedi CLB e IOB per tutti gli elementi del progetto; elabora tutti i constraintdi posizionamento e di timing. Il Place & Route (PAR) piazza e collegai vari elementi sulla FPGA, ottimizzando la netlist al fine di rispettare itiming constraints. Il PAR, inoltre, valuta i ritardi reali (pessimistici) delleconnessioni nel circuito, tenendo conto anche del ritardo dovuto agli elementiparassiti. Questa informazione e memorizzata in un file dalla estensione SDFe puo essere utilizzata nella simulazione.

Figura B.6: Schermata di Xilinx FPGA Editor.

137

L’analisi temporale statica [50] permette di verificare che i ritardi deisegnali nella FPGA siano coerenti con i vincoli impostati ed evidenzia ipercorsi dei segnali che violano i vincoli. Ad esempio, se si e impostatoun constraint sul periodo del clock, il programma verifica che tutti i percorsidi segnale tra due flip flop siano piu brevi della durata impostata del periododel clock.

A questo stadio dell’implementazione e possibile utilizzare il tool FPGAEditor che consente di verificare le connessioni del progetto finale, o anchedi piazzare manualmente alcuni componenti critici. Questo tool permette divisualizzare tutti i percorsi che i segnali fanno dentro la FPGA. La figuraB.6 mostra come appare il progetto del cronometro dopo il PAR.

Il tool XPower Analyzer, invece, fornisce all’utente una stima del consumodi potenza della FPGA. Questa stima e molto accurata in quanto esso utilizzaper il calcolo le informazioni di connettivita del progetto finale.

Per ognuno degli stadi dell’implementazione e possibile generare un mo-dello HDL simulabile con ISim (simulatore HDL integrato dentro ISE) ocon altri simulatori. Il modello ultimo, quello post-PAR, tiene conto deiritardi reali delle interconnessioni tramite il processo di back annotation. Lasimulazione temporale [50] permette di verificare che il circuito finale realizzile funzioni richieste alle velocita necessarie.

B.2.4 Programmazione

L’ultimo stadio dell’implementazione porta alla creazione un file bitstream(estensione .bit), che e essenzialmente una sequenza di zeri e di uno checontiene tutta l’informazione per la configurazione della FPGA. Il file .bitpuo essere caricato dentro la FPGA stessa o utilizzato per formattare un file(esadecimale) di programmazione di una PROM. Il programma che assolvea questo compito e iMPACT (fig. B.7).

Dopo aver collegato la scheda Starter Kit al computer tramite il cavoJTAG, la FPGA Spartan-3 XC3S200 e stata programmata utilizzando ilprogramma iMPACT. Una volta scollegato il cavo il programma e rimastomemorizzato nella PROM di configurazione, che e una XCF02S da 2Mbit.La figura B.8 mostra la scheda durante il funzionamento.

138

Figura B.7: Schermata di iMPACT.

Figura B.8: Progetto del cronometro in funzione sulla scheda Spartan-3 StarterKit. Il cronometro e stato fermato sul tempo di 2.66 secondi.

139

Appendice C

Sorgenti Verilog

In questa sezione mostriamo alcuni moduli Verilog scritti per il progettodella FPGA. Il primo esempio riportato di seguito e un modulo di testbenchper il modello Verilog del progetto della FPGA. Esso simula in ingresso allaFPGA i segnali di controllo WRITE BUF, CYCLE, ABORT; alcuni segnaliin ingresso di test; alcuni segnali in input generati in maniera pseudo-casuale.Il secondo modulo che riportiamo simula il funzionamento del processoredella FPGA. Esso sostituisce in fase di test il modulo cpuIO.v nel progettodella FPGA, che rappresenta l’interfaccia di I/O del processore con gli altrielementi del progetto. Il modulo di test del processore e utilizzato in combi-nazione col modulo precedente per verificare che i segnali di test inviati allaFPGA siano scritti correttamente nel buffer circolare.

Source C.1: testbench.v

‘timescale 1ns/100ps

‘define usec 1000

‘define msec 1000000

module testbench;

reg clk, reset, cycle, write buf, abort;

reg [63:0] signalIn, Csig;

wire fastOR1, fastOR2;

wire [3:0] DACwr;

reg [ 5:0] channel;

topLevel FPGAtop(

.reset(reset),

.clkPAD(clk),

.cycle(cycle),

.signalIn(signalIn),

.write buf(write buf),

.abort(abort),

.fastOR1(fastOR1),

.fastOR2(fastOR2),

140

.TXD pin(),

.RXD pin(2’b0),

.TX EN pin(),

.RX ER pin(1’b0),

.CRS DV pin(1’b0),

.DACwr(DACwr),

.DACdata(),

.CCLK(),

.MOSI(),

.DIN(),

.CSO B(),

.SCLK adc(),

.DOUT adc(),

.DIN adc(),

.CS adc(),

.SW(12’b0),

.LED(),

.TP()

);

parameter TC = 20; //clock a 20ns

initial clk = 0;

always #(TC/2) clk = clk;

parameter Tcy = 600*‘usec; //clock esterno DAQ

initial cycle=0;

always

begin

#(Tcy + ($random %1000) ) cycle = 1;

#(3*TC+0.1*($random %20)) cycle = 0;

end

initial //reset sequence

begin

reset=0; #2;

#(TC*5) reset <= 1;

#(TC*5) reset <= 0;

end

initial //spill sequence

begin

write buf=0;

$display(‘‘======================================================================’’);

$display(‘‘ Inizio simulazione’’);

$display(‘‘============================================’’);

#2;

#(100*‘usec) write buf <= 1; // spill 1

$display(‘‘spill 1: T=%0d’’ , $time);

#(10*‘usec + 0.1*($random %100)) write buf <= 0;

#(500*‘usec); #122 write buf <= 1; // spill 2

$display(‘‘spill 2: T=%0d’’ , $time);

#(10*‘usec + 0.1*($random %100)) write buf <= 0;

#(3000*‘usec); #252 write buf <= 1; //fase cosmici

$display(‘‘fase cosmici: T=%0d’’ , $time);

#(250*‘usec) write buf <= 0;

#(10*‘usec) write buf <= 1;

#(370*‘usec) write buf <= 0;

#(10*‘usec) write buf <= 1;

#(400*‘usec) write buf <= 0;

#(200*‘usec) write buf <= 1; // spill 1

$display(‘‘spill 1: T=%0d’’ , $time);

#(10*‘usec + 0.1*($random %100)) write buf <= 0;

141

#(500*‘usec); #13 write buf <= 1; // spill 2

$display(‘‘spill 2: T=%0d’’ , $time);

#(10*‘usec + 0.1*($random %100)); write buf <= 0;

#(3000*‘usec); #12 write buf <= 1; //fase cosmici

$display(‘‘fase cosmici: T=%0d’’ , $time);

#(150*‘usec) write buf <= 0;

#(10*‘usec) write buf <= 1;

#(440*‘usec) write buf <= 0;

#(10*‘usec) write buf <= 1;

#(500*‘usec) write buf <= 0;

//

#(100000) $display(‘‘fine simulazione (T=%0d)’’ , $time);

$display(‘‘============================================’’);

$finish;

end

initial // test abort

fork

abort = 0;

#(4.8*‘msec) abort <= 1;

#(4.8*‘msec +50) abort <= 0;

#(9.5*‘msec) abort <= 1;

#(9.5*‘msec +50) abort <= 0;

join

initial // test signals

begin

#(100*‘usec);

#222 signalIn[1] <= 1;

$display(signal 1: T=%0d , $time);

#3 signalIn[1] <= 0;

#55 signalIn[3] <= 1;

$display(signal 2: T=%0d , $time);

#14 signalIn[3] <= 0;

#540 signalIn[22] <= 1;

$display(signal 3: T=%0d , $time);

#23 signalIn[22] <= 0;

#480 signalIn[4] <= 1;

$display(signal 4: T=%0d , $time);

#21 signalIn[4] <= 0;

#45 signalIn[62] <= 1;

$display(signal 5: T=%0d , $time);

#15 signalIn[62] <= 0;

end

initial // test signals (negative)

begin

#(4860500);

#114 signalIn[18] <= 0;

$display(signal 6: T=%0d , $time);

#3 signalIn[18] <= 1;

#95 signalIn[30] <= 0;

$display(signal 7: T=%0d , $time);

#16 signalIn[30] <= 1;

#1220 signalIn[12] <= 0;

$display(signal 8: T=%0d , $time);

#22 signalIn[12] <= 1;

#755 signalIn[34] <= 0;

$display(signal 9: T=%0d , $time);

#21 signalIn[34] <= 1;

#75 signalIn[22] <= 0;

$display(signal 10: T=%0d , $time);

142

#5 signalIn[22] <= 1;

end

genvar i;

generate

for(i=0; i < 64; i=i+1 ) // spill signals

begin :signalsim

initial

fork

#610500 repeat(5)

begin

#( ($random%20000)*0.1 )signalIn[ i]<=1;

#(3+$random%30) signalIn[ i ]<=0;

end

#5370500 repeat(5)

begin

#( ($random%20000)*0.1 )signalIn[ i]<=0;

#(3+$random%30) signalIn[ i ]<=1;

end

join

end

endgenerate

initial //segnali cosmici

begin

Csig=0;

forever

begin

#( ($random%100)*‘usec + ($random%10000)*0.1 );

channel = $random %64;

Csig[ channel]<=1;

#(3+$random%30) Csig[ channel ]<=0;

end

end

initial

#(4.4*‘msec ) signalIn <= 64’hffff ffff ffff ffff; // segnali invertono

polarita a 4.4 msec

always @( Csig )

if ( $time < 4.4*‘msec ) // segnali invertono polarita a 4.4 msec

signalIn <= Csig;

else

signalIn <= Csig;

initial

begin

$shm open(‘‘testbench.shm’’);

$shm probe( testbench , ‘‘ACM’’);

// $dumpfile(‘‘testbench.vcd’’);

// $dumpvars( 0 , FPGAtop );

end

endmodule

143

Source C.2: sim cpu.v

‘timescale 1ns/100ps

‘define usec 1000

‘define msec 1000000

module cpuIO ( clk, clketh, reset, abort,

TXD, RXD, TX EN, RX ER, CRS DV,

SW, LED, TP,

CBread, CBclear, CBrew, CBposRew, CBdata,

DACen, DACdata,

timeStamp1, timeStamp2, cycleStamp1, cycleStamp2,

spDuration1, spDuration2, cycleCLR,

CCLK, MOSI, DIN, CSO B, SCLK adc, DOUT adc, DIN adc, CS adc,

dataMask, dataPol

);

parameter TC = 20;

input clk, clketh, reset, abort;

input [1:0] RXD;

output [1:0] TXD;

output TX EN;

input RX ER, CRS DV;

input [7:0] SW;

output [3:0] LED;

output [3:0] TP;

// Controlli buffer circolare

output CBread, CBclear, CBrew;

output [11:0] CBposRew;

input [63:0] CBdata;

// Uscite per i DAC

output [3:0] DACen;

output [9:0] DACdata;

reg [3:0] DACen;

// I/O seriale SPI

input DIN, DIN adc;

output CCLK, MOSI, CSO B, SCLK adc, DOUT adc, CS adc;

// regisri per il time stamp

input [31 : 0] timeStamp1, timeStamp2;

input [31 : 0] cycleStamp1, cycleStamp2;

input [15 : 0] spDuration1, spDuration2;

output cycleCLR;

reg cycleCLR;

// mascheramento canali dati

output [63:0] dataMask;

output dataPol;

reg [63:0] dataMask;

reg dataPol;

assign DACdata= 10’h199;

// regs

reg [15:0] posRew;

reg [1:0] SFRwradd;

reg SFRwr, SFRrd;

144

reg [7:0] XSFRin;

wire [7:0] XSFRout;

CB IO cb io(

.reset(reset),

.clk(clk),

.CBread(CBread),

.CBclear(CBclear),

.CBrew(CBrew),

.CBposRew(CBposRew),

.CBdata(CBdata),

.XSFRin( XSFRin ),

.XSFRout( XSFRout),

.XSFRwradd( SFRwradd ),

.XSFRrdadd( 2’h0 ),

.XSFRwr( SFRwr ),

.XSFRrd( SFRrd )

);

initial

begin

SFRwr=0; SFRrd=0;

#(800*‘usec);

repeat(2)

begin

// riposizionamento puntatore di lettura

posRew = spDuration1 + spDuration2;

XSFRin <= posRew[ 15: 8];

SFRwradd <= 2’b10;

SFRwr <= 1;

#(TC) SFRwr <= 0;

#(TC*5) XSFRin <= posRew[ 7: 0];

SFRwradd <= 2’b11;

SFRwr <= 1;

#(TC) SFRwr <= 0;

#(TC*5) SFRwradd <= 2’b01;

SFRwr <= 1;

#(TC) SFRwr <= 0;

$display(inizio lettura: T=%0d , $time);

// lettura

repeat( spDuration1 *8 )

begin

#(TC*5) SFRrd <= 1;

#(TC) SFRrd <= 0;

end

#(TC*200);

repeat( spDuration2 *8 )

begin

#(TC*5) SFRrd <= 1;

#(TC) SFRrd <= 0;

end

#(TC*20) SFRwradd <= 2’b00;

SFRwr <= 1;

#(TC) SFRwr <= 0;

// wait next spill

#(3000*‘usec);

end

end

initial // verifica generatore clock DAC

begin

DACen=0;

145

#10000 DACen <= 4’b1000;

#1000 DACen <= 4’b0100;

#1000 DACen <= 0;

end

initial // verifica mask-polarity

begin

dataMask=64’hffff 0000 0000 ffff;

dataPol = 1’b1;

#(4.7*‘msec) dataMask <= 64’h0000 ffff ffff 0000;

dataPol <= 1’b0;

end

initial // test cycle-clr

begin

cycleCLR =0;

#(9.55*‘msec) cycleCLR <=1;

#(30) cycleCLR <=0;

end

initial // verifica scrittura buffer

fork // tempi assoluti

//#( <t inizio lettura> + <posizione buffer>*<ciclo di lettura (6 clk)>*8

+ <posizione byte nei 64>*<ciclo di lettura> + 50 )

// segnali positivi

#(800260+24*120*8+0*120+50) $display(‘‘rilettura segnale 1, T=%0d:

%b, %s’’ , $time , XSFRout, (XSFRout == 8’b00000010 )? ‘‘OK’’: ‘‘ERROR’’ );

#(800260+30*120*8+0*120+50) $display(‘‘rilettura segnale 2, T=%0d:

%b, %s’’ , $time , XSFRout, (XSFRout == 8’b00001000 )? ‘‘OK’’: ‘‘ERROR’’ );

#(800260+85*120*8+2*120+50) $display(‘‘rilettura segnale 3, T=%0d:

%b, %s’’ , $time , XSFRout, (XSFRout == 8’b00000000 )? ‘‘OK’’: ‘‘ERROR’’ );

#(800260+135*120*8+0*120+50) $display(‘‘rilettura segnale 4, T=%0d:

%b, %s’’ , $time , XSFRout, (XSFRout == 8’b00010000 )? ‘‘OK’’: ‘‘ERROR’’ );

#(800260+142*120*8+7*120+50) $display(‘‘rilettura segnale 5, T=%0d:

%b, %s’’ , $time , XSFRout, (XSFRout == 8’b01000000 )? ‘‘OK’’: ‘‘ERROR’’ );

// segnali negativi

#(5723980+26*120*8+2*120+50) $display(‘‘rilettura segnale 6, T=%0d:

%b, %s’’ , $time , XSFRout, (XSFRout == 8’b00000100 )? ‘‘OK’’: ‘‘ERROR’’ );

#(5723980+36*120*8+3*120+50) $display(‘‘rilettura segnale 7, T=%0d:

%b, %s’’ , $time , XSFRout, (XSFRout == 8’b01000000 )? ‘‘OK‘‘: ‘‘ERROR’’ );

#(5723980+159*120*8+1*120+50) $display(‘‘rilettura segnale 8, T=%0d:

%b, %s’’ , $time , XSFRout, (XSFRout == 8’b00000000 )? ‘‘OK’’: ‘‘ERROR’’ );

#(5723980+237*120*8+4*120+50) $display(‘‘rilettura segnale 9, T=%0d:

%b, %s’’ , $time , XSFRout, (XSFRout == 8’b00000100 )? ‘‘OK’’: ‘‘ERROR’’ );

#(5723980+247*120*8+2*120+50) $display(‘‘rilettura segnale 10, T=%0d:

%b, %s’’ , $time , XSFRout, (XSFRout == 8’b01000000 )? ‘‘OK’’: ‘‘ERROR’’ );

join

endmodule

146

Appendice D

Schematico della FEB

In questa appendice riportiamo il disegno schematico della FEB di NESSiE.

147

NESSIE FRONTEND

DAC & ADC

Matteo Rizzi

1/6

Ver. 1.0

30/07/2012

3.3

V

capacitor 0.1uF located within 1cm of power pin

3.3

V

VDDA

DAC<2>

VDDA

AGND

GND

AGND

DAC<1>

AGND

AGND

GND

AGND

GND

100n

F

U10

9

DAC<3>

DAC<4>

DAC<5>

DAC<4>

29

56

R21 AGND

DAC<6>

DAC<9>

1

10

45

DAC<2>

DAC<1>

DAC<0>

U11

610K

R15

R11

56

32 31

R24

56

56

2718 19

22

V3.3

VDDA

C5

AGND

DAC<6>

DAC_WRCLK<2>

18 19DAC<0>

DAC_WRCLK<3>

R14

32

DAC<3>

VDW<0>

DAC_WRCLK<0>

DAC<8>

DAC<0>

DAC<2>

DAC<1>

DAC<3>

DAC<4>

DAC<5>

DAC<6>

DAC<7>

DAC<9>

DAC_WRCLK<1>

DAC<0>

DAC<1>

DAC<3>

DAC<5>

DAC<4>

DAC<6>

DAC<7>

DAC<8>

DAC<9>

DAC_WRCLK<0>

DAC_WRCLK<1>

U6

3847

44 4110

9 8 7 6 5 4 3 2 1

30 29 28 26 25 24 23

1521

1622

4342

46 45 39 40

48 37 17 20

2.2K

R17

AGND

R16

26DAC<7>

100n

F

AGND

10K U1

2

100n

FC1

3

VDDA

VDW<1>

30

DAC<8>

VUP<1>

AGND

R8

AGND

AGND

100n

F

56R3

2

ADC_DOUT

R7

C19

C14

R37R3

8

C12

76 5

R39

R41

8

12 3

4

U12

R428

12 3

4

U11

R43

75

R44

R40

C4

C6C8

R26

C11

C10

C9

C7

R27

R25

R22

R23

20173748

40394546

42 43

162115

232425272831

236784144

47 38

7

U7

R34

R31

R30

R35

R33

76 5

U3

8

12 3

4

U3

8

12 3

4

U7

R28

R29

2

10

4567

3

9

8 1

U4

VDDA

100n

F

ADC_CLK

ADC_DIN

ADC_CS

AGND

VDDA

100n

F

DAC<2>

AGND

AGND

VDDA

100n

F

GND

2.2K

56

AGND

V3.3

VDDA

AGND

1K

AGND

10K

10K

VUP<0>

10K

AGND

10K

10K

10K

10K

10K

VDDA

AGND

10K

VDDA

AGND

10K

10K

10K

10K

2.2K

2.2K

56

56

56

100n

F

1K

100n

F

10K

AGND

VDW<2>

VUP<3>

VDW<3>

VUP<3>

VUP<2>

VUP<1>

VDDA

VUP<2>

VDDA

100n

F

AGND

VDDA

100n

F

AGND

VUP<0>

DAC_WRCLK<3>

DAC_WRCLK<2>

DAC<9>

DAC<8>

DAC<5>

DAC<7>

AGND

AGND

1uF

AGND

ti-dac5652

DA8

DA0

DA2

DA1

DA3

DA4

DA5

DA6

DA7

DA9

MO

DECL

KACL

KBDB

0DB

1DB

2DB

3

DB5

DB4

DB6

DB7

DB8

GSE

TDB

9

WRT

A

EXTI

OSL

EEP

WRT

B

BIAS

J_B

BIAS

J_A

IOUT

A1

IOUT

B1IO

UTA2

IOUT

B2

DGND2DGND1AGNDAVDD

DVDD1DVDD2

ti-dac5652

DA8

DA0

DA2

DA1

DA3

DA4

DA5

DA6

DA7

DA9

MO

DECL

KACL

KBDB

0DB

1DB

2DB

3

DB5

DB4

DB6

DB7

DB8

GSE

TDB

9

WRT

A

EXTI

OSL

EEP

WRT

B

BIAS

J_B

BIAS

J_A

IOUT

A1

IOUT

B1IO

UTA2

IOUT

B2

DGND2DGND1AGNDAVDD

DVDD1DVDD2

88

766

5 544

3 322

1 1

DD

CC

BB

AA

TITLE:

ENGINEER:

DATE:

PAGE:

7

2/2

ad8652

INB+

OUT

_B

INB-

1/2

ad8652

OUT

_A

INA+

VCC GND

INA-

1/2

ad8652

OUT

_A

INA+

VCC GND

INA-

2/2

ad8652

INB+

OUT

_B

INB-

2/2

ad8652

INB+

OUT

_B

INB-

2/2

ad8652

INB+

OUT

_B

INB-

1/2

ad8652

OUT

_A

INA+

VCC GND

INA-

1/2

ad8652

OUT

_A

INA+

VCC GND

INA-

adc1

04s0

51

IN2

GND

VA

IN3

IN4

DOUT

DIN

CSN

SCLK

IN1

30/07/2012

PER

IL L

AYO.

VED

I DA

TAS.

NON MONTARE

COND

ENSA

TORI

VIC

INI

AI P

IN D

EL T

RASF

ORMA

TORE

FPGA + ETHERNET

NESSIE FRONTEND

Matteo Rizzi

2/6

Ver. 1.0

NON MONTARE

SU P

CB A

CTIV

ITY

ECC

RESI

STEN

ZE V

ICIN

E AL

DP3

848C

TX_EN

RXD<1..0>

R36

2.2K

1519

4645RXD<1>

RXD<0>

GND

CLOC

K_GE

N

C20

V3.3

RX_ER

R5

C90

4

3

2

U5

C15

C16

C17

C18

R20

R19

R12

33 34

654321 16 17 4443413938

29

13 14

24

7

23 3718 30 31

27 2826

4832

4735

36

40 42

22

25

U1

R18

R13

C1

R2R4

C2C3

R6R5

21

S2S1

63

1211

109

84 5

U2

R10

R9

R1R3

2

1

3

Q1

R45

2 1

P1

42

31

U16

KALED1

R46

R53

R51

R52

R50

R49

54321J3

R54 J4

C21

3

8

1 7

4

2

5 6

U9

R48

R47

C1 T8

A15

E14C12C14

P14

B8

H13 T2

T10

P9 N9

N11T11

R3

C4

A2B2 C8 P13

D8

P10

B1

T3A8

T6

L11

J13

R11

C2

U8

KA LED2

KA LED3

KA LED4

987654321J5

R59

R58

R61

R62

R63

KA LED5

R55

R56

R57

R60

2.2K

ADC_CS

CRS_DV

MOSI

V3.3

100NFV3.3

VCCAUX=V3.3

TMS

V3.3

V3.3

V3.3

100n

F

GND

GND

100n

FPUSH_BUTTON

V3.3

CRS_DV

RX_ER

DP83848C

LED_A

LED_S

LED_L

V3.3

TCK

V3.3

616-9391P

V3.3

FASTOR1

ADC_DOUT

CLK_50

100K

CLK_50

V3.3

GND

MDC

MDIO

RD-

RD+

TD+

TD-

TX_EN

TXD<0>

TXD<1>

10UF

100NF

100NF

100NF

GND2.

2K2.2K

4.7K

GND

2.2K

1.5K

V3.3TD+

RD-

47

47

GND

1002.2K

1002.2K

47

47

SW<11..0>

WRITE_BUF

CYCLE

ABORT

DONE

DIN

TP<3..0>

LED<3..0>

FASTOR2

TDITDO

CCLK

VCCO_1=V3.3

VCCINT=V1.2

VCCO_0=V3.3

33

GND

GND

GND

GND

100K

LED<3>

LED<2>

LED<1>

LED<0>

GND

1K

1K

1K

1K

DONE

330

2N70

02

1K

V3.3

GND

TP<3>

TP<2>

TP<1>

TP<0>

HEAD

ER_5

TDI

TDO

TCK

TMS

1K 1K1K1K

INIT_B

V3.3

CSO_B

V3.3 4.7K

HEADER_9

V3.3

GNDTCK

TDI

TDO

TMS

0

GND

V3.3GND JU

MPER

W#

MOSI

CCLK

CSO_B

W#

1K

GND

PROG_B

4.7K

GND

GND

100n

F

DIN

VCCO_3=V3.3

VCCO_2=V3.3

LED_A

100NFTD

-

GND

GND

RD+

100NF

CLK_50

LED_S

GND

GND

TXD<1..0>

LED_L

PROG_B

MDC

MDIO

GND

V3.3

INIT_B

V3.3

ADC_CLK

ADC_DIN

DAC<9..0>

DAC_WRCLK<3..0>

100

CSO_B

SIGNAL<63..0>

RESET

88

766

5 544

3 322

1 1

DD

CC

BB

AA

TITLE:

ENGINEER:

DATE:

PAGE:

7

VCC

GND

PFBI

N2

RBIA

S

LED_

SPEE

D/AN

1

IOGND

DGND

MDC

MDI

O

TX_C

LK RD-

RD+

TD+

TD-

25M

HZ_O

UTLE

D_AC

T/CO

L/AN

_EN

COL/

PHYA

D0RX

D_0/

PHYA

D1RX

D_1/

PHYA

D2RX

D_2/

PHYA

D3RX

D_3/

PHYA

D4

TX_E

NTX

D_0

TXD_

1

TXD_

3/SN

I_M

ODE

TXD_

2

PWR_

DOW

N/IN

TPF

BIN1

PFBO

UT

RESE

T_N

X2 X1

AGNDAGND1

IOGND1

IOVDD33IOVDD33

AVDD33

RX_E

R/M

DIX_

ENCR

S/CR

S_DV

/LED

_CFG

RX_D

V/M

II_M

ODE

RX_C

LKLE

D_LI

NK/A

N0

GREEN

YELLOW

HFJ11_2450E

J6 RX-

J4,5

J7,8

J3 RX+

J2 TX-

J1 TX+

CTTD+

GND

RD-

TD-

RD+

CR

SHSH

max6443us31L

VCC

MR*

GND

RESE

T*

m25p

80-v

mn6p

DQ0

DQ1

VCC

HOLD

#W

#S#CL

K

GND

fpga

_fe

PRO

GRA

M_B

_2

MDC

MDI

OCR

S_DV

_PIN

TX_E

N_PI

NTX

D_PI

N[1.

.0]

RXD_

PIN[

1..0

]RX

_ER_

PIN

CLKP

ADDI

N_AD

C

SIG

NALI

N[63

..0]

SW[1

1..0

]RE

SET

WRI

TE_B

UFCY

CLE

ABO

RTFA

STO

R1

DONE

_2IN

ITCC

LKCS

O_BDIN

MO

SI

DOUT

_ADC

SCLK

_ADC

CS_A

DC

DACD

ATA[

9..0

]DA

CWR[

3..0

]

TP[3

..0]

LED[

3..0

]CM

PCS_

B_2

FAST

OR2

TDITDO

TCK

M1M0

TMS

SUSPEND

HSWAPEN

8 96 754321

GND DIGITALEV ANALOGICA

Ver. 1.0

30/07/2012

NESSIE FRONTEND

Matteo Rizzi

Signal Interface

3/6

V DIGITALEGND ANALOGICAGND DIGITALE

A18

SIGN<33>

SIGN<37>

SIGN<38>

SIGN<39>

SIGN<40>

SIGN<41>

SIGN<42>

SIGN<43>

C7

100n

F

SIGNAL<0..15>

B32

B31

B30

B29

B28

B27

B26

B25

B24

B23

B22

B21

B20

B19

B18

B17

B16

B15

B14

B13

B12

B11

B10B9B8B7B6B5B4B3B2B1

J2

A32

A31

A30

A29

A28

A27

A26

A25

A24

A23

A22

A21

A20

A19

A18

A17

A16

A15

A14

A13

A12

A11

A10A9A8A7A6A5A4A3A2A1

J2

C32

C31

C30

C29

C28

C27

C26

C25

C24

C23

C22

C21

C20

C19

C18

C17

C16

C15

C14

C13

C12

C11

C10C9C8C6C5C4C3C2C1

J2

A32

A31

A30

A29

A28

A27

A26

A25

A24

A23

A22

A21

A20

A19

A17

A16

A15

A14

A13

A12

A11

A10A9A8A7A6A5A4A3A2A1

J1

B32

B31

B30

B29

B28

B27

B26

B25

B24

B23

B22

B21

B20

B19

B18

B17

B16

B15

B14

B13

B12

B11

B10B9B8B7B6B5B4B3B2B1

J1

C32

C31

C30

C29

C28

C27

C26

C25

C24

C23

C22

C21

C20

C19

C18

C17

C16

C15

C14

C13

C12

C11

C10C9C8C7C6C5C4C3C2C1

J1

14 7

1213

1011

89

65

43

21

U14

C53

SIGP<21>

SIGN<24>

SIGN<25>

VDW<1>

SIGNAL<32..47>

SIGN<55>

SIGN<53>

AGND

SIGP<2>

AGND

+5V

SIGN<35>

AGND

SIGN<26>

SIGP<13>

SIGP<10>

SIGNAL<48..63>

VDW<0>

SIGN<0..15>

I5PUL<3>

SIGN<48..63>

SIGP<48..63>

SIGN<32..47>

SIGP<32..47>

SIGNAL<16..31>

SIGN<16..31>

SIGP<16..31>

SIGP<0..15>

VUP<2>

PUL<0>

VUP<1>

SIGP<45>

SIGP<44>

GND

SW<10>

SIGP<35>

SIGP<37>

SIGP<38>

SIGN<50>

SIGN<28>

SIGP<9>

SIGN<54>

SIGN<52>

SIGN<51>

SIGN<46>

SIGN<47>

SIGN<48>

SIGN<49>

VDW<3>

SIGN<57>

SIGN<56>

SIGP<6>

SIGP<4>

SIGP<39>

SIGP<42>

SW<4>

SIGP<56>

SIGP<33>

SIGP<32>

SIGP<36>

SIGP<34>

SIGP<41>

SIGP<40>

SIGP<43>

SIGP<46>

SIGP<47>

SIGP<48>

SIGP<49>

SIGP<50>

SIGP<51>

SIGP<54>

SIGP<52>

SIGP<53>

SIGP<59>

SIGP<57>

SIGP<60>

SIGP<61>

SW<11>

SW<9>

SW<8>

SW<7>

SW<6>

SW<5>

SW<3>

SW<1>

SIGN<45>

SIGN<44>

SIGN<36>

PULSE

FASTOR2

ABORT

WRITE_BUF

CYCLE

FASTOR1

SIGP<24>

SIGP<19>

SIGP<27>

SIGP<25>

SIGP<28>

SIGP<29>

SIGP<30>

SIGP<26>

SIGN<12>

SIGN<11>

SIGN<7>

V3.3

GND

PULSE

PUL<0>

VDDA

I3I2I1

VUP<3>

VDW<2>

PUL<2>

PUL<1>

SIGP<31>

SIGN<58>

SIGN<63>

SIGP<23>

SIGP<22>

SIGP<20>

SIGN<10>

SIGP<18>

SIGP<17>

SIGP<16>

SIGP<15>

SIGP<14>

SIGP<12>

SIGP<11>

SIGP<8>

SIGP<7>

SIGP<3>

SIGP<0>

VUP<0>

SIGN<32>

SIGP<63>

SIGP<58>

SIGP<55>

SIGP<5>

SIGN<61>

SIGN<62>

PUL<3>

PUL<2>

PUL<1>

SIGN<59>

SIGN<60>

SIGP<62>

SW<2>

SW<0>

SIGN<14>

SIGN<15>

SIGN<16>

SIGN<18>

SIGN<19>

SIGN<0>

SIGN<34>

SIGN<2>

SIGN<3>

SIGN<4>

SIGN<5>

SIGN<6>

SIGN<8>

SIGN<9>

SIGN<13>

SIGN<17>

SIGN<1>

SIGP<1>

SIGN<29>

SIGN<31>

SIGN<30>

SIGN<27>

SIGN<23>

SIGN<22>

SIGN<21>

SIGN<20>

VDDA

88

766

5 544

3 322

1 1

DD

CC

BB

AA

TITLE:

ENGINEER:

DATE:

PAGE:

7

RECE

IVER

_16

Y<16

..1>

VUP

SIG

P<16

..1>

SIG

N<16

..1>

PULSE

VDW

RECE

IVER

_16

Y<16

..1>

VUP

SIG

P<16

..1>

SIG

N<16

..1>

PULSE

VDW

conn96_male

B25

B32

B2B1 B5B4B3 B7B6 B10

B9B8 B12

B11

B13

B15

B14

B16

B17

B18

B19

B20

B23

B21

B22

B24

B28

B26

B29

B30

B31

B27

conn96_male

A20

A14

A5 A6A3A1 A2 A4 A32

A31

A30

A29

A28

A27

A26

A25

A24

A22

A23

A21

A19

A18

A17

A16

A15

A13

A12

A11

A10

A9A8A7

RECE

IVER

_16

Y<16

..1>

VUP

SIG

P<16

..1>

SIG

N<16

..1>

PULSE

VDW

conn96_male

C32

C31

C30

C29

C28

C26

C27

C25

C24

C23

C21

C22

C20

C19

C18

C16

C17

C15

C14

C13

C12

C11

C10

C9C8C7C6C5C4C3C2C1

conn96_male

A20

A14

A5 A6A3A1 A2 A4 A32

A31

A30

A29

A28

A27

A26

A25

A24

A22

A23

A21

A19

A18

A17

A16

A15

A13

A12

A11

A10

A9A8A7

conn96_male

B25

B32

B2B1 B5B4B3 B7B6 B10

B9B8 B12

B11

B13

B15

B14

B16

B17

B18

B19

B20

B23

B21

B22

B24

B28

B26

B29

B30

B31

B27

conn96_male

C32

C31

C30

C29

C28

C26

C27

C25

C24

C23

C21

C22

C20

C19

C18

C16

C17

C15

C14

C13

C12

C11

C10

C9C8C7C6C5C4C3C2C1

74hc

04d

2A

VCC

1A

GND

3A 4A

1Y 2Y 3Y 4Y 5Y 6Y5A 6A

RECE

IVER

_16

Y<16

..1>

VUP

SIG

P<16

..1>

SIG

N<16

..1>

PULSE

VDW

30/07/2012

Ver. 1.0

Matteo Rizzi

NESSIE FRONTEND

ESD Protection 1

4/6

SIGN<16>

4SIGP<17>

AGND

SIGP<5>

SIGP<7>

VDDA

5

1

56 431 2

U3256 4

31 2

U3156 4

31 2

U3056 4

31 2

U29

C79

C78

C77

C76

C66

C67

C68

56 432

U26 56 4

31 2

U27

56 431 2

U22

56 431 2

U2056 4

31 2

U19

C63

56 431 2

U23

C64

C65

56 431 2

U24

6

31 2

U25 56 4

31 2

U28

56 431 2

U21

56 431 2

U1856 4

31 2

U17

C62

C61

C60

C59

C58

C57

SIGP<28>

SIGN<22>

100n

F

VDDA

100n

F

AGND

SIGN<13>

100n

F

AGND

SIGP<8>

AGND

SIGP<10>

SIGN<11>

SIGP<13>

SIGN<14>

100n

F

SIGN<15>

SIGP<1>

SIGP<0>

VDDA

VDDA

SIGN<2>

VDDA

VDDA

100n

F

AGND

VDDA

SIGP<2>

SIGN<3>

SIGP<3>

VDDA

AGND

SIGN<1>

SIGN<0>

SIGN<9>

SIGP<9>

SIGN<8>

SIGP<30>

SIGN<31>

SIGP<31>

SIGN<30>

SIGN<29>

SIGP<29>

SIGN<28>

SIGP<26>

SIGN<27>

SIGP<27>

SIGN<26>

SIGP<24>

SIGN<25>

SIGP<25>

SIGN<24>

SIGP<12>

SIGN<12>

SIGP<14>

SIGP<15>

SIGP<16>

SIGN<17>

SIGP<18>

SIGN<19>

SIGP<19>

SIGN<18>

SIGP<20>

SIGN<21>

SIGP<21>

SIGN<20>

SIGP<22>

SIGN<23>

SIGP<23>

SIGP<11>

SIGN<10>

SIGP<6>

SIGN<7>

SIGN<6>

SIGP<4>

SIGN<5>

SIGN<4>

VDDA

VDDA

AGND

AGND

VDDA

AGND

VDDA

AGND

VDDA

AGND

VDDA

VDDA

AGND

VDDA

AGND

AGND

VDDA

AGND

VDDA

AGND

AGND

VDDA

AGND

VDDA

VDDA

AGND

AGND

VDDA

AGND

VDDA

VDDA

VDDA

AGND

VDDA

AGND

AGND

AGND

AGND

AGND

VDDA

VDDA

AGND

AGND

VDDA

VDDA

AGND

VDDA

AGND

AGND

VDDA

100n

F

100n

F

100n

F

100n

F

100n

F

100n

F

100n

F

100n

F

100n

F

100n

F

100n

F

88

766

5 544

3 322

1 1

DD

CC

BB

AA

TITLE:

ENGINEER:

DATE:

PAGE:

7

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

Ver. 1.0

30/07/2012

NESSIE FRONTEND

ESD Protection 2

Matteo Rizzi

5/6

C85

C84

56 431 2

U41

56 431 2

U4856 4

31 2

U4656 4

31 2

U45

56 431 2

U3656 4

31 2

U3556 4

31 2

U3456 4

31 2

U33

C83

56 431 2

U40

C82

C81

C80

56 431 2

U3956 4

31 2

U3856 4

31 2

U37

C86

56 431 2

U4456 4

31 2

U4356 4

31 2

U42

C88

C87

56 431 2

U47

C69

C74

C71

C75

C73

C72

C70

AGND

SIGP<33>

100n

F

VDDA

SIGP<32>

VDDA

SIGP<60>

SIGN<32>

100n

F

100n

F

100n

F

100n

F

100n

F

100n

F

100n

F

100n

F10

0nF

100n

F

100n

F

100n

F10

0nF

100n

F

100n

F

SIGN<41>

SIGP<36>

SIGN<34>

SIGN<48>

VDDA

SIGP<49>

AGND

AGND

AGND

SIGP<47>

VDDA

AGND

VDDA

SIGN<63>

SIGP<63>

AGND

SIGN<62>

SIGP<61>

SIGN<60>

SIGP<59>

SIGN<58>

SIGP<57>

SIGN<56>

SIGP<55>

SIGN<54>

SIGP<53>

SIGN<52>

SIGP<51>

SIGN<50>

AGND

SIGN<46>

SIGP<45>

SIGN<44>

SIGP<43>

SIGN<42>

SIGP<41>

SIGN<40>

SIGP<39>

SIGN<38>

SIGP<37>

SIGN<36>

SIGP<35>

SIGP<62>

SIGN<61>

SIGN<59>

SIGP<58>

SIGN<57>

SIGP<56>

SIGN<55>

VDDA

VDDA

AGND

VDDA

SIGP<54>

SIGN<53>

SIGN<51>

SIGP<50> AGND

SIGN<49>

SIGP<48>

SIGN<47>

AGND

SIGP<46> AGND

SIGN<45>

SIGP<44>

SIGN<43>

SIGP<42>

SIGP<40>

AGND

SIGN<39>

VDDA

AGND

SIGP<38>

SIGN<37>

SIGN<35>

AGND

SIGP<34>

SIGN<33>

VDDA

AGND

VDDA

AGND

VDDA

AGND

VDDA

VDDA

VDDA

AGND

VDDA

AGND

VDDA

AGND

AGND

VDDA

VDDA

AGND

VDDA

VDDA

AGND

VDDA

VDDA

AGND

VDDA

VDDA

VDDA

AGND

VDDA

AGND

VDDA

AGND

VDDA

AGND

AGND

VDDA

VDDA

AGND

VDDA

AGND

AGND

SIGP<52>

88

766

5 544

3 322

1 1

DD

CC

BB

AA

TITLE:

ENGINEER:

DATE:

PAGE:

7

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

HDMIULC6

VBUS

GNDIO1

IO2

IO3

IO4

FILTRI FPGA

VCCA

UX

VCCI

NT

VCC_

IO

FILT

RO D

P838

48C

Matteo Rizzi

30/07/2012

Ver. 1.0

6/6

Power Supply

NESSIE FRONTEND

3.3V DIGITALE

3.3V ANALOGICA

FC01

FC02

15

24

3

U15

21

L1

FC05

FC06

KA

LED6

23

1

U13

R64

KA

LED7

R65

C54

C55

C56

C26

C28

C31

C34

C30

C33

C36 C3

7C4

0C4

3C4

7C4

9

C39

C41

C44

C46

C22

C23

C24

C25

C27

C29

C32

C35

C38

C42

C45

C48

C50

C51

C52

4.7u

F

100u

F

47nF

47nF

4.7UF

LM3671LC

10UF

AGND

10UF

VDDA

100NF

GND

470n

F

100u

F

2.2MH

V3.3

GND

ADP3

338

+5V

GND

V1.2

AGND

+5V

1K

VDDA

GND

1K

V3.3

V3.3

V3.3

47nF

47nF

47nF

4.7u

F47

nF

GND

47nF

47nF

4.7u

F

4.7u

F

GND

V1.2 4.

7uF

47nF

10UF

47nF

470n

FV3.3

GND

47nF

47nF

47nF

47nF

47nF

470n

F470n

F47

0nF

470n

F47

0nF4.

7uF

88

766

5 544

3 322

1 1

DD

CC

BB

AA

TITLE:

ENGINEER:

DATE:

PAGE:

7

FBENG

NDVI

NSW

INO

UT

GND

+

+

1

Ver. 1.0

27/07/2012

NESSIE FRONTEND

RECEIVER 16 CH

Matteo Rizzi

R61_5 R62_5

C26_

5

R37_5

R50_

5

R51_

5 C27_

5

C28_

5

R38_5

R52_

5

R53_

5 C29_

5 R63_5 R64_5

C30_

5

R39_5

R54_

5

R55_

5 C31_

5

R40_5

C32_

5

R56_

5

R8_5

R24_

5

C16_

5

R32_5

R7_5

R23_

5 C15_

5

R22_

5

C14_

5

R31_5

R6_5

C13_

5

R21_

5R2

0_5

C12_

5

R30_5

R5_5

C11_

5

R19_

5

R18_

5

C10_

5

R29_5

C9_5

R17_

5R4_5

R16_

5

C8_5

R28_5

R3_5

C7_5

R15_

5

R14_

5

C6_5

R27_5

C5_5

R13_

5

R2_5

R12_

5

C4_5

R26_5

C3_5

R11_

5

R1_5

R10_

5

C2_5C1

_5

R9_5

R25_5

C41_

5

C42_

5

C43_

5

C44_

5C4

6_5

C45_

5

C48_

5

C47_

5C3

7_5

C38_

5

C39_

5

C40_

5C5

0_5

C49_

5

C52_

5

C51_

5

C36_

5C3

5_5

C34_

5C3

3_5

R68_5

R67_5

R66_5

R65_5

R57_5

R41_

5 C17_

5

R33_5

R58_5 R59_5

R42_

5

C18_

5

R43_

5 C19_

5

C20_

5

R34_5

R44_

5

R45_

5 C21_

5

R35_5

R60_5

R46_

5

C22_

5

R47_

5 C23_

5

C24_

5R36_5

R48_

5

R49_

5 C25_

5

U1_5

GND=AGND

3742556038

3231

39

3029

40

2827

41

2625

43

2423

44

2221

45

2019

46

1817

51

1615

521413

531211

5410

956

87

57

65

58

43

59

21

100n

F10

0nF

100n

F10

0nF

AGND\g

VDDA

10K

100n

F

VUP\i

pulse\i 10

0pF

100

15K

15K

pulse\i

A+<16>

VUP\i

A+<1>

SIGp<13>\i

Y<4>\i

Y<3>\i

Y<5>\i

SIGn<12>\i

pulse\i 10

0pF 100n

F

SIGp<1>\i

VUP\i

100

100n

F

100p

F

100n

F

100n

F

100p

F100n

F

100n

F

100p

F

100p

F100n

F

100p

F

100n

F

100p

F 100n

F

100n

F

100p

F 100n

F

100p

F

VDW\i

pulse\i

VUP\i

SIGn<3>\i

SIGp<3>\i

15K

15K

10K

100p

F 100n

F

100n

F

100p

F 100n

F

100n

F

100p

F 100n

F

100n

F

pulse\i10

0pF 100n

F

100n

F

100n

F

VDW\i

A-<7>

10K

A-<11>

15K

15K

A+<7>

SIGp<7>\i

100n

F

100n

F

100n

F

100p

F

A-<9>

A+<14>

10K

SIGn<2>\iVDW\i

10K

SIGn<11>\i

pulse\i

pulse\i

A+<4>

SIGp<4>\i

VUP\i

15K

15K

VUP\i

15K

SIGn<8>\i

SIGp<8>\i

15K

15K

100

A-<4>

A-<8>

100

10K

15K

100

10K

100VDW\i

A-<6>

15K

100

10K10K

VDW\i

SIGp<11>\i

100 100

10K

15K

100

VDW\i

SIGn<9>\i

15K

100

10K

VDW\i

VUP\i

VDW\i

A-<16>

SIGp<14>\i

15K

15K

15K

10K10K

15K

10K

15K

VUP\i

A+<5>

15K

15K

15K

VUP\i

A+<11>

15K

15K

VUP\i

pulse\i

pulse\i

pulse\i

SIGn<4>\i

VDW\i

15K

100

SIGp<2>\i

SIGn<1>\i VD

W\i

VUP\i

A+<8>

SIGn<7>\i

VDW\i

pulse\i

VUP\i

VUP\i

10K

15K

100

SIGn<13>\i

SIGp<10>\i

100

SIGp<12>\i

pulse\i

15K

A-<13>

A+<13>

1K

100p

F 100n

F

100

1K

1K

1K

A-<12>

100n

F

100

100n

F

A+<9>

pulse\i

15K

pulse\i

VCC=VDDA

A+<5>

A+<1>

A-<1>

A+<2>

A-<2>

A+<3>

A-<3>

A+<4>

A-<4>

A+<7>

A+<8>

A-<8>

A+<9>

A-<9>

A+<10>

A+<11>

A-<11>

A-<12>

A+<13>

A-<13>

A+<14>

A-<14>

A+<15>

A-<15>

A+<16>

A-<16>

Y<1>\i

Y<2>\i

Y<6>\i

Y<7>\i

Y<8>\i

Y<9>\i

Y<11>\i

Y<12>\i

Y<13>\i

Y<14>\i

Y<15>\i

Y<16>\i

A-<5>

A+<6>

pulse\i

A-<6>

VDDA

15K

A+<10>

SIGp<16>\i

SIGn<16>\iVDW\i

VDW\i

SIGp<9>\i

15K

A-<7>

A-<10>

VDW\i

A-<15>

A+<15>

SIGn<14>\i

A-<5>

100n

F

SIGp<5>\i

A-<14>

VUP\i

A+<12>

15K

100n

F

100n

F

A-<3>

A+<3>

A-<2>

A+<2>

SIGn<6>\i

SIGp<6>\i

A-<1>

SIGn<15>\i

VDW\i

SIGn<10>\i

VDW\i

SIGn<5>\i

VUP\i

A+<6>

Y<10>\i

10K

100n

F

SIGp<15>\i

100n

F

VUP\i

pulse\i

A-<10>

A+<12>

88

766

5 544

3 322

1 1

DD

CC

BB

AA

TITLE:

ENGINEER:

DATE:

PAGE:

7

SN75

LVDS

386

B2B*

B2A

B1B*

END

ENC

ENB

ENA

D4Y

D3Y

D2Y

D1Y

C4Y

C3Y

C2Y

C1Y

B4Y

B3Y

B2Y

B1Y

A4Y

A3Y

A2Y

A1Y

D4B*

D4A

D3B*

D3A

D2B*

D2A

D1B*

D1A

C4B*

C4A

C3B*

C3A

C2B*

C2A

C1B*

C1A

B4B*

B4A

B3B*

B3A

A4B*

A4A

A3B*

A3A

A2B*

A2A

A1B*

A1A

B1A

1

Ver. 1.0

27/07/2012

NESSIE FRONTEND

RECEIVER 16 CH

Matteo Rizzi

R61_6 R62_6

C26_

6

R37_6

R50_

6

R51_

6 C27_

6

C28_

6

R38_6

R52_

6

R53_

6 C29_

6 R63_6 R64_6

C30_

6

R39_6

R54_

6

R55_

6 C31_

6

R40_6

C32_

6

R56_

6

R8_6

R24_

6

C16_

6

R32_6

R7_6

R23_

6 C15_

6

R22_

6

C14_

6

R31_6

R6_6

C13_

6

R21_

6R2

0_6

C12_

6

R30_6

R5_6

C11_

6

R19_

6

R18_

6

C10_

6

R29_6

C9_6

R17_

6R4_6

R16_

6

C8_6

R28_6

R3_6

C7_6

R15_

6

R14_

6

C6_6

R27_6

C5_6

R13_

6

R2_6

R12_

6

C4_6

R26_6

C3_6

R11_

6

R1_6

R10_

6

C2_6C1

_6

R9_6

R25_6

C41_

6

C42_

6

C43_

6

C44_

6C4

6_6

C45_

6

C48_

6

C47_

6C3

7_6

C38_

6

C39_

6

C40_

6C5

0_6

C49_

6

C52_

6

C51_

6

C36_

6C3

5_6

C34_

6C3

3_6

R68_6

R67_6

R66_6

R65_6

R57_6

R41_

6 C17_

6

R33_6

R58_6 R59_6

R42_

6

C18_

6

R43_

6 C19_

6

C20_

6

R34_6

R44_

6

R45_

6 C21_

6

R35_6

R60_6

R46_

6

C22_

6

R47_

6 C23_

6

C24_

6R36_6

R48_

6

R49_

6 C25_

6

U1_6

GND=AGND

3742556038

3231

39

3029

40

2827

41

2625

43

2423

44

2221

45

2019

46

1817

51

1615

521413

531211

5410

956

87

57

65

58

43

59

21

100n

F10

0nF

100n

F10

0nF

AGND\g

VDDA

10K

100n

F

VUP\i

pulse\i 10

0pF

100

15K

15K

pulse\i

A+<16>

VUP\i

A+<1>

SIGp<13>\i

Y<4>\i

Y<3>\i

Y<5>\i

SIGn<12>\i

pulse\i 10

0pF 100n

F

SIGp<1>\i

VUP\i

100

100n

F

100p

F

100n

F

100n

F

100p

F100n

F

100n

F

100p

F

100p

F100n

F

100p

F

100n

F

100p

F 100n

F

100n

F

100p

F 100n

F

100p

F

VDW\i

pulse\i

VUP\i

SIGn<3>\i

SIGp<3>\i

15K

15K

10K

100p

F 100n

F

100n

F

100p

F 100n

F

100n

F

100p

F 100n

F

100n

F

pulse\i10

0pF 100n

F

100n

F

100n

F

VDW\i

A-<7>

10K

A-<11>

15K

15K

A+<7>

SIGp<7>\i

100n

F

100n

F

100n

F

100p

F

A-<9>

A+<14>

10K

SIGn<2>\iVDW\i

10K

SIGn<11>\i

pulse\i

pulse\i

A+<4>

SIGp<4>\i

VUP\i

15K

15K

VUP\i

15K

SIGn<8>\i

SIGp<8>\i

15K

15K

100

A-<4>

A-<8>

100

10K

15K

100

10K

100VDW\i

A-<6>

15K

100

10K10K

VDW\i

SIGp<11>\i

100 100

10K

15K

100

VDW\i

SIGn<9>\i

15K

100

10K

VDW\i

VUP\i

VDW\i

A-<16>

SIGp<14>\i

15K

15K

15K

10K10K

15K

10K

15K

VUP\i

A+<5>

15K

15K

15K

VUP\i

A+<11>

15K

15K

VUP\i

pulse\i

pulse\i

pulse\i

SIGn<4>\i

VDW\i

15K

100

SIGp<2>\i

SIGn<1>\i VD

W\i

VUP\i

A+<8>

SIGn<7>\i

VDW\i

pulse\i

VUP\i

VUP\i

10K

15K

100

SIGn<13>\i

SIGp<10>\i

100

SIGp<12>\i

pulse\i

15K

A-<13>

A+<13>

1K

100p

F 100n

F

100

1K

1K

1K

A-<12>

100n

F

100

100n

F

A+<9>

pulse\i

15K

pulse\i

VCC=VDDA

A+<5>

A+<1>

A-<1>

A+<2>

A-<2>

A+<3>

A-<3>

A+<4>

A-<4>

A+<7>

A+<8>

A-<8>

A+<9>

A-<9>

A+<10>

A+<11>

A-<11>

A-<12>

A+<13>

A-<13>

A+<14>

A-<14>

A+<15>

A-<15>

A+<16>

A-<16>

Y<1>\i

Y<2>\i

Y<6>\i

Y<7>\i

Y<8>\i

Y<9>\i

Y<11>\i

Y<12>\i

Y<13>\i

Y<14>\i

Y<15>\i

Y<16>\i

A-<5>

A+<6>

pulse\i

A-<6>

VDDA

15K

A+<10>

SIGp<16>\i

SIGn<16>\iVDW\i

VDW\i

SIGp<9>\i

15K

A-<7>

A-<10>

VDW\i

A-<15>

A+<15>

SIGn<14>\i

A-<5>

100n

F

SIGp<5>\i

A-<14>

VUP\i

A+<12>

15K

100n

F

100n

F

A-<3>

A+<3>

A-<2>

A+<2>

SIGn<6>\i

SIGp<6>\i

A-<1>

SIGn<15>\i

VDW\i

SIGn<10>\i

VDW\i

SIGn<5>\i

VUP\i

A+<6>

Y<10>\i

10K

100n

F

SIGp<15>\i

100n

F

VUP\i

pulse\i

A-<10>

A+<12>

88

766

5 544

3 322

1 1

DD

CC

BB

AA

TITLE:

ENGINEER:

DATE:

PAGE:

7

SN75

LVDS

386

B2B*

B2A

B1B*

END

ENC

ENB

ENA

D4Y

D3Y

D2Y

D1Y

C4Y

C3Y

C2Y

C1Y

B4Y

B3Y

B2Y

B1Y

A4Y

A3Y

A2Y

A1Y

D4B*

D4A

D3B*

D3A

D2B*

D2A

D1B*

D1A

C4B*

C4A

C3B*

C3A

C2B*

C2A

C1B*

C1A

B4B*

B4A

B3B*

B3A

A4B*

A4A

A3B*

A3A

A2B*

A2A

A1B*

A1A

B1A

1

Ver. 1.0

27/07/2012

NESSIE FRONTEND

RECEIVER 16 CH

Matteo Rizzi

R61_7 R62_7

C26_

7

R37_7

R50_

7

R51_

7 C27_

7

C28_

7

R38_7

R52_

7

R53_

7 C29_

7 R63_7 R64_7

C30_

7

R39_7

R54_

7

R55_

7 C31_

7

R40_7

C32_

7

R56_

7

R8_7

R24_

7

C16_

7

R32_7

R7_7

R23_

7 C15_

7

R22_

7

C14_

7

R31_7

R6_7

C13_

7

R21_

7R2

0_7

C12_

7

R30_7

R5_7

C11_

7

R19_

7

R18_

7

C10_

7

R29_7

C9_7

R17_

7R4_7

R16_

7

C8_7

R28_7

R3_7

C7_7

R15_

7

R14_

7

C6_7

R27_7

C5_7

R13_

7

R2_7

R12_

7

C4_7

R26_7

C3_7

R11_

7

R1_7

R10_

7

C2_7C1

_7

R9_7

R25_7

C41_

7

C42_

7

C43_

7

C44_

7C4

6_7

C45_

7

C48_

7

C47_

7C3

7_7

C38_

7

C39_

7

C40_

7C5

0_7

C49_

7

C52_

7

C51_

7

C36_

7C3

5_7

C34_

7C3

3_7

R68_7

R67_7

R66_7

R65_7

R57_7

R41_

7 C17_

7

R33_7

R58_7 R59_7

R42_

7

C18_

7

R43_

7 C19_

7

C20_

7

R34_7

R44_

7

R45_

7 C21_

7

R35_7

R60_7

R46_

7

C22_

7

R47_

7 C23_

7

C24_

7R36_7

R48_

7

R49_

7 C25_

7

U1_7

GND=AGND

3742556038

3231

39

3029

40

2827

41

2625

43

2423

44

2221

45

2019

46

1817

51

1615

521413

531211

5410

956

87

57

65

58

43

59

21

100n

F10

0nF

100n

F10

0nF

AGND\g

VDDA

10K

100n

F

VUP\i

pulse\i 10

0pF

100

15K

15K

pulse\i

A+<16>

VUP\i

A+<1>

SIGp<13>\i

Y<4>\i

Y<3>\i

Y<5>\i

SIGn<12>\i

pulse\i 10

0pF 100n

F

SIGp<1>\i

VUP\i

100

100n

F

100p

F

100n

F

100n

F

100p

F100n

F

100n

F

100p

F

100p

F100n

F

100p

F

100n

F

100p

F 100n

F

100n

F

100p

F 100n

F

100p

F

VDW\i

pulse\i

VUP\i

SIGn<3>\i

SIGp<3>\i

15K

15K

10K

100p

F 100n

F

100n

F

100p

F 100n

F

100n

F

100p

F 100n

F

100n

F

pulse\i10

0pF 100n

F

100n

F

100n

F

VDW\i

A-<7>

10K

A-<11>

15K

15K

A+<7>

SIGp<7>\i

100n

F

100n

F

100n

F

100p

F

A-<9>

A+<14>

10K

SIGn<2>\iVDW\i

10K

SIGn<11>\i

pulse\i

pulse\i

A+<4>

SIGp<4>\i

VUP\i

15K

15K

VUP\i

15K

SIGn<8>\i

SIGp<8>\i

15K

15K

100

A-<4>

A-<8>

100

10K

15K

100

10K

100VDW\i

A-<6>

15K

100

10K10K

VDW\i

SIGp<11>\i

100 100

10K

15K

100

VDW\i

SIGn<9>\i

15K

100

10K

VDW\i

VUP\i

VDW\i

A-<16>

SIGp<14>\i

15K

15K

15K

10K10K

15K

10K

15K

VUP\i

A+<5>

15K

15K

15K

VUP\i

A+<11>

15K

15K

VUP\i

pulse\i

pulse\i

pulse\i

SIGn<4>\i

VDW\i

15K

100

SIGp<2>\i

SIGn<1>\i VD

W\i

VUP\i

A+<8>

SIGn<7>\i

VDW\i

pulse\i

VUP\i

VUP\i

10K

15K

100

SIGn<13>\i

SIGp<10>\i

100

SIGp<12>\i

pulse\i

15K

A-<13>

A+<13>

1K

100p

F 100n

F

100

1K

1K

1K

A-<12>

100n

F

100

100n

F

A+<9>

pulse\i

15K

pulse\i

VCC=VDDA

A+<5>

A+<1>

A-<1>

A+<2>

A-<2>

A+<3>

A-<3>

A+<4>

A-<4>

A+<7>

A+<8>

A-<8>

A+<9>

A-<9>

A+<10>

A+<11>

A-<11>

A-<12>

A+<13>

A-<13>

A+<14>

A-<14>

A+<15>

A-<15>

A+<16>

A-<16>

Y<1>\i

Y<2>\i

Y<6>\i

Y<7>\i

Y<8>\i

Y<9>\i

Y<11>\i

Y<12>\i

Y<13>\i

Y<14>\i

Y<15>\i

Y<16>\i

A-<5>

A+<6>

pulse\i

A-<6>

VDDA

15K

A+<10>

SIGp<16>\i

SIGn<16>\iVDW\i

VDW\i

SIGp<9>\i

15K

A-<7>

A-<10>

VDW\i

A-<15>

A+<15>

SIGn<14>\i

A-<5>

100n

F

SIGp<5>\i

A-<14>

VUP\i

A+<12>

15K

100n

F

100n

F

A-<3>

A+<3>

A-<2>

A+<2>

SIGn<6>\i

SIGp<6>\i

A-<1>

SIGn<15>\i

VDW\i

SIGn<10>\i

VDW\i

SIGn<5>\i

VUP\i

A+<6>

Y<10>\i

10K

100n

F

SIGp<15>\i

100n

F

VUP\i

pulse\i

A-<10>

A+<12>

88

766

5 544

3 322

1 1

DD

CC

BB

AA

TITLE:

ENGINEER:

DATE:

PAGE:

7

SN75

LVDS

386

B2B*

B2A

B1B*

END

ENC

ENB

ENA

D4Y

D3Y

D2Y

D1Y

C4Y

C3Y

C2Y

C1Y

B4Y

B3Y

B2Y

B1Y

A4Y

A3Y

A2Y

A1Y

D4B*

D4A

D3B*

D3A

D2B*

D2A

D1B*

D1A

C4B*

C4A

C3B*

C3A

C2B*

C2A

C1B*

C1A

B4B*

B4A

B3B*

B3A

A4B*

A4A

A3B*

A3A

A2B*

A2A

A1B*

A1A

B1A

1

Ver. 1.0

27/07/2012

NESSIE FRONTEND

RECEIVER 16 CH

Matteo Rizzi

R61_8 R62_8

C26_

8

R37_8

R50_

8

R51_

8 C27_

8

C28_

8

R38_8

R52_

8

R53_

8 C29_

8 R63_8 R64_8

C30_

8

R39_8

R54_

8

R55_

8 C31_

8

R40_8

C32_

8

R56_

8

R8_8

R24_

8

C16_

8

R32_8

R7_8

R23_

8 C15_

8

R22_

8

C14_

8

R31_8

R6_8

C13_

8

R21_

8R2

0_8

C12_

8

R30_8

R5_8

C11_

8

R19_

8

R18_

8

C10_

8

R29_8

C9_8

R17_

8R4_8

R16_

8

C8_8

R28_8

R3_8

C7_8

R15_

8

R14_

8

C6_8

R27_8

C5_8

R13_

8

R2_8

R12_

8

C4_8

R26_8

C3_8

R11_

8

R1_8

R10_

8

C2_8C1

_8

R9_8

R25_8

C41_

8

C42_

8

C43_

8

C44_

8C4

6_8

C45_

8

C48_

8

C47_

8C3

7_8

C38_

8

C39_

8

C40_

8C5

0_8

C49_

8

C52_

8

C51_

8

C36_

8C3

5_8

C34_

8C3

3_8

R68_8

R67_8

R66_8

R65_8

R57_8

R41_

8 C17_

8

R33_8

R58_8 R59_8

R42_

8

C18_

8

R43_

8 C19_

8

C20_

8

R34_8

R44_

8

R45_

8 C21_

8

R35_8

R60_8

R46_

8

C22_

8

R47_

8 C23_

8

C24_

8R36_8

R48_

8

R49_

8 C25_

8

U1_8

GND=AGND

3742556038

3231

39

3029

40

2827

41

2625

43

2423

44

2221

45

2019

46

1817

51

1615

521413

531211

5410

956

87

57

65

58

43

59

21

100n

F10

0nF

100n

F10

0nF

AGND\g

VDDA

10K

100n

F

VUP\i

pulse\i 10

0pF

100

15K

15K

pulse\i

A+<16>

VUP\i

A+<1>

SIGp<13>\i

Y<4>\i

Y<3>\i

Y<5>\i

SIGn<12>\i

pulse\i 10

0pF 100n

F

SIGp<1>\i

VUP\i

100

100n

F

100p

F

100n

F

100n

F

100p

F100n

F

100n

F

100p

F

100p

F100n

F

100p

F

100n

F

100p

F 100n

F

100n

F

100p

F 100n

F

100p

F

VDW\i

pulse\i

VUP\i

SIGn<3>\i

SIGp<3>\i

15K

15K

10K

100p

F 100n

F

100n

F

100p

F 100n

F

100n

F

100p

F 100n

F

100n

F

pulse\i10

0pF 100n

F

100n

F

100n

F

VDW\i

A-<7>

10K

A-<11>

15K

15K

A+<7>

SIGp<7>\i

100n

F

100n

F

100n

F

100p

F

A-<9>

A+<14>

10K

SIGn<2>\iVDW\i

10K

SIGn<11>\i

pulse\i

pulse\i

A+<4>

SIGp<4>\i

VUP\i

15K

15K

VUP\i

15K

SIGn<8>\i

SIGp<8>\i

15K

15K

100

A-<4>

A-<8>

100

10K

15K

100

10K

100VDW\i

A-<6>

15K

100

10K10K

VDW\i

SIGp<11>\i

100 100

10K

15K

100

VDW\i

SIGn<9>\i

15K

100

10K

VDW\i

VUP\i

VDW\i

A-<16>

SIGp<14>\i

15K

15K

15K

10K10K

15K

10K

15K

VUP\i

A+<5>

15K

15K

15K

VUP\i

A+<11>

15K

15K

VUP\i

pulse\i

pulse\i

pulse\i

SIGn<4>\i

VDW\i

15K

100

SIGp<2>\i

SIGn<1>\i VD

W\i

VUP\i

A+<8>

SIGn<7>\i

VDW\i

pulse\i

VUP\i

VUP\i

10K

15K

100

SIGn<13>\i

SIGp<10>\i

100

SIGp<12>\i

pulse\i

15K

A-<13>

A+<13>

1K

100p

F 100n

F

100

1K

1K

1K

A-<12>

100n

F

100

100n

F

A+<9>

pulse\i

15K

pulse\i

VCC=VDDA

A+<5>

A+<1>

A-<1>

A+<2>

A-<2>

A+<3>

A-<3>

A+<4>

A-<4>

A+<7>

A+<8>

A-<8>

A+<9>

A-<9>

A+<10>

A+<11>

A-<11>

A-<12>

A+<13>

A-<13>

A+<14>

A-<14>

A+<15>

A-<15>

A+<16>

A-<16>

Y<1>\i

Y<2>\i

Y<6>\i

Y<7>\i

Y<8>\i

Y<9>\i

Y<11>\i

Y<12>\i

Y<13>\i

Y<14>\i

Y<15>\i

Y<16>\i

A-<5>

A+<6>

pulse\i

A-<6>

VDDA

15K

A+<10>

SIGp<16>\i

SIGn<16>\iVDW\i

VDW\i

SIGp<9>\i

15K

A-<7>

A-<10>

VDW\i

A-<15>

A+<15>

SIGn<14>\i

A-<5>

100n

F

SIGp<5>\i

A-<14>

VUP\i

A+<12>

15K

100n

F

100n

F

A-<3>

A+<3>

A-<2>

A+<2>

SIGn<6>\i

SIGp<6>\i

A-<1>

SIGn<15>\i

VDW\i

SIGn<10>\i

VDW\i

SIGn<5>\i

VUP\i

A+<6>

Y<10>\i

10K

100n

F

SIGp<15>\i

100n

F

VUP\i

pulse\i

A-<10>

A+<12>

88

766

5 544

3 322

1 1

DD

CC

BB

AA

TITLE:

ENGINEER:

DATE:

PAGE:

7

SN75

LVDS

386

B2B*

B2A

B1B*

END

ENC

ENB

ENA

D4Y

D3Y

D2Y

D1Y

C4Y

C3Y

C2Y

C1Y

B4Y

B3Y

B2Y

B1Y

A4Y

A3Y

A2Y

A1Y

D4B*

D4A

D3B*

D3A

D2B*

D2A

D1B*

D1A

C4B*

C4A

C3B*

C3A

C2B*

C2A

C1B*

C1A

B4B*

B4A

B3B*

B3A

A4B*

A4A

A3B*

A3A

A2B*

A2A

A1B*

A1A

B1A

Ringraziamenti

Desidero ringraziare tutte le persone che hanno reso possibile questa tesi.Innanzi tutto ringrazio il mio relatore prof. Saverio Simone per avermi

dato la possibilita di svolgere questo lavoro di tesi e per la disponibilita concui mi ha seguito.

Ringrazio gli ingg. Giuseppe De Robertis e Flavio Loddo per la lorosupervisione al progetto della FEB e i loro preziosi consigli.

Un grazie infinito lo devo al dott. Gianpiero Fanizzi per la pazienza concui ha seguito il mio lavoro.

Ringrazio l’ing. Matteo Rizzi per lo schematico e il layout della FEB.Ringrazio la dott.ssa Marilisa De Serio per i suoi consigli.Ringrazio la dott.ssa Rosa Anna Fini per la sua simulazione Monte Carlo

di NESSiE.Infine un grazie a tutti gli amici che mi hanno accompagnato nel corso

dei miei studi, in particolare a Giovanni, Francesco e Piero.

158

159

Bibliografia

[1] The NESSiE Collaboration, “Prospect for Charge Current NeutrinoInteractions Measurements at the CERN-PS”

[2] C. Rubbia et al., ICARUS/CNGS2 Collaboration, “PhysicsProgramme for ICARUS after 2012”, SPSC–M–773 (2011)

[3] ICARUS Collaboration, NESSiE Collaaboration, “Search for“anomalies” from neutrino and anti-neutrino oscillations at∆m2 ≈ 1eV 2 with muon spectrometers and large LAr-TPC imagingdetectors. Technical proposal”

[4] A. Aguilar et al. (LSND Collaboration) “Evidence for neutrinooscillations from the observation of νe appearance in νµ beam”,Physical Review D 64, 112007

[5] A. A. Aguilar-Arevalo (MiniBooNE Collaboration), “UnexplainedExcess of Electronlike Events from a 1-GeV Neutrino Beam” Phys.Rev. Lett. 102, 101802 (2009).

[6] Donald H. Perkins, “Introduction to High Energy Physics”, 4th edition

[7] CDHS Collaboration, F. Dydak et al., “A Search for νµ Oscillations inthe ∆m2 range 0.3÷ 90 eV 2”, Phys. Lett. B134, 281 (1984).

[8] C. Giunti, M. Laveder, “Short-Baseline Electron NeutrinoDisappearance, Tritium Beta Decay and Neutrinoless Double-BetaDecay”, Phys. Rev. D82, 053005, (2010) arXiv:1005.4599.

[9] M. Maltoni, T. Schwetz, “Sterile neutrino oscillations after firstMiniBooNE results”, Physical Review D 76, 093005 (2007)

[10] C. Giunti, M. Laveder, “Hint of CPT Violation in Short-BaselineElectron Neutrino Disappearance”, Phys. Rev. D82, 113009 (2010),arXiv:1008.4750.

160

[11] G. Charpak et al., Nucl. Instrum. and Meth. 80, (1970), 13.

[12] The OPERA collaboration, “The OPERA experiment in the CERN toGran Sasso neutrino beam”, JINST 4 4018 (2009).

[13] R. Santonico, R. Cardarelli, “Development of resistive plate counters”,Nuci. Instrum. Meth. 187, 377-380 (1981).

[14] R. Santonico, R. Cardarelli, “Progress in resistive plate counters”,Nuci. Instrum. Meth. A263, 20-25 (1988).

[15] E. Ceron Zeballos et al., Nucl. Instr. and Meth., A392, 150 (1997).

[16] A. Scida, “Sviluppo di Multigap Resistive Plate Chambers (MRPC)per misure di tempi di volo di altissima precisione”, tesi di laurea,Universita degli studi di Bologna, AA 2007-2008.

[17] G. F. Tassielli, “Sistema di controllo e risultati preliminari dellastazione di test degli RPC di Atlas”, tesi di laurea, Universita deglistudi di Lecce, AA 2002-2003.

[18] A. Cimmino, “Data Quality Monitoring and Performance Studies ofthe Resistive Plate Chamber Detector at the CMS Experiment atLHC”, PhD thesis, Universita degli studi di Napoli, XXIII DoctoralCycle - 2007/2010.

[19] A. Paoloni et al. “Gas mixture studies for streamer operation ofResistive Plate Chambers at low rate”, Nuclear Instruments andMethods in Physics Research A 583 (2007) 264-269

[20] R. Acquafredda, M. Ambrosio, E. Balsamo, G. Barichello, etc.“Electronics design for the RPC system for the OPERA muonspectrometer”, Il Nuovo Cimento Vol. 27 C, N. 5

[21] M. Ambrosio et al. “The OPERA muon spectrometer trackingelectronics”, Nuclear Instrumentation and Methods in PhysicsResearch A 533 (2004) 173-177

[22] Stefano Dusini, Ivano Lippi, “Specifiche prototipo scheda FEB perlettura digitale RPC”.

[23] “VME bus” da Wikipedia, l’enciclopedia libera.

[24] “Eurocard” da Wikipedia, l’enciclopedia libera.

161

[25] Flavio Dal Corso - INFN Padova, “RPC & XPC Electronics Status”,OPERA coll. meeting - Hamburg 3 July 2004

[26] “VME Bus Connector Mechanical Dimensions” dawww.interfacebus.com

[27] L. Davis, “VMEbus Card Form Factors” da www.interfacebus.com

[28] J.Marteau, S.Gardien, C.Girerd, C.Guerin, T.Descombes, “Status ofthe OPERA DAQ”, OPERA WEEK, FRASCATI, october 30, 2002

[29] P.Moreira, J.Serrano, T.Wlostowski, P.Loschmidt, G.Garderer “WhiteRabbit: Sub-Nanosecond Timing Distribution over Ethernet”

[30] S. Dusini et al. “The DAQ system of OPERA experiment and itsspecifications for the spectrometers” Nuclear Instruments and Methodsin Physics Research A 518 (2004) 519-521

[31] datasheet del 75LVDS390, Texas Instruments (fromwww.alldatasheet.com)

[32] “Convertitore digitale-analogico” da Wikipedia, l’enciclopedia libera.

[33] datasheet del DAC5652, Texas Instruments.

[34] “Convertitore analogico-digitale” da Wikipedia, l’enciclopedia libera.

[35] datasheet del ADC104S051, National Semiconductor.

[36] “Serial Peripheral Interface” da Wikipedia, l’enciclopedia libera.

[37] Xilinx Spartan-6 FPGA Configuration User Guide; UG380 (v2.3) July6, 2011

[38] Xilinx Spartan-6 FPGA Data Sheet: DC and SwitchingCharacteristics; DS162 (v3.0) October 17, 2011

[39] Field-programmable gate array from Wikipedia, the free encyclopedia:http://it.wikipedia.org/wiki/Field Programmable Gate Array

[40] FPGA Introduction from http://www.fpga4fun.com

[41] Xilinx Spartan-6 Family Overview; DS160 (v2.0) October 25, 2011

[42] Xilinx Spartan-6 FPGA Configurable Logic Block User Guide; UG384(v1.1) February 23, 2010

162

[43] Xilinx Spartan-3 FPGA Family Data Sheet; DS099 December 4, 2009

[44] Xilinx Spartan-6 FPGA Clocking Resources User Guide; UG382 (v1.6)May 12, 2011

[45] Phase-locked loop from Wikipedia, the free encyclopedia:http://en.wikipedia.org/wiki/Phase-locked loop

[46] Delay-locked loop from Wikipedia, the free encyclopedia:http://en.wikipedia.org/wiki/Delay-locked loop

[47] Xilinx Spartan-6 Block RAM Resources User Guide; UG383 (v1.5)July 8, 2011

[48] Xilinx Spartan-6 FPGA Packaging and Pinouts Product Specification;UG385 (v2.2) August 24, 2011

[49] Xilinx Spartan-3 Generation FPGA User Guide; UG331 (v1.8) June13, 2011

[50] Seminario su FPGA, Giuseppe De Robertis - Servizio CAD - INFNSez. BARI

[51] The 8051 Microcontroller, Architecture, programming, andapplications ; Kenneth J. Ayala, Western Carolina University.

[52] Intel 8051; Da Wikipedia, l’enciclopedia libera.http://it.wikipedia.org/wiki/Intel 8051

[53] Microcontrollore 8051; Sandro Cavalieri Foschini, EmanueleRichiardone, Politecnico di Torino

[54] 8051 Tutorial, http://www.8052.com

[55] CSCI 320 Computer Architecture Handbook on Verilog HDL, ByDaniel C. Hyde, Bucknell University

[56] VERILOG HDL; disponibile suhttp://www.ge.infn.it/˜pratolo/verilog/VerilogTutorial.pdf

[57] IEEE Standard Verilog Hardware Description Language, IEEE Std1364-2001; IEEE Computer Society

[58] Note introduttive sulle macchine a stati finiti sincrone; disponibile suhttp://www.dei.unipd.it/ricerca/microel/did/esd/downloads/fsm-03-04.pdf

163

[59] Macchine a stati finiti, Antonio Deledda, Corso di Elettronica deiSistemi Digitali LS AA 2005-2006; disponibile suhttp://www-micro.deis.unibo.it/˜deledda/Dida01/lezioni/fsm.pdf

[60] FSM: Macchine a Stati Finiti; disponibile suhttp://www.unirc.it/documentazione/materiale didattico/599 2010 266 9329.pdf

[61] ISE In-Depth Tutorial UG695 (v 12.3) September 21, 2010

[62] Spartan-3 FPGA Starter Kit Board User Guide UG130 (v1.2) June 20,2008

[63] Verilog-XL Reference, Product Version 3.4 January 2002, Cadence

[64] Il linguaggio VERILOG, Paolo Musico, INFN Genova; disponibile suwww.ge.infn.it/˜musico/CourseStuff/VerilogSlides.pdf

164