Restricciones de tiempo

Necesito muestrear datos de 24 bits en un DAC a 25 MHz. Los datos provienen de un diseño que implementé en FPGA. En cada ciclo de reloj, la FPGA genera datos de 24 bits, que el DAC debe muestrear en el siguiente ciclo. Adjunto una imagen del diseño que estoy haciendo. ¿Cómo puedo definir las restricciones de tiempo en mi diseño en FPGA? Puse restricciones de reloj para 100 MHz y 25 MHz en mi diseño en FPGA. Ahora el problema es que tanto el FPGA como los chips DAC se encuentran a una distancia desconocida en la placa de evaluación Virtex-4. Entonces, ¿cómo asegurarse de que se cumpla el tiempo allí, cuando se desconoce el retraso de enrutamiento a lo largo de la ruta? ¿Cuáles deberían ser las restricciones de retardo de entrada/salida?

ingrese la descripción de la imagen aquí

Es mucho mejor hacer que el diseño de la interfaz sea totalmente sincrónico, lo que significa sincronizar la salida lógica del usuario a 50 MHz y tratar el reloj como una línea de datos, de modo que todos los datos y el reloj cambien con el mismo tiempo conocido. De esa manera, la distancia al DAC es irrelevante, todos los datos y el reloj se retrasan por la misma cantidad. ¿Precisión de 25 MHz a 24 bits? ¡Buena suerte!
@Neil_UK ¿Cómo lo hacemos realmente sincrónico en la placa FPGA? ¿Se hace a través de la codificación HDL o se hace usando opciones específicas de la herramienta en vivado/quartus?
escriba HDL para controlar su reloj y controlar sus datos, trate el reloj como una línea de datos, de modo que todos los datos y el reloj cambien con el mismo tiempo conocido, de modo que un registro se actualice con datos y un bit adicional que es el reloj.
@Neil_UK Está bien. Y tenemos que restringir ese nuevo reloj como "reloj generado", ¿verdad?
Tome su reloj externo de velocidad 4x y utilícelo para cronometrar el registro de salida, asumo que va a usar E/S registrada. Todas las N+1 líneas de N datos y 1 data_clock reciben el mismo tratamiento. La señal del bit data_clock en el pestillo de E/S será 100M/4, esto también se puede usar como un CE para lo que sea que esté cambiando los datos al pestillo de E/S, listo para enviarse al DAC.
Ah, ya ... de esa manera, la posibilidad de violación de configuración y violación de retención es poco probable porque las líneas de datos y reloj tendrían un retraso de ruta similar.
Bueno, no diseñas las cosas para que las infracciones de tiempo sean poco probables, diseñas las cosas para que no ocurran infracciones de tiempo. No importa qué longitud de cable vaya al DAC, o cómo cambie la temperatura de la FPGA, el reloj y los datos llegan allí con una desviación mínima de línea a línea. Usted elige una fase de reloj de datos y una nueva fase de CE de salida de datos para colocar la transición de reloj de datos en el DAC en el centro de la ventana de datos válidos en el DAC . El uso de datos síncronos de origen significa que es lo mismo que la fase en los terminales de salida de la FPGA.

Respuestas (1)

A 25Mhz, los retrasos de la placa probablemente sean en gran medida irrelevantes (es el tipo de cosas que le preocupan con los relojes de memoria de varios cientos de MHz).

Lo primero que haría es asegurarme de que la salida de la lógica del usuario esté registrada por ese reloj de 25 MHz para garantizar que haya definido el tiempo en ese punto, luego defina las restricciones para los datos relativos al reloj de lanzamiento de 25 MHz estudiando el DAC hoja de datos para la configuración y los tiempos de espera, puede darse el lujo de ser un poco conservador aquí ya que todo funciona muy lentamente.

¡Mmm! sí. Creo que tienes un punto allí. Con un período de tiempo de 40 ns, es bastante lento.
Aproximadamente 9 pulgadas por ns, ¡eso es un tablero!