8 votos

Contador para reloj de 20 GHz

Estoy diseñando una aplicación de tiempo crítico donde necesito una resolución de tiempo del orden de 100 picosegundos.

Estoy considerando hacer un oscilador de anillo de 20 GHz y el reloj del oscilador de anillo.

¿Existe algún circuito integrado para ello o puedo implementarlo utilizando CoolRunner II CPLD u otra FPGA?

He mirado su hoja de datos, y la frecuencia máxima para el reloj del sistema es de unos 256 MHz y el reloj externo es de 145 MHz. Ficha técnica

¿Debo buscar un dispositivo más rápido o hay alguna otra forma de construirlo?

0 votos

Las clavijas de E/S rápidas de las últimas FPGAs pueden manejar alrededor de 1 GHz para la memoria DDR. La red de reloj interna de una FPGA está limitada a unos 900 MHz. Así que las FPGAs no pueden resolver tus problemas.

4 votos

¿Esto es para mediciones de tiempo de vuelo? Hay circuitos integrados dedicados a la medición del tiempo de vuelo con una resolución inferior a 100 segundos. Funcionan como un cronómetro. ¿Quizás podrías poner uno de estos en servicio? Echa un vistazo a ti.com/lit/ds/symlink/tdc7200.pdf .

4 votos

Normalmente, para este tipo de resolución de tiempo se utiliza un convertidor de tiempo a digital, no un contador. Básicamente, estos convertidores conectan un pequeño condensador con las señales de disparo y miden la tensión acumulada en él. Para obtener algunas ideas, mira cómo funcionan los osciloscopios de muestreo de tiempo equivalente (ETS).

12voto

Ruhan Puntos 39

