Domanda:
Contatore per clock a 20 GHz
Steve
2016-03-03 14:39:34 UTC
view on stackexchange narkive permalink

Sto progettando un'applicazione time-critical in cui ho bisogno di una risoluzione temporale nell'ordine di 100 picosecondi.

Sto pensando di realizzare un oscillatore ad anello da 20 GHz e clock da un oscillatore ad anello.

Esistono circuiti integrati o posso implementarli utilizzando CoolRunner II CPLD o altri FPGA?

Ho guardato la sua scheda tecnica e la frequenza massima per il clock di sistema è di circa 256 MHz e il clock esterno è di 145 MHz. Scheda tecnica

Dovrei cercare un dispositivo più veloce o c'è un altro modo per costruirlo?

I pin I / O veloci degli ultimi FPGA possono gestire circa 1 GHz per la memoria DDR.La rete di clock interna di un FPGA è limitata a circa 900 MHz.Quindi gli FPGA non possono risolvere i tuoi problemi.
Serve per le misurazioni del tempo di volo?Ci sono circuiti integrati TOF dedicati con risoluzione inferiore a 100ps.Funzionano come un cronometro.Forse potresti premere uno di questi in servizio?Dai un'occhiata a http://www.ti.com/lit/ds/symlink/tdc7200.pdf.
Normalmente per questo tipo di risoluzione temporale si utilizza un convertitore time-to-digital, non un contatore.Questi fondamentalmente collegano un piccolo condensatore con i segnali di trigger e quindi si misura la tensione accumulata su di esso.Per alcune idee, dai un'occhiata a come funzionano gli oscilloscopi ETS (equivalent time sampling).
@Paebbels: I dispositivi Stratix 10 più veloci di Altera possono gestire I / O a 28,3 Gb / s.I dispositivi Virtex-7 più veloci di Xilinx possono gestire 28,05 Gb / s.Le tue conoscenze sono obsolete di diversi anni.
@DaveTweed Conosco ricetrasmettitori a 28 GHz.Li sto usando io stesso in progetti ad alta velocità.Ma non credo che tu possa usarli per fare misurazioni del tempo.Anche con ricetrasmettitori multi GHz, la rete di clock è limitata a circa 1 GHz.
@Paebbels: I / O a 28 GHz è I / O a 28 GHz.Puoi campionare * qualsiasi * segnale a quella velocità.Perché non potresti usarlo per misurare il tempo?Ovviamente, il tessuto dovrebbe avere a che fare con i campioni che escono dal deserializzatore come un bus parallelo, ma è semplice.
@DaveTweed, non alcun segnale.Un segnale con corse molto lunghe di 0 o 1 provocherebbe probabilmente la perdita del blocco del CDR del ricetrasmettitore, provocando una deriva del clock critico.Dovresti trovare un modo per far passare il tempo dell'evento che desideri tra due modelli di ingresso, ciascuno con un'adeguata densità di transizione, per utilizzare questi ingressi all'FPGA per la temporizzazione dell'evento.
Per OP, renditi conto che non hai bisogno di clock a 20 GHz per ottenere un timing di 100 ps.Ad esempio, due clock da 5 GHz con una differenza di fase di 90 gradi possono raggiungere una temporizzazione di 100 ps.Oppure 5 clock da 1 GHz ciascuno sfalsato di 36 gradi.Ma a un certo punto mantenere un grande gruppo di orologi allineati abbastanza accuratamente e campionarli tutti abbastanza vicini allo stesso tempo diventa un problema più grande che fare un orologio più veloce.
Gli oscillatori ad anello hanno un rumore di fase causato dal jitter.Per un oscillatore di clock stabile nella gamma Gigahertz, un diodo Gunn (posizionato all'interno della guida d'onda utilizzando una sfera YIG) sarebbe una scelta migliore per un generatore di frequenza stabile.
Cinque risposte:
mike ingle
2016-03-03 22:33:56 UTC
view on stackexchange narkive permalink

