• Non ci sono risultati.

SelIndirizzi

Nel documento Politecnico di Torino (pagine 115-118)

Capitolo 8. Programmazione scheda DT5550W / A55CIT4

8.5 SelIndirizzi

Il seguente subdiagram, il quale è visibile in Fig. 8.21, ha lo scopo di generare gli indirizzi da inviare al MUX per selezionare i canali dei Citiroc. In questo subdiagram si utilizza un contatore asincrono sensibile ai fronti di salita. Si vede, infatti, che il blocco relativ o a questo contatore è identico a quello utilizzato nel subdiagram “Acquisizione”, con la differenza che è presente un pin di input in meno, ossia quello relativo al clock (dovuto al fatto che questo è un contatore asincrono).

Il contatore asincrono conta semplicemente i fronti di salita del segnale datogli in ingresso nel pin

“In”, fintantoché il pin “GATE” è a livello logico alto.

Nel subdiagram “SelIndirizzi” viene collegato in ingresso al contatore il segnale in uscita dal subdiagram “Clk128”, ovvero 128 impulsi alla frequenza di 5 MHz. Il contatore riporta in uscita sul pin “Counts” un segnale da 32 bit che conta da 1 a 128 alla frequenza di 5 MHz; quindi, gli indirizzi di selezione dei canali del MUX cambieranno a quella frequenza. Si è scelto un contatore asincrono, in quanto non serve sincronizzare il conteggio del contatore con un clock, dato che il fine del contatore di questo subdiagram è contare fino a 128 grazie ad un segnale di ingresso che viene generato in maniera tale che abbia sempre 128 transizioni ad una frequenza fissa; per tale scopo, il contatore asincrono si presta perfettamente. Viene dato in ingresso al contatore anche il segnale di Latch collegandolo al pin “Reset”, in modo tale che il conteggio venga resettato ogni 100 µs. Se così non fosse, dato che i contatori su SCI-Compiler sono tutti a 32 bit, il contatore supererebbe la quota di 128 conteggi e non ci sarebbe più una corrispondenza con gli indirizzi dei canali del MUX.

Il valore dei conteggi in uscita dal contatore passa attraverso un blocco sottrattore SUB, dove viene sottratto il valore 1 ad ogni valore in uscita dal contatore. Questo passaggio è necessario perché il contatore fornisce in uscita, come primo valore contato, il numero 1. Dato che i valori in uscita dal

Fig.8.21. Subdiagram "SelIndirizzi".

106 contatore corrispondono agli indirizzi del MUX, non sottraendo il valore 1 ad essi non si andrebbe mai a selezionare il primo canale del MUX, ossia il canale 0 corrispondente all’indirizzo 0.

Inserendo il blocco SUB e sottaendo 1 al segnale in uscita da “Counts” si permette la selezione dei canali da 0 a 127.

L’uscita del blocco SUB è una parola binaria a 32 bit. I bit necessari per selezionare 32 canali del MUX del subdiagram “Citiroc” sono 5. Si usa, quindi, il blocco SLICE, già visto precedentemente, per estrarre i primi 5 bit, partendo sempre dai bit meno significativi, e collegarli alla Schematic Port Out “Address”. Questo è il primo output del subdiagram “SelIndirizzi” che, come si è visto, diventa un input del subdiagram “Citiroc” collegandosi al pin “SEL” del MUX a 32 canali presente nel diagramma, permettendo la selezione dei 32 canali. E’ stato detto, però, che il subdiagram

“Citiroc”, e quindi anche il MUX al suo interno, viene chiamato quattro volte nel diagramm to p per ottenere 128 canali. Si ottengono quattro configurazioni identiche a quella in Fig. 8.22 nel top del diagramma, con l’unica differenza che il blocco “Citiroc Trigger” che si collega a tutti gli input

“ATxx” si riferirà a un Citiroc diverso per ognuna delle configurazioni. Si notano i comandi di Latch e ResetD espressi come blocchi “Variable Write” che si collegano in ingresso al subdiagram

“Citiroc”, insieme al segnale “Address”, quest’ultimo, anche, utilizzato come blocco “Variable Write”. Si ricorda che questi blocchi sono utilizzati per evitare l’uso di molti fili per i collegamenti tra i vari pin, in modo da rendere il diagramma più ordinato. L’uscita “Mux” dal blocco “Citiroc”

