Pensieri su pixFEL se mi sbalio mi corrigerete! Pensieri su pixFEL, Fabio Morsani, 05-06-2013
I due tipi di readout per SAR che mi vengono in mente 0- eventuale raggruppamento di M pixel (M di Macropixel) dal punto di vista del readout: sembra utile per il collegamento tramite TSV o roba simile del die contenente l’ADC a quello con tutta la logica di readout, compatibilmente con le frequenze di esercizio 1- tipo sincrono: instrada in uscita ogni bit appena generato nella conversione scrivendolo per ogni pixel in un bit di shift register; tramite la catena di M bit si mandano i dati in uscita: abbiamo il clock di conversione e il clock di serializzazione che deve essere almeno M volte piu’ veloce per mantenere il sincronismo con la conversione 2- tipo asincrono: senza usare buffer aggiuntivi, estrae dal SAR i bit convertiti ad una velocita’ minore con un clock sottomultiplo o multiplo di quello di conversione ma in fase con esso, quindi li serializza con un clock che questa volta non deve star dietro al rate di conversione dei singoli bit usare o meno i buffer e’ indipendente dalle due architetture Pensieri su pixFEL, Fabio Morsani, 05-06-2013
Pensieri su pixFEL, Fabio Morsani, 05-06-2013 Readout sincrono Quale velocita’? Target generale di un evento ogni T = 200 ns (?) Numero di bit, Nadc_bit = 10 Gruppo di M pixel Tconv = T/Nadc_bits = 200/10 = 20 ns Tshift = T/(Nadc_bits*M) = Tconv/M = 20ns/M Tshift_min sarebbe ... non esageriamo, il clock di shift deve essere distribuito ad ogni pixel, ci vuole poco per avere assorbimenti di picco e medi di diversi A per chip di 10 Kilo-pixel (il processo coinvolge tutti i pixel in parallelo). Servono buffer intermedi? Dipende dai timing della macchina ... Limiti: se si deve andare a frequenze di readout rilassate automaticamente si rilassa anche il clock di conversione la tensione sul cap di S&H ha tempo di cambiare troppo rispetto alla precisione richiesta: QUANTO TEMPO PUO’ DURARE AL MASSIMO UNA CONVERSIONE A 10 BIT? Pensieri su pixFEL, Fabio Morsani, 05-06-2013
Pensieri su pixFEL, Fabio Morsani, 05-06-2013 Readout asincrono E’ utile quando si deve/vuole svincolare il readout dalla conversione senza porre limiti a quest’ultima. Abbiamo due domini di clock separati ma che devono essere in fase tra loro per assicurare un funzionamento identico in tutti i pixel. Si puo’ implementare il readout sincrono con un minimo ritardo aggiuntivo (tempo di sincronizzazione tra i due domini di clock) tra la disponibilita’ del bit di conversione e la sua lettura. Per instradare i dati verso l’uscita occorre sempre uno shift register che va operato con un clock M volte piu’ veloce del clock di estrazione dei bit. La necessita’ dei buffer permane. Pensieri su pixFEL, Fabio Morsani, 05-06-2013
Lettura matrice e uscita dal chip Ora qualche pensiero sulle due fasi: lettura matrice ed eventuale riempimento di buffer uscita dal chip diretta mentre si legge la matrice oppure leggendo le foto dal buffer chi e’ capace a trasferire le formule in plot su Excel puo’ divertirsi a farlo Pensieri su pixFEL, Fabio Morsani, 05-06-2013
Pensieri su pixFEL, Fabio Morsani, 05-06-2013 Lettura matrice matrice N*N pixel, Nadc_bits, eventi ogni Tevent secondi in Tevent ns devo convertire Nadc_bits e portare fuori N*N*Nadc_bits bit verso l’esterno o un buffer per una lettura sequenziale il tempo di uscita di un bit dalla matrice deve essere Tevent/(Nadc_bits*N*N) s/bit Se potessi leggere tutti i pixel in parallelo mi basterebbe un colpo solo per bit convertito Tevent/Nadc_bits s/bit se li arrangio a gruppi di M bit, per ogni gruppo trasferisco Tevent/(Nadc_bits*M) s/bit La rate per un gruppo e’ (i numeri sono indipendenti dalla dimensione della matrice) Fgroup = Nadc_bits*M/Tevent bit/s Tevent = 200ns, Nadc_bits =10 M=1 Freadout = 10/(2*10-7) = 50 Mbit/s/pixel, rate minimo M=8 Freadout = 10*8/(2*10-7) = 400 Mbit/s/group, siamo gia’ oltre il ragionevole Pensieri su pixFEL, Fabio Morsani, 05-06-2013
Uscita dal chip senza buffer dalla matrice, e quindi dal chip escono Freadout = (Nadc_bits*N*N)/Tevent bit/s Se uso K canali di uscita Freadout_un_canale = (Nadc_bits*N*N)/(Tevent*K) bit/s Tevent = 200ns, Nadc_bits =10 Matrice 32x32, K=1 Freadout = 10*32*32/(2*10-7) = 51.2 Gbit/s, rate massimo Matrice 32x32, K=12 Freadout = 10*32*32/(2*10-7)/12 = 4.267 Gbit/s, per avere un rate compatibile con i bus seriali utilizzabili (PCI-EXPRESS) Matrice 16x16, K=1 Freadout = 51.2/4 = 12.8 Gbit/s, rate massimo, un solo bus in uscita Matrice 16x16, K=3 Freadout = 12.8/3 = 4.267 Gbit/s, per avere un rate compatibile con i bus seriali utilizzabili (PCI-EXPRESS) Pensieri su pixFEL, Fabio Morsani, 05-06-2013
Uscita dal chip con buffer Memorizzo le foto di Z flash consecutivi in un buffer. ora posso utilizzare un tempo Tidle per far uscire i dati dal chip prima del prossimo burst dalla matrice, pescandoli dal buffer, e quindi dal chip escono Freadout = (Nadc_bits*N*N*Z)/Tidle bit/s Se uso K canali di uscita Freadout_un_canale = (Nadc_bits*N*N*Z)/(Tidle*K) bit/s Tidle = 1ms, Nadc_bits =10, Z=1000 Matrice 64x64, K=1, Z=1000 Freadout = 10*64*64*1000/(1*10-3) = 40.96 Gbit/s, rate massimo Matrice 32x32, K=1, Z=1000 Freadout = 40.96/4 = 10.24 Gbit/s, rate massimo Matrice 16x16, K=1, Z=1000 Freadout = 10.24/4 = 2.56 Gbit/s, rate massimo Duty cycle del readout? Pensieri su pixFEL, Fabio Morsani, 05-06-2013
Pensieri su pixFEL, Fabio Morsani, 05-06-2013 buffer o non buffer ... 1- dove e’ possibile mettere i buffer? 2- come ci si mandano i dati? 3- quanto grandi? Nadc_bit x Neventi 4- readout durante il burst? Buffer insieme al SAR: dati disponibili in parallelo all’uscita del SAR scrittura nel buffer parallela, lettura par/ser secondo le necessita’ FIFO/RAM, piu’ semplice se la fase di readout avviene dopo la fase di scrittura (single port access) velocita’ di lettura in base al tempo disponibile Buffer su altro die: come trasferire all’altro die segnali per pixel o per macropixel? Bisogna minimizzare il numero di connessioni, specialmente se si usano i TSV. Linea seriale che deve trasferire tutti i dati relativi ad un evento prima che arrivi il successivo come readout sincrono, clock di centinaia di MHz distribuito su tutto il chip Pensieri su pixFEL, Fabio Morsani, 05-06-2013
cosa fare per un primo piccolo chip di prova? SReg prev SReg load SAR bits SAR SReg shiftout clock SReg next conv. clock reset da scegliere se si vuole conservare il bus parallelo fino all’uscita dal chip, con singolo serpentone o organizzazione a colonne con multiplexer 16x16=256 256*10ns=2.56us per un readout a 100MHz su bus parallelo da Nadc_bits Pensieri su pixFEL, Fabio Morsani, 05-06-2013
cosa fare per un primo piccolo chip di prova? Pensiamo a come vorremmo “esercitarlo” in lab conversione con readout fermo (storico requirement!) conversione alla velocita’ nominale e readout contemporaneo a velocita’ variabile, cosi’ vediamo come si influenzano acquisizione possibile anche con PG+LSA, pochi segnali di controllo: reset, selezione mux (p.es. lettura a colonne), clock conversione e clock readout lo shift si puo’ fermare in un qualsiasi momento, se p.es. siamo interessati solo ad alcuni pixel, un po’ l’equivalente del mascheramento - altro? Pensieri su pixFEL, Fabio Morsani, 05-06-2013
Pensieri su pixFEL, Fabio Morsani, 05-06-2013 circuito SAR con readout asincrono e simulazione di prova (con controllo automatico del risultato) In questi giorni ho finito lo schema del circuito del readout asincrono e qualche simulazione di prova. Pare pure funzionare. Per avere i delay realistici delle celle standard occorre passare attraverso un tool tipo Synopsys, che Dio li maledica! Per il momento simulo avendo ritardi fissi di 1ns su tutte le celle. Area totale SAR+READOUT = 1700 um2 Pensieri su pixFEL, Fabio Morsani, 05-06-2013