Hace 15 años diseñé un digitalizador de dos parámetros (energía y tiempo) para medir el tiempo de vuelo. Para este sistema utilicé una fuente de corriente constante en una tapa mantenida en reset por un JFET. Al recibir el disparo (lógica rápida NIM, cambio de nivel mantenido en el régimen analógico (en contraposición a la conmutación saturada), el JFET se abrió, y pude lograr una resolución de 50ps mediante la digitalización de la rampa lineal, y la interpolación de un ADC de 62,5MSPS en una FPGA . El circuito era bastante sencillo, y se ajustaba perfectamente a las simulaciones.

6voto

user44635 Puntos 4308

Hace tiempo, como experimento mental, "diseñé" una FPGA de captura de tiempo.

Tenía un oscilador de anillo, convencional aparte de que tenía 41 inversores. El periodo era, por tanto, mucho más bajo que el retardo de cualquier puerta. El proceso de la FPGA tenía retrasos de puertas individuales de hasta 10 pS cuando el enrutamiento era local y el abanico era bajo, pero sólo podía manejar relojes de sistema del orden de 100s de MHz, debido a los retrasos de multiplexación, enrutamiento y carga entre bloques.

El proceso de captura de tiempo utilizó entonces 41 D-latches, cada uno de los cuales capturaba la transición de entrada, pero, por supuesto, se sincronizaba en diferentes fases del ciclo del contador de anillos. Las salidas de los D-latches podían interpretarse como un "código de termómetro", interpolando la transición de entrada con una precisión de subciclo, con una resolución de decenas de pS. Otros 41 D-latches capturaban un reloj de referencia.

Esta estructura presenta dos dificultades principales. La primera es conseguir que las herramientas de síntesis dispongan el contador de anillos y las líneas que van a los D-latches a alta velocidad. Esta parte probablemente sea mejor si se realiza una colocación manual directa. Es posible que se necesite un tipo específico de FPGA de alta velocidad, tal vez uno sin multiplicadores ni núcleos de procesador. La segunda es el manejo sin carreras del solapamiento entre el código del termómetro, y un contador convencional sincronizado por la referencia de baja frecuencia, pero se puede hacer, teniendo en cuenta los problemas de metaestabilidad.

No lo continué porque encontré una forma mejor de resolver el problema, pero fue divertido.

0 votos

En la actualidad, estas estructuras están integradas en las FPGAs, tanto en los bloques de gestión del reloj (PLLs y DCMs) como en las estructuras de E/S de alta velocidad.

0 votos

Aunque esas estructuras estarán integradas en los DCM, no estoy seguro de que se pueda llegar a ellas para cronometrar los pulsos que llegan aleatoriamente. Sí que se podría utilizar el DPLL para los pulsos que llegan regularmente. Sin embargo, los calzos de sincronización de E/S pueden ser configurables. Es posible que necesites una configuración manual, ya que el optimizador del temporizador de enrutamiento PAR seguramente no entenderá lo que estás tratando de hacer, y lo "mejorará" por ti.

1 votos

Lo único que decía es que ya no es necesario utilizar LUTs individuales para crear una línea de retardo programable. Y las líneas de retardo en los IOBs son definitivamente configurables -- con algo de esfuerzo, puedes implementar la lógica para auto-ecualizar los retardos en un bus de datos de memoria, por ejemplo.

6voto

Mario Puntos 766

Como alguien ya ha señalado, hay circuitos integrados dedicados a ese fin.

Si quieres hacerlo por tu cuenta una posible aproximación sería utilizar las llamadas líneas de retardo Vernier.

Tienes dos líneas de retardo (cadenas de buffers) donde una cadena utiliza buffers más rápidos que la otra. La resolución de tu medición es igual a la diferencia de los retardos de los elementos de la cadena rápida y la "lenta".

Para medir el retardo se envía el pulso de inicio a través de la cadena lenta y el de parada a través de la cadena rápida. El pulso de parada viaja más rápido y finalmente alcanzará al pulso de inicio. El número de buffers necesarios será una medida del retardo.

Mi interés se centra en el diseño de circuitos integrados, por lo que no estoy seguro de si esto podría hacerse con una FPGA. Sin embargo, la literatura sugiere que es posible.

5voto

Brian Drummond Puntos 27798

El tejido de la FPGA, como se indica en otras respuestas, no puede ser sincronizado a la velocidad que necesitas.

Sin embargo, algunas FPGAs también tienen interfaces serie de alta velocidad en el rango de 5Gb/s a 10Gb/s, destinadas a SATA, PCIe y otros protocolos de comunicación de alta velocidad.

Probablemente haya formas de aprovecharlas para realizar mediciones de tiempo de alta resolución (100ps pero quizás no 50ps).

Lamento no poder ser más específico sobre los detalles.

3 votos

Los detalles son aquí para Xilinx (capítulo 3 en particular). Los dispositivos Virtex-7 más rápidos soportan velocidades de hasta 28 Gb/s. Altera tiene guías similares, y algunos de sus dispositivos Stratix V y Stratix 10 también alcanzan los 28 Gb/s.

0 votos

Gracias Dave, un enlace muy útil. Los bloques SERDES (a partir de la página 143) son la característica que tenía en mente.

4voto

FakeMoustache Puntos 6645

Un reloj de 2 GHz tiene un periodo de 500 ps. Así que si necesitas una resolución de 100 ps, yo diría que necesitas al menos 10 GHz.

A partir de 2GHz está fuera de la liga de cualquier FPGA, que yo sepa. Ahora estás en el territorio de la RF que es sólo analógico :-)

Texas Instruments y Dispositivos analógicos fabrican circuitos integrados generadores de reloj que pueden generar relojes de hasta varios GHz, lo que podría ajustarse a sus necesidades.

0 votos

Uy, se me olvidó un cero ahí. Corrección hecha

0 votos

Necesitas actualizar tus conocimientos. Las FPGAs de hoy en día pueden manejar fácilmente la E/S en serie a 12,5 Gb/s y más, utilizando una lógica dedicada de serialización/deserialización de alta velocidad (SERDES) que está integrada directamente en las estructuras de E/S.

1 votos

@DaveTweed De acuerdo, ¿puedes indicarme un ejemplo de tal FPGA?

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X