sul top, illustrata in Fig. 8.22, è data da una parola binaria a 16 bit, rappresentante l’informazione

Fig.8.22. Parte di diagramma sul top.

107 Fig.8.23. Parte di diagramma nel top relativa alla selezione dei 32 canali provenienti dai 4 blocchi “Citiroc”.

binaria relativa alle particelle rilevate dai SiPM. Questa cambia ogni 200 ns, poiché con quel periodo temporale sono fatti variare i canali del MUX dal segnale Address in uscita dal subdiagram

“SelIndirizzi”. Le uscite “Mux” dei quattro subdiagram “Citiroc” presenti sul top vengono collegate ad un altro MUX (presente nel top) a quattro ingressi, come mostrato in Fig. 8.23.

Questo MUX a 4 canali ha il seguente scopo: fornire in uscita i 32 canali del primo Citiroc che provengono dall’uscita “Mux” del blocco “Citiroc” al quale è collegato il blocco “Citiroc Trigger”

relativo al Citiroc 1; mandare, poi, in uscita i 32 canali del secondo Citiroc che provengono dall’uscita “Mux” del blocco “Citiroc” al quale è collegato il blocco “Citiroc Trigger” relativo al Citiroc 2, e così via fino al quarto Citiroc. Affinché questo avvenga occorre sincronizzare l’indirizzamento dei 32 canali del MUX presente nel blocco “Citiroc”, con l’indirizzamento dei 4 canali di questo MUX. Al pin “SEL” viene collegato un segnale, il qu ale è il secondo output del subdiagram “SelIndirizzi”, denominato “N_Cit” (tale collegamento è rappresentato in Fig. 8.23).

Come raffigurato in Fig. 8.21, il segnale N_Cit è una parola binaria a 2 bit e corrisponde al sesto e settimo bit dei 32 provenienti dal pin “Counts” in uscita dal contatore asincrono. Per prelevare questi due bit si è usato ancora una volta il blocco SLICE.

All’inizio del conteggio del contatore i bit 6 e 7 dei 32 totali dell’uscita “Counts” sono pari a 0. Il conteggio procede fino a 31, per cui la parola binaria dei primi 7 bit meno significativi dei 32 totali è 0011111. In questo momento il MUX a 32 canali si trova in corrispondenza del 32esimo input mentre il MUX a 4 canali si trova in corrispondenza del primo input. Al conteggio successivo si ha 0100000: con questi 7 bit si sta puntando il primo canale del secondo Citiroc. Infatti, il segnale N_Cit porta in ingresso al pin “SEL” del MUX a 4 canali la parola binaria 01, passando dal primo al secondo canale e, quindi, dal primo al secondo Citiroc. Dopo che vengono indirizzati tutti i 32 canali del secondo Citiroc, il segnale N_Cit diventa 10 e va a selezionare il terzo canale del MUX a 4 canali; infine, con la parola binaria 11 si va a selezionare anche l’ultimo canale del MUX a 4

108 canali, quindi l’ultimo Citiroc. Dato che ogni canale di acquisizione viene mandato ogni 200 ns, il totale dei 128 canali dei Citiroc viene spedito in 25,6 µs; dopodiché, il subdiagram “Clk128” non manda più impulsi fino al Latch successivo, quindi il contatore non conta più e in uscita dal MUX a 4 canali rimane il valore relativo all’ultimo conteggio, ossia il 128esimo. Il conteggio viene azzerato dal segnale di Latch come spiegato precedentemente, facendo ripartire, poi, un nuovo conteggio con l’arrivo degli impulsi provenienti da “Clk128”. In Fig. 8.23, oltre al MUX a 4 canali si può osservare il subdiagram “SelIndirizzi” richiamato nel top, a cui vi arrivano gli ingressi “Latch” e

“clk128” da un’altra parte del diagramma e in uscita fornisce “N_Cit” che si collega al MUX a 4 canali e “Address” che viene collegato ad una “Variable Read” per evitare di adoperare troppi fili.

Nel documento Politecnico di Torino (pagine 115-118)