Cambiar el reloj PL

0

Estoy diseñando mi proyecto en Vivado y tuve un WNS (Peor Slack negativo) de -2.67 ns (mi reloj PL era 200Mhz).

Tuve algunos problemas al ejecutar mi diseño, ya que los resultados fueron buenos a veces y malos en otras, por lo que pensé que podría estar relacionado con este WNS.

Volví a ejecutar mi diseño con una frecuencia PL de 100MHz (los resultados siguen siendo buenos y malos, pero eso no es relevante para esta pregunta) y mi WNS ahora es de 0.22, lo cual está bien.

Aunque noté algo extraño:

Al comparar el xparameters.h de mi primer y segundo diseño, la única diferencia que noté fue el XPAR_AXI_TIMER_0_CLOCK_FREQ_HZ . El resto fue exactamente el mismo. ¿Cambiar el reloj PL solo cambia eso de un diseño a otro? Eso me parece extraño.

También, usando mi temporizador con 100Mhz en mi segundo diseño, me tomó 52830 ciclos de reloj para ejecutar parte del código en SDK. Fui a xparameters.h y modifiqué mi XPAR_AXI_TIMER_0_CLOCK_FREQ_HZ a 200MHz, volví a ejecutar mi diseño y tomé los mismos ciclos de reloj para ejecutar esa parte del código. ¿Por qué es esto, no debería ser la mitad de los ciclos de reloj, ya que la frecuencia es doble?

    
pregunta João Pereira

1 respuesta

1

El archivo xparameters.h debe considerarse de solo lectura. Es generado automáticamente por Vivado y su propósito es informar al software del sistema de hardware subyacente. Cambiarlo no afecta al hardware en absoluto; la configuración de XPAR_AXI_TIMER_0_CLOCK_FREQ_HZ a 200MHz no cambia el hecho de que el hardware usó 100MHz. Simplemente miente sobre el hardware, y cualquier código de software que use ese valor tendrá un comportamiento incorrecto.

Además, el número de ciclos de reloj para realizar una operación no debe cambiar cuando modifica la frecuencia del reloj. Si su código puede hacer 1 adición por ciclo de reloj, hace 1 adición por ciclo de reloj si el reloj es de 100MHz o 200MHz. Por supuesto, a 200MHz se ejecutarán el doble de adiciones que el diseño de 100MHz en un segundo.

Finalmente, nunca debes ejecutar un diseño que no pase los tiempos, especialmente cuando falla a la mitad del período de reloj. Es cierto que el modelo de tiempos se basa en el peor de los casos (proceso incorrecto, temperatura más alta y voltaje más bajo), que es pesimista y que la ruta que falla no puede suceder nunca. Aún así, estás jugando con fuego y tu diseño se romperá en algún momento.

    
respondido por el Jonathan Drolet

Lea otras preguntas en las etiquetas