15 anni fa ho progettato un digitalizzatore a due parametri (energia e tempo) per misurare il tempo di volo. Per questo sistema ho utilizzato una sorgente di corrente costante in un tappo tenuto in reset da un JFET. Alla ricezione del trigger (logica rapida del NIM, cambio di livello mantenuto nel regime analogico (al contrario della commutazione saturata), il JFET si è aperto e sono stato in grado di ottenere una risoluzione di 50ps digitalizzando la rampa lineare e interpolando da un ADC da 62,5 MSPS in un FPGA. Il circuito era abbastanza semplice e combinava perfettamente le simulazioni.

Neil_UK
2016-03-03 16:28:24 UTC
view on stackexchange narkive permalink

Molto tempo fa, come esperimento mentale, ho "progettato" un FPGA per la cattura del tempo.

Aveva un oscillatore ad anello, convenzionale a parte il fatto che aveva 41 inverter. Il periodo era quindi molto molto inferiore al ritardo di qualsiasi gate. Il processo FPGA presentava ritardi di gate individuali inferiori a 10 secondi di pS in cui l'instradamento era locale e il fan-out basso, ma poteva gestire solo clock di sistema nell'ordine di 100 MHz, a causa di ritardi di multiplexing, routing e caricamento tra i blocchi.

Il processo di acquisizione del tempo utilizzava quindi 41 D-latch, ciascuno dei quali catturava la transizione di ingresso, ma ovviamente sincronizzato in diverse fasi del ciclo del contatore ad anello. Le uscite dei D-latch possono essere interpretate come un "codice termometro", interpolando la transizione di ingresso alla precisione del sottociclo, con una risoluzione nei 10s di pS. Altri 41 D-latch hanno catturato un orologio di riferimento.

Ci sono due difficoltà principali con una struttura del genere. Il primo è ottenere gli strumenti di sintesi per disporre il contatore dell'anello e le linee per i dispositivi di chiusura a D in modo ad alta velocità. Questa parte sarebbe probabilmente gestita meglio con il posizionamento manuale diretto. Potrebbe essere necessario un tipo specifico di piccolo FPGA ad alta velocità, forse uno senza moltiplicatori e core del processore! Il secondo è la gestione senza gara della sovrapposizione tra il codice del termometro e un contatore convenzionale con clock dalla frequenza di riferimento più bassa, ma può essere fatto, occupandosi dei problemi di metastabilità.

Non ho perseguito perché ho trovato un modo migliore per risolvere il problema, ma è stato divertente.

Tali strutture sono ora integrate negli FPGA, sia nei blocchi di gestione del clock (PLL e DCM) che nelle strutture di I / O ad alta velocità.
Anche se queste strutture saranno integrate nei DCM, non sono sicuro che tu possa ottenere impulsi che arrivano in modo casuale.Potresti sicuramente DPLL agli impulsi che arrivano regolarmente.Tuttavia, gli spessori di temporizzazione I / O potrebbero essere configurabili.Potresti aver bisogno di nuovo di una configurazione manuale poiché l'ottimizzatore del timer di routing PAR non capirà certamente cosa stai cercando di fare e lo "migliorerà" per te.
Tutto quello che stavo dicendo è che non è più necessario utilizzare LUT individuali per creare una linea di ritardo programmabile.E le linee di ritardo negli IOB sono decisamente configurabili: con un po 'di sforzo, è possibile implementare la logica per equalizzare automaticamente i ritardi su un bus dati di memoria, ad esempio.
Mario
2016-03-03 17:15:38 UTC
view on stackexchange narkive permalink

Come qualcuno ha già sottolineato, ci sono circuiti integrati dedicati a tale scopo.

Se vuoi farlo da solo, un possibile approccio sarebbe quello di utilizzare le cosiddette linee di ritardo Vernier.

Hai due linee di ritardo (catene di buffer) in cui una catena utilizza buffer più veloci dell'altra. La risoluzione della tua misura è uguale alla differenza dei ritardi degli elementi nella catena veloce e "lenta".

Per misurare il ritardo mandi l'impulso di start attraverso la catena lenta e l'impulso di stop attraverso la catena veloce. L'impulso di arresto viaggia più velocemente e alla fine raggiungerà l'impulso di avvio. Il numero di buffer richiesti sarà una misura per il ritardo.

Il mio obiettivo è la progettazione di circuiti integrati, quindi non sono sicuro che ciò possa essere fatto con un FPGA. La letteratura suggerisce che è possibile, però.

Brian Drummond
2016-03-03 17:38:59 UTC
view on stackexchange narkive permalink

Il fabric FPGA, come sottolineano altre risposte, non può essere sincronizzato alla velocità necessaria.

Tuttavia, alcuni FPGA hanno anche interfacce seriali ad alta velocità nell'intervallo da 5 Gb / sa 10 Gb / s, previsto per SATA, PCIe e altri protocolli di comunicazione ad alta velocità.

Probabilmente ci sono modi per sfruttarli per misurazioni del tempo ad alta risoluzione (100ps ma forse non 50ps).

Mi spiace non posso essere più specifico sui dettagli.

I dettagli sono [qui per Xilinx] (http://www.xilinx.com/support/documentation/user_guides/ug471_7Series_SelectIO.pdf) (capitolo 3 in particolare).I dispositivi Virtex-7 più veloci supportano velocità fino a 28 Gb / s.Altera ha guide simili e alcuni dei loro dispositivi Stratix V e Stratix 10 arrivano anche a 28 Gb / s.
Grazie Dave, link utile.I blocchi SERDES (a partire da p.143) sono la caratteristica che avevo in mente.
Bimpelrekkie
2016-03-03 14:54:06 UTC
view on stackexchange narkive permalink

Un clock a 2 GHz ha un periodo di 500 ps. Quindi, se hai bisogno di una risoluzione di 100 ps, ​​direi che hai bisogno di almeno 10 GHz.

Da 2 GHz in su è decisamente fuori dalla portata di qualsiasi FPGA per quanto ne so. Ora sei in territorio RF che è solo analogico :-)

Texas Instruments e dispositivi analogici creano circuiti integrati per generatori di clock in grado di generare clock fino a diversi GHz che potrebbero soddisfare le tue esigenze.

Oops, ho dimenticato uno zero lì dentro.Correzione effettuata
Devi aggiornare le tue conoscenze.Gli FPGA odierni possono gestire prontamente I / O seriale a 12,5 Gb / se oltre, utilizzando la logica SERDES (serializer / deserializer) ad alta velocità dedicata che è incorporata direttamente nelle strutture I / O.
@DaveTweed OK, puoi indicarmi un esempio di un simile FPGA.
Vedi il mio commento sulla [risposta di Brian Drummond] (http://electronics.stackexchange.com/a/220577/11683).


Questa domanda e risposta è stata tradotta automaticamente dalla lingua inglese. Il contenuto originale è disponibile su stackexchange, che ringraziamo per la licenza cc by-sa 3.0 con cui è distribuito.
Loading...