Cómo multiplicar el reloj del sistema base usando restricciones .xdc en Vivado

ingrese la descripción de la imagen aquíEsta pregunta puede ser ridículamente rudimentaria, pero he estado revisando las guías y videos disponibles de Xilinx tirándome de los pelos... mi problema es simplemente este: quiero usar el reloj base de 100Mhz en mi placa DDR nexys4 y multiplicarlo por 2. ¿Puede ¿Se puede lograr esto simplemente usando el archivo de restricción .xdc? He intentado usar la IP del asistente de reloj, pero tal vez simplemente no entiendo cómo crear una instancia del reloj con respecto a mi diseño de origen. He adjuntado algunas capturas pertinentes para explicar mejor mi problema. Cualquier ayuda en esto sería muy apreciada.

Respuestas (2)

No, no puedes.

El .xdc no controla el diseño, informa a la herramienta de la realidad física de la placa. Configurar el reloj a 100 MHz o 200 MHz no cambia el diseño de ninguna manera, la herramienta siempre verificará que su diseño funcione con la restricción que ingresó. Si olvida ingresar una restricción o ingresa una restricción incorrecta, se encuentra en una situación en la que la herramienta le dice que el diseño funciona cuando no es así (o viceversa).

Tienes que usar el asistente de fichaje. El reloj de entrada al asistente de sincronización proviene de un oscilador en la placa (u otro reloj generado por un asistente de sincronización), en su caso, el reloj del oscilador de 100 MHz. Establece el parámetro de los asistentes para las frecuencias de reloj de salida deseadas (reloj de entrada de tiempo 2x) y ¡voilà!

Hay varios diseños de referencia para su placa, debe mirarlos para ver cómo funcionan las funcionalidades principales.

gracias por la respuesta. De hecho, he hecho un poco más que simplemente alterar el .xdc a través de los comandos create_clock. Mi proceso fue: 1) Crear una IP personalizada de un controlador SVGA simple 2) Usar el diseño de bloques para vincular el asistente de sincronización con el bloque SVGA y conectar los pines externos a los pines apropiados a los que hice referencia en el .xdc 3) crear .v a partir de una plantilla de instanciación extrapolada desde RTL 4) actualizar la jerarquía y finalmente compilar. Todo pasa y dice que está conduciendo la carga a la velocidad correcta, pero en realidad no sucede nada.
¿Lo simulaste?
No, todavía no lo he hecho, aunque parece ser el próximo paso probable. Voy a escribir un banco de pruebas y ver lo que puedo. Gracias por su respuesta
Un bloque SVGA es bastante complejo, su problema podría estar en cualquier parte. Si no está seguro acerca de su reloj, aísle el problema. Por ejemplo, puede hacer un contador que active un LED cada 200e6 ciclos de reloj, o simplemente emita el reloj y mida su frecuencia en un osciloscopio. Si Xilinx informa que el reloj de trabajo es de 200 Mhz, significa que probablemente conectó la estructura de reloj correctamente.

No que yo sepa. Por lo general, lo que debe hacer es especificar la frecuencia del reloj de entrada en el archivo de restricciones, luego instanciar los componentes necesarios de gestión del reloj/PLL para sintetizar la nueva frecuencia del reloj. Las herramientas deben generar automáticamente la restricción para el reloj